700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 电脑网站如何用支付宝收款(php)

电脑网站如何用支付宝收款(php)

时间:2021-08-23 17:08:39

相关推荐

电脑网站如何用支付宝收款(php)

、你需要以公司的名义申请一个支付宝账号.没有公司的人请先注册一个公司.

、公司需要通过支付宝的实名认证才能开通收款功能.

(注:我个人建议,开公司用一个新的手机号,专门用于公司业务,因为后面各种实名认证开通账号,都需要手机号.比如支付宝账号就需要绑定手机号,而你在注册公司后,手机号就会被卖给财务公司,到时会接到无数财务公司的电话,就是问你要不要记账的.)

、开通收款功能了再往下看.

、虽然支付宝的官方文档好像说的很清楚,但是实际操作时,总会有一些小细节给人制造麻烦,我写这篇博文的目的就是把我遇到的细节上的麻烦给大家分享一下.

、https://docs./270/图1是支付宝关于电脑网页支付的文档页,大家可以先看看,看的差不多了,想具体操作了,再来看我的这篇文章.

,现在开始说说具体操作.

、需要先设置开放平台密钥.登录支付宝后,最上一行选“我的商家服务”,然后左侧栏里第二个方块里点“查看PID|KEY”,图2

进入后,左侧选“开放平台密钥”,顶部选“密钥管理”,先改底部“授权回调地址”(不知道改什么的话先空着,下文有述),再点“查看应用共钥”,图3

如下图,点修改.图4

如下图,下载密钥生成器.图5

密钥生成器运行如下(运行方法查看下载文件里的说明)图6

点击复制并粘贴到图5的框里,保存.

点击图6的“打开文件位置”,能看见如下图三个文件.pkcs8是用于java的,另外的是用于php或.NET的.只要private,不要public.图7

用文本编辑软件打开相应pem文件,图8

不要第一行和最后一行,取中间.一会需要复制到代码中.

注意:在这,我遇到了最大的坑,私钥应该是一连串字符串,没有换行,但是用文本编辑软件打开后,往往就在其中加入了换行,如果直接复制到代码里,则必然在调取支付宝付款页面时出错.必须手动删除换行,使其成为一个连续的字符串才行.

、先下载一个DEMO(https://docs./270/106291/)根据你的网页语言选择相应的DEMO,我用PHP,这里就只用PHP举例.(注:官方文档既有DEMO也有SDK,用DEMO就好,改改参数就能用了).解压后得到如下图的文件.图9

所有这些文件,原封不动的上传到你的服务器网站文件夹里.将notify_url.php的网址写入图3的“授权回调地址”.而我们需要修改的只有return_url.php而已.

notify_url.php是支付结果的异步通知地址,return_url.php是同步跳转地址.在支付成功后,支付宝服务器会先异步通知notify_url.php,并从该页面得到“success”七个字符后才会再往return_url.php以GET方式发送支付成功的相关信息.而网站要根据支付结果做一些动作,也是从return_url.php页面开始.

、下面是具体操作步骤.

、在某个页面建立一个链接,指向一个空的php页面,假定是zhifu.php.链接中用GET形式明文传递参数.

、先看相关官方文档https://docs./270/alipay.trade.page.pay,将相应语言的代码复制到zhifu.php里,这里我以php举例

require_once("AopSdk.php");//构造参数 $aop = new AopClient (); $aop->gatewayUrl = '/gateway.do'; $aop->appId = '请填写APPID'; //换成图3里的APPID$aop->rsaPrivateKey = '请填写商户私钥'; //换成图8里的私钥,注意去掉换行$aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset= 'utf-8'; $aop->format='json'; $request = new AlipayTradePagePayRequest (); $request->setReturnUrl('请填写您的页面同步跳转地址'); //写return_url.php的互联网绝对地址$request->setNotifyUrl('请填写您的异步通知地址'); //写notify_url.php的互联网绝对地址$request->setBizContent('{"product_code":"FAST_INSTANT_TRADE_PAY","out_trade_no":"0320010101001", "subject":"Iphone6 16G","total_amount":"88.88","body":"Iphone6 16G"}');//这里有5个参数//第一个是固定的,不要改//第二个是商家的订单号,每笔付款应该有不同的订单号,相同订单号,支付宝会认为已经付过款了,建议用时间来作为订单号,php里,时间可以精确到微秒.函数是date("YmdHisu").//第三个是商品名称,会显示在支付页面中.(是给人看的)//第四个是价格,需要买家付多少钱,就写多少.//第五个是商品内容,不会显示在支付页面,大概会显示在消费记录里.//请求 $result = $aop->pageExecute ($request);//输出 echo $result;

以上内容是我在官方文档上做了修改以后的内容,可以直接复制到代码中使用,记得做参数修改.

关于notify_url.php,不是不能修改,但没必要,官方不建议修改,只改个文件名也没什么意思,所以就不动了.

关于return_url.php,是必须修改的,因为需要根据支付成功的返回参数来进行一些网站上的逻辑操作.

关于

$request->setBizContent('{"product_code":"FAST_INSTANT_TRADE_PAY","out_trade_no":"0320010101001", "subject":"Iphone6 16G","total_amount":"88.88","body":"Iphone6 16G"}');

这段代码,其中的后4个参数都是变化的,所以应该用参数代替.因为参数整体是个字符串,可以用一个变量先连接好,再带入函数.代码如下:

先给出调用此页面的地址:

zhifu.php?shopingname='商品名称'&money=0.01&shopingbody='商品内容'

下面针对该地址修改代码

$zhifu='{"product_code":"FAST_INSTANT_TRADE_PAY","out_trade_no":"'.date("YmdHisu").'", "subject":"'.$_GET["shopingname"].'","total_amount":"'.$_GET["money"].'","body":"'.$_GET["shopingbody"].'"}';$request->setBizContent($zhifu);

将此代码覆盖上面的代码即可.

十一、支付成功后,网站肯定还得做点什么,这时就需要修改return_url.php了.先看看跳转页面的参数都有什么:https://docs./270/alipay.trade.page.pay里有个跳转地址的参数,我把它断开,

/GkSL?total_amount=0.10&timestamp=-11-02+18%3A34%3A19&sign=G3WI0czviMAOzS5t0fYaDgK32sGpjkkXYVFTpYMtgX8JaXLiGiUTO%2F2IHogcCFT96jBCLZ6IsNzd%2BmxkB%2FRuwG%2F7naQk1qReuORMkrB5cpBf9U40bIUoCmSNqtANsTE2UPV7GKegYG2RqoCRScTmeFAFHj5L7zsM%2BLuYb9mqN3g%3D&trade_no=110221001004330228438026&sign_type=RSA2&auth_app_id=073000007292&charset=UTF-8&seller_id=2088411964605312&method=alipay.trade.page.pay.return&app_id=073000007292&out_trade_no=0g320g010101001&version=1.0

这段地址里参数能用的只有total_amount和out_trade_no,如果不同的商品价格不同,可以只是用$_GET["total_amount"]来判断是哪种商品.如果不同商品有相同价格,就需要先给每种商品一个唯一标识,将此标识、数量、买家标识等信息加入zhifu.php的out_trade_no参数中.然后根据$_GET["out_trade_no"]的相应信息来区分商品.(字符串的各种操作,分割,判断等)

这里有个问题,就是如果反复载入该地址,可能会造成网站重复执行购买成功的逻辑语句(付一份钱,买很多次商品).因此须要加入一个判断,即只要付款成功并执行相应逻辑语句的同时,就将此次的out_trade_no记入买家数据库里.而执行付款成功操作前,先判断此次out_trade_no是否在买家数据库里已存在,若存在,则说明已经针对此次支付成功执行过一次操作语句了,不应再执行.若不同,则证明此次逻辑操作是支付成功后第一次执行,应该执行.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。