雷雪松带你学习支付宝支付

PHP

目前,在线支付因为方便快捷受到越来越多的企业和个人青睐,它可以真正做到足不出户。今天PHP程序员雷雪松带大家系统学习支付宝支付相关知识。支付宝官方也提供了PHP的demo,需要注意的是PHP版本必须是5.5以上,还有详细的可选参数,可以去查阅支付宝官方文档获取更多信息。

支付宝支付-Alipay
一、当面付
1、商户扫码-B2C,简单的讲就是用户打开APP展示付款码,商户用扫码设备扫描后提交支付。
http请求交易支付实例(未使用url编码,正式使用时请用URL编码):

1
2
3
4
5
6
7
8
9
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.pay&app_id=2284&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&notify_url=http://api.test.alipay.net/atinterface/receive_notify.htm&biz_content=
{
"out_trade_no":"20150320010101001",
"scene":"bar_code,wave_code",
"auth_code":"28763443825664394",
"subject":"Iphone6 16G",
"seller_id":"2088102146225135",
"total_amount":"88.88",
}

公共参数解读:
app_id:支付宝分配给开发者的应用ID
method:接口名称或者地址
sign_type:商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
sign:商户请求参数的签名串
timestamp:发送请求的时间,格式”yyyy-MM-dd HH:mm:ss”
version:调用的接口版本,固定为:1.0
notify_url:支付宝服务器主动通知商户服务器里指定的页面http/https路径。
biz_content:请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递

请求参数解读:
out_trade_no:商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
scene:支付场景 ,条码支付:bar_code ,声波支付:wave_code,如果有两个:bar_code,wave_code
auth_code:支付授权码(也就是用户的付款码)
subject:订单标题(商品名称)
total_amount:订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 如果同时传入【可打折金额】和【不可打折金额】,该参数可以不用传入;
如果同时传入了【可打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】

2、用户扫码-C2B,简单的讲就是,商户生成支付二维码,用户使用支付宝钱包扫描,核对金额支付。
http请求交易预下单实例(未使用url编码,正式使用时请用URL编码):

1
2
3
4
5
6
7
8
9
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.precreate&app_id=1781&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&notify_url=http://api.test.alipay.net/atinterface/receive_notify.htm&biz_content=
{
"out_trade_no":"20150320010101001",
"total_amount":88.88,
"discountable_amount":8.88,
"undiscountable_amount":80,
"buyer_logon_id":"15901825620",
"subject":"Iphone6 16G",
}

公共参数解读:
app_id:支付宝分配给开发者的应用ID
method:接口名称或者地址
sign_type:商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
sign:商户请求参数的签名串
timestamp:发送请求的时间,格式”yyyy-MM-dd HH:mm:ss”
version:调用的接口版本,固定为:1.0
notify_url:支付宝服务器主动通知商户服务器里指定的页面http/https路径。
biz_content:请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递

请求参数解读:
out_trade_no:商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
scene:支付场景 ,条码支付:bar_code ,声波支付:wave_code,如果有两个:bar_code,wave_code
auth_code:支付授权码(也就是用户的付款码)
subject:订单标题(商品名称)
total_amount:订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 如果同时传入【可打折金额】和【不可打折金额】,该参数可以不用传入;
如果同时传入了【可打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】
discountable_amount:可打折金额. 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果该值未传入,但传入了【订单总金额】,【不可打折金额】则该值默认为【订单总金额】-【不可打折金额】
undiscountable_amount:不可打折金额. 不参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
subject:买家支付宝账号

二、支付宝收款
“支付宝收款”产品是面向服务商提供的一种支付产品。不需要任何技术开发,这里就不详细介绍了。
三、APP支付
商家APP支付时调用支付宝提供的SDK调用支付宝客户端内的支付模块,商家APP会跳转到支付宝中完成支付回到商家APP内,如果用户未安装支付宝则调起支付宝网页支付收银台。目前支持iOS(苹果)、Android(安卓)两种系统,订单信息在服务端生成,直接在客户端调用。
四、手机网站支付
在网页中调用支付宝提供的网页支付接口调起支付宝客户端内的支付模块,网页会跳转到支付宝中完成支付,支付完后跳回到商家网页内。若无法唤起支付宝客户端,则在一定的时间后会自动进入网页支付。
HTTP请求wap网页支付实例(未使用url编码,正式使用时请用URL编码):

1
2
3
4
5
6
7
https://openapi.alipay.com/gateway.do?timestamp=2013-01-01 08:08:08&method=alipay.trade.wap.pay&app_id=1990&sign_type=RSA2&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&version=1.0&notify_url=http://api.test.alipay.net/atinterface/receive_notify.htm&return_url=https://m.alipay.com/Gk8NF23&biz_content=
{
"subject":"大乐透",
"out_trade_no":"70501111111S001111119",
"total_amount":9.00,
"product_code":"QUICK_WAP_PAY"
}

公共参数解读:
app_id:支付宝分配给开发者的应用ID
method:接口名称或者地址
sign_type:商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
sign:商户请求参数的签名串
timestamp:发送请求的时间,格式”yyyy-MM-dd HH:mm:ss”
version:调用的接口版本,固定为:1.0
return_url:商家的返回页面
notify_url:支付宝服务器主动通知商户服务器里指定的页面http/https路径。
biz_content:请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递

请求参数解读:
out_trade_no:商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
product_code:销售产品码,商家和支付宝签约的产品码
subject:订单标题(商品名称)
total_amount:订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 如果同时传入【可打折金额】和【不可打折金额】,该参数可以不用传入;
如果同时传入了【可打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】
discountable_amount:可打折金额. 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果该值未传入,但传入了【订单总金额】,【不可打折金额】则该值默认为【订单总金额】-【不可打折金额】
undiscountable_amount:不可打折金额. 不参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
subject:买家支付宝账号

来源:雷雪松带你学习支付宝支付

3 评论 “雷雪松带你学习支付宝支付

    http://www.essayrush.cn/ 评论:
    2017年5月11日 下午6:45

    支持楼主,赞赞

    张兵 评论:
    2017年8月15日 上午11:33

    有没有实际例子

    哼唧唧 评论:
    2018年6月1日 下午4:29

    啊啊啊

发表评论

电子邮件地址不会被公开。 必填项已用*标注