[接口]支付宝接口开发集成支付环境开发总结
2015-03-06 08:36
609 查看
关于支付宝的接口集成气死是很简单,目前大概有3种类型,即时到帐、双功能、担保交易,只需要集成一次担保交易,其他的比如即时到帐集成很容易,担保交易的状态有几种,比如:是否支付成功,卖家是否发货,买家确认收获等。而即时到帐只有一种,就是是否已付款!最多还有个退款的功能。一般都没用到。
通过之前做项目:配资平台(www.ya-jing.cn),有个预付费的功能,用到了支付宝的双功能收款,其实就是提供两种付款方式,即时到帐和担保交易。一般买家谨慎会选择担保。
下面说下具体的集成过程,第一:下载对应的集成接口包,比如即时到帐就下载即时到帐,担保下载担保,非常不建议将即时到帐修改成担保或者反之。案例中我下载的 双功能接口文件,utf8-php接口。
下载来的文件都大同小异,即时到帐和担保的文件也相差不大,反正可以肯定的说,只要配置一次担保支付宝接口,就能配置即时到帐。
我们需要修改的文件有如下:alipay.config.php[配置文件,只是用于修改配置接口开发者id和key]
alipayapi.php[主调文件,将需要发送的post数据交给该文件,然后负责跳转到支付页面]
index.php[demo演示页面,可以不做修改,但是其中传递的参数名陈需要看懂]
notify_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过post方式接受。
return_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过GET方式。
具体过程:
第一步,修改配置信息:
第二:拼post数据,一般只需要修改请求参数
第三:数据构造完成后就可以在页面上付款,测试能不能正确的打开支付页面。如果能打开,这时候就可以进行付款了,但是买家付款的状态我们还无法获知,比如有没有成功付款,卖家是否已经发货等。那么接下来开始做返回状态的业务逻辑处理。
打开return_url.php文件,根据提示修改,做对因的处理。
notify_url.php也是一样,根据状态来编写对应的代码!notify_url.php文件中的状态要多一些。
由于我基本上没有用到后续的发货处理,所以在该状态下未做处理,如果您的网站是购物网站秒就需要做对应的处理,比如更新状态值为已发货,或者未付款、已确认等。方便看到交易流程。同时在已付款的订单中会产生支付宝的订单id,可以同时记录在自己的订单中。
接下来就是接口的调试,每次可以支付1毛钱来进行测试。
通过之前做项目:配资平台(www.ya-jing.cn),有个预付费的功能,用到了支付宝的双功能收款,其实就是提供两种付款方式,即时到帐和担保交易。一般买家谨慎会选择担保。
下面说下具体的集成过程,第一:下载对应的集成接口包,比如即时到帐就下载即时到帐,担保下载担保,非常不建议将即时到帐修改成担保或者反之。案例中我下载的 双功能接口文件,utf8-php接口。
下载来的文件都大同小异,即时到帐和担保的文件也相差不大,反正可以肯定的说,只要配置一次担保支付宝接口,就能配置即时到帐。
我们需要修改的文件有如下:alipay.config.php[配置文件,只是用于修改配置接口开发者id和key]
alipayapi.php[主调文件,将需要发送的post数据交给该文件,然后负责跳转到支付页面]
index.php[demo演示页面,可以不做修改,但是其中传递的参数名陈需要看懂]
notify_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过post方式接受。
return_url.php 返回数据页面,在其中将返回交易的状态,更具状态我们可以更改数据库订单信息,该文件是通过GET方式。
具体过程:
第一步,修改配置信息:
1 | $alipay_config [ 'partner' ] = 'xxx8511073xxxxxxxx' ; |
2 |
3 | //安全检验码,以数字和字母组成的32位字符 |
4 | $alipay_config [ 'key' ] = 'xxxxxxxxnow07oajbflskxxxxxxxxxx' ; |
01 | /**************************请求参数**************************/ |
02 | //支付类型 |
03 | $payment_type = "1" ; |
04 | //必填,不能修改 |
05 | //服务器异步通知页面路径 |
06 | $notify_url = "http://你的域名/alipay/notify_url.php" ; |
07 | //需http://格式的完整路径,不能加?id=123这类自定义参数 |
08 |
09 | //页面跳转同步通知页面路径 |
10 | $return_url = "http://你的域名/alipay/return_url.php" ; |
11 | //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/ |
12 |
13 | //卖家支付宝帐户 |
14 | $seller_email =$_POST[ 'WIDseller_email' ]; //demo[index.php]传过来的 |
15 | //必填 |
16 |
17 | //商户订单号 |
18 | $out_trade_no =$_POST[ 'WIDout_trade_no' ]; //传过来的 |
19 | //商户网站订单系统中唯一订单号,必填 |
20 |
21 | //订单名称 |
22 | $subject =$_POST[ 'WIDsubject' ]; //同上 |
23 | //必填 |
24 |
25 | //付款金额 |
26 | $price =$_POST[ 'WIDprice' ]; //传过来的,是你的表单中填写的值 |
27 | //必填 |
28 |
29 | //商品数量 |
30 | $quantity = "1" ; |
31 | //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品 |
32 | //物流费用 |
33 | $logistics_fee = "0.00" ; |
34 | //必填,即运费 |
35 | //物流类型 |
36 | $logistics_type = "EXPRESS" ; |
37 | //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS) |
38 | //物流支付方式 |
39 | $logistics_payment = "SELLER_PAY" ; |
40 | //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费) |
41 | //订单描述 |
42 |
43 | $body =$_POST[ 'WIDbody' ]; |
44 | //商品展示地址 |
45 | $show_url =$_POST[ 'WIDshow_url' ]; |
46 | //需以http://开头的完整路径,如:http://www.xxx.com/myorder.html |
47 |
48 | //收货人姓名 |
49 | $receive_name = '萤火' ; |
50 | //如:张三 |
51 |
52 | //收货人地址 |
53 | $receive_address =$_POST[ 'WIDreceive_address' ]; |
54 | //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号 |
55 |
56 | //收货人邮编 |
57 | $receive_zip =$_POST[ 'WIDreceive_zip' ]; |
58 | //如:123456 |
59 |
60 | //收货人电话号码 |
61 | $receive_phone =$_POST[ 'WIDreceive_phone' ]; |
62 | //如:0571-88158090 |
63 |
64 | //收货人手机号码 |
65 | $receive_mobile =$_POST[ 'WIDreceive_mobile' ]; |
66 | //如:13312341234 |
打开return_url.php文件,根据提示修改,做对因的处理。
01 | //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— |
02 | //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表 |
03 |
04 | //商户订单号 $out_trade_no =$_GET['out_trade_no']; |
05 |
06 | //支付宝交易号 $trade_no =$_GET['trade_no']; |
07 |
08 | //交易状态 |
09 | $trade_status = $_GET [ 'trade_status' ]; |
10 |
11 |
12 | if ( $_GET [ 'trade_status' ] == 'WAIT_SELLER_SEND_GOODS' ) { //状态为成功 |
13 | //处理自己网站的业务逻辑 |
14 | if (! $order [ 'status' ]){ //判断本地数据库中的订单是否已经处理 |
15 | db_update( "stx_recharge" , array ( "status" =>1), array ( "oid" => $_GET |
16 |
17 | [ 'out_trade_no' ])); //如果没处理就将状态改成已经处理。 |
18 | //金钱的增加 |
19 | $zd = db_line( "stx_terminal" , array ( "id" => $order [ 'ztid' ])); |
20 | db_update( "stx_terminal" , array ( "money" => $zd [ 'money' ]+ $order |
21 |
22 | [ 'money' ]), array ( "id" => $order [ 'ztid' ])); //增加余额到该用户的账户上。 |
23 | } |
24 | } |
25 | else if ( $_GET [ 'trade_status' ] == 'TRADE_FINISHED' ) { |
26 | //判断该笔订单是否在商户网站中已经做过处理 |
27 | //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统 |
28 |
29 | 中查到该笔订单的详细,并执行商户的业务程序 |
30 | //如果有做过处理,不执行商户的业务程序 |
31 | } |
32 | else { |
33 | echo "trade_status=" . $_GET [ 'trade_status' ]; |
34 | } |
35 |
36 | echo "验证成功<br />" ; |
37 | echo "trade_no=" . $trade_no ; |
01 | //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— |
02 |
03 | //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 |
04 |
05 | //商户订单号 |
06 |
07 | $out_trade_no = $_POST [ 'out_trade_no' ]; |
08 |
09 | //支付宝交易号 |
10 |
11 | $trade_no = $_POST [ 'trade_no' ]; |
12 |
13 | //交易状态 |
14 | $trade_status = $_POST [ 'trade_status' ]; |
15 |
16 |
17 | if ( $_POST [ 'trade_status' ] == 'WAIT_BUYER_PAY' ) { |
18 | //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款 |
19 |
20 | //判断该笔订单是否在商户网站中已经做过处理 |
21 | //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 |
22 | //如果有做过处理,不执行商户的业务程序 |
23 |
24 | echo "success" ; //请不要修改或删除 |
25 |
26 | //调试用,写文本函数记录程序运行情况是否正常 |
27 | //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); |
28 | } |
29 | else if ( $_POST [ 'trade_status' ] == 'WAIT_SELLER_SEND_GOODS' ) { |
30 | //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货 |
31 |
32 | if (! $order [ 'status' ]){ |
33 | db_update( "stx_recharge" , array ( "status" =>1), array ( "oid" => $_POST [ 'out_trade_no' ])); |
34 | //金钱的增加 |
35 | $zd = db_line( "stx_terminal" , array ( "id" => $order [ 'ztid' ])); |
36 | db_update( "stx_terminal" , array ( "money" => $zd [ 'money' ]+ $order [ 'money' ]), array ( "id" => $order [ 'ztid' ])); |
37 | } |
38 |
39 | echo "success" ; //请不要修改或删除 |
40 |
41 | //调试用,写文本函数记录程序运行情况是否正常 |
42 | //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); |
43 | } |
44 | else if ( $_POST [ 'trade_status' ] == 'WAIT_BUYER_CONFIRM_GOODS' ) { |
45 | //该判断表示卖家已经发了货,但买家还没有做确认收货的操作 |
46 |
47 | if (! $order [ 'status' ]){ |
48 | db_update( "stx_recharge" , array ( "status" =>1), array ( "oid" => $_POST [ 'out_trade_no' ])); |
49 | //金钱的增加 |
50 | $zd = db_line( "stx_terminal" , array ( "id" => $order [ 'ztid' ])); |
51 | db_update( "stx_terminal" , array ( "money" => $zd [ 'money' ]+ $order [ 'money' ]), array ( "id" => $order [ 'ztid' ])); |
52 | } |
53 |
54 | echo "success" ; //请不要修改或删除 |
55 |
56 | //调试用,写文本函数记录程序运行情况是否正常 |
57 | //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); |
58 | } |
59 | else if ( $_POST [ 'trade_status' ] == 'TRADE_FINISHED' ) { |
60 | //该判断表示买家已经确认收货,这笔交易完成 |
61 |
62 | //判断该笔订单是否在商户网站中已经做过处理 |
63 | //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 |
64 | //如果有做过处理,不执行商户的业务程序 |
65 |
66 | echo "success" ; //请不要修改或删除 |
67 |
68 | //调试用,写文本函数记录程序运行情况是否正常 |
69 | //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); |
70 | } |
接下来就是接口的调试,每次可以支付1毛钱来进行测试。
相关文章推荐
- 支付宝接口开发集成支付环境小结
- 支付宝接口开发集成支付环境小结
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- Java web集成支付宝电脑支付接口(沙箱环境)
- 支付宝支付接口开发总结
- Java web集成支付宝电脑支付接口(沙箱环境)
- 支付宝支付集成总结
- 支付宝接口开发总结(php)