支付宝支付开发——当面付条码支付和扫码支付实例

2025-05-29 0 59

本文介绍支付宝当面付下属的条码支付、扫码支付、订单查询、退款申请的集成开发过程。

本文分为以下五个部分:

  • 条码支付和扫码支付介绍
  • 申请应用
  • 密钥生成及配置
  • api及sdk集成
  • 条码支付、扫码支付、订单查询、退款申请

一、条码支付及二维码支付介绍

1. 条码支付
条码支付是支付宝给到线下传统行业的一种收款方式。商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款。用户仅需出示付款码,所有收款操作由商家端完成。其使用场景如下:支付宝支付开发——当面付条码支付和扫码支付实例
业务流程:支付宝支付开发——当面付条码支付和扫码支付实例

使用步骤:

  1. 用户登陆支付宝钱包,点击首页“付款”,进入付款码界面;
  2. 收银员在商家收银系统操作生成订单,用户确认支付金额;
  3. 用户出示钱包的“付款码”,收银员用扫码设备来扫描用户手机上的条码/二维码后,商家收银系统提交支付;
  4. 付款成功后商家收银系统会拿到支付成功或者失败的结果。

2. 扫码支付

扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。

其使用场景如下:支付宝支付开发——当面付条码支付和扫码支付实例
业务流程:支付宝支付开发——当面付条码支付和扫码支付实例

使用步骤:

  1. 用户登陆支付宝钱包,点击首页“付款-扫码付”,进入扫一扫界面;
  2. 收银员在商家收银系统操作生成支付宝订单,用户确认支付金额,并生成二维码;
  3. 用户使用钱包的“扫码付”,扫收银员提供的二维码,确认支付;
  4. 用户付款后商家收银系统会拿到支付成功或者失败的结果。

二、接口申请

企业在申请企业支付宝之后,进行功能申请并签约,然后在蚂蚁金服开放平台中申请应用如下(详细过程就略了)支付宝支付开发——当面付条码支付和扫码支付实例
然后在功能列表中,申请当面付这一功能,申请成功后如下。支付宝支付开发——当面付条码支付和扫码支付实例
这样,我们就有了当面付的权限了。

三、密钥生成

支付宝当面付的接口中,使用了非对称加密算法,商户自己的公钥和私钥需要自己使用openssl手动生成。对这些概念比较陌生的话,请先自行先了解一下密码学的相关知识。openssl也可以从方倍工作室博客中找到。

下载支付宝官方提供的密钥生成工具openssl,然后执行以下命令就可以生成公钥和私钥。支付宝支付开发——当面付条码支付和扫码支付实例
其中

?

1
genrsa -out rsa_private_key.pem 1024

是用于生成rsa私钥,执行后在程序目录中生成一个文件rsa_private_key.pem,其内容如下

—–begin rsa private key—–
miicxaibaakbgqcyffrongd8q/1krh1cpssri360dxlhi7zxdpjgye5hkdwf7u9b
3zzu9erzpm90xe7gzrksxigourh4uqhmvrbto3e+liyoynpd6as3q427kctit7aj
hhicz6gwhegtuivlqiuwlsauqcbi6do4gezrlvadzus0wcjijoxw02rxsqidaqab
aogaxbjyyvac4zj3jph8yostlr5n13bwdatdw/glwwt+0rnnei90tqhrnvy7lnvn
jgrprts182tvgjopxmwsnebakhiugidpq99gle4lgd5lkwtzkd84bmvhatfnsccz
cevfqkg3tzd4t3fq93frilsnnzplhiw53jirstckr3rx9oecqqdwmshyc91hevmq
qvnasbgeickwxhodqjdm2lhkbx4mrb9jezfds6mxwdajf2/qw+tgtpn3ybccdw/h
nghhqtstakea1vtyjodawwode8x4fu0ipq9+e19mcvoajjlbh46mropwgodj3raq
t/thakeaydjabstaiy2j18hitiyh+1bgjqjbakgrjxh5ofxsg7uxibcofyjifi34
g7ecfxxvcqxaaw4u4n2uy0c0txkl5t+lxzeqg8d/gfbjj0qutvnzgdofdoecqbhy
ozncfk6xe8pguxquht4jg/iu4djwjt+kuzbsjerhtcvyly4jpzfuohrkom4fj6/4
uuqwrjmabfgzrx4+sfkcqcni8rcz6yprh5keoepo3uazalnenp8dkkhgqchawdk7
7nzlj727nt23sthfx6nkhzyrujgq5vx1lkl0wkukbxm=
—–end rsa private key—–

命令

?

1
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

是用于生成rsa公钥,执行后在程序目录中生成一个文件rsa_public_key.pem,其内容如下

—–begin public key—–
migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqcyffrongd8q/1krh1cpssri360
dxlhi7zxdpjgye5hkdwf7u9b3zzu9erzpm90xe7gzrksxigourh4uqhmvrbto3e+
liyoynpd6as3q427kctit7ajhhicz6gwhegtuivlqiuwlsauqcbi6do4gezrlvad
zus0wcjijoxw02rxsqidaqab
—–end public key—–

生成的这个rsa公钥,需要填写到应用中去,填写地址如下所示。私钥不需要填到配置中,到时候配置到代码中。支付宝支付开发——当面付条码支付和扫码支付实例
特别注意,密钥要去掉注释部分,且转换成一行字符,否则回车换行也成为密钥的一部分,将导致无法正常加解密。支付宝支付开发——当面付条码支付和扫码支付实例
同时,可以点击 “查看支付宝公钥”,将支付宝的公钥复制保存下来,后面的程序中将需要用到。支付宝支付开发——当面付条码支付和扫码支付实例

四、密钥生成api与密钥配置
公共参数

请求地址:

环境 https请求地址
正式环境 https://openapi.alipay.com/gateway.do

公共请求参数:

参数 类型 是否必填 最大长度 描述
app_id string 32 支付宝分配给开发者的应用id
method string 128 接口名称
format string 40 仅支持json
charset string 10 请求使用的编码格式,如utf-8,gbk,gb2312等
sign_type string 10 商户生成签名字符串所使用的签名算法类型,目前支持rsa
sign string 256 商户请求参数的签名串,详见签名
timestamp string 19 发送请求的时间,格式"yyyy-mm-dd hh:mm:ss"
version string 3 调用的接口版本,固定为:1.0
notify_url string 256 支付宝服务器主动通知商户服务器里指定的页面http/https路径。
app_auth_token string 40 详见应用授权概述
biz_content string 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档

请求参数

参数 类型 是否必填 最大长度 描述
out_trade_no string 必须 64 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
scene string 必须 32 支付场景 条码支付,取值:bar_code 声波支付,取值:wave_code
auth_code string 必须 32 支付授权码
seller_id string 可选 28 如果该值为空,则默认为商户签约账号对应的支付宝用户id
total_amount price 可选 11 订单总金额,单位为元,
discountable_amount price 可选 11 参与优惠计算的金额,单位为元
undiscountable_amount price 可选 11 不参与优惠计算的金额,单位为元
subject string 必须 256 订单标题
body string 可选 128 订单描述
goods_detail goodsdetail [] 可选 订单包含的商品列表信息,json格式,其它说明详见商品明细说明
operator_id string 可选 28 商户操作员编号
store_id string 可选 32 商户门店编号
terminal_id string 可选 32 商户机具终端编号
alipay_store_id string 可选 32 支付宝的店铺编号
extend_params extendparams 可选 业务扩展参数
timeout_express string 可选 6 该笔订单允许的最晚付款时间,逾期将关闭交易。
royalty_info royaltyinfo 可选 描述分账信息,json格式,其它说明详见分账说明
sub_merchant submerchant 可选 二级商户信息,当前只对特殊银行机构特定场景下使用此字段

公共响应参数

参数 类型 是否必填 最大长度 描述
code string 网关返回码,详见文档
msg string 网关返回码描述,详见文档
sub_code string 业务返回码,详见文档
sub_msg string 业务返回码描述,详见文档
sign string 签名,详见文档

响应参数

参数 类型 是否必填 最大长度 描述
trade_no string 必填 64 支付宝交易号
out_trade_no string 必填 64 商户订单号
buyer_logon_id string 必填 100 买家支付宝账号
total_amount price 必填 11 交易金额
receipt_amount string 必填 11 实收金额
buyer_pay_amount price 选填 11 买家付款的金额
point_amount price 选填 11 使用积分宝付款的金额
invoice_amount price 选填 11 交易中可给用户开具发票的金额
gmt_payment date 必填 32 交易支付时间
fund_bill_list tradefundbill [] 必填 交易支付使用的资金渠道
card_balance price 选填 11 支付宝卡余额
store_name string 选填 512 发生支付交易的商户门店名称
buyer_user_id string 必填 28 买家在支付宝的用户id
discount_goods_detail string 必填 本次交易支付所使用的单品券优惠的商品优惠信息

系统中配置如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26
<?php

$config = array (

//支付宝公钥

'alipay_public_key' => "migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqddi6d306q8fifcoatxyiuejhkrivyisrcc73s3vf1zt7xn8rnpwjxo8pwajmmvytn9n4hq632qjbvhf8sxhi/fesraprwctzvzqetrnrwvxlo5jvmrgi60j8ue1efilzpxv9je9mkjzomdssymzkh2qhurcmzyi/fcea3/cnmw0qidaqab",

//商户私钥

'merchant_private_key' => "miicxaibaakbgqcyffrongd8q/1krh1cpssri360dxlhi7zxdpjgye5hkdwf7u9b3zzu9erzpm90xe7gzrksxigourh4uqhmvrbto3e+liyoynpd6as3q427kctit7ajhhicz6gwhegtuivlqiuwlsauqcbi6do4gezrlvadzus0wcjijoxw02rxsqidaqabaogaxbjyyvac4zj3jph8yostlr5n13bwdatdw/glwwt+0rnnei90tqhrnvy7lnvnjgrprts182tvgjopxmwsnebakhiugidpq99gle4lgd5lkwtzkd84bmvhatfnscczcevfqkg3tzd4t3fq93frilsnnzplhiw53jirstckr3rx9oecqqdwmshyc91hevmqqvnasbgeickwxhodqjdm2lhkbx4mrb9jezfds6mxwdajf2/qw+tgtpn3ybccdw/hnghhqtstakea1vtyjodawwode8x4fu0ipq9+e19mcvoajjlbh46mropwgodj3raqt/thakeaydjabstaiy2j18hitiyh+1bgjqjbakgrjxh5ofxsg7uxibcofyjifi34g7ecfxxvcqxaaw4u4n2uy0c0txkl5t+lxzeqg8d/gfbjj0qutvnzgdofdoecqbhyozncfk6xe8pguxquht4jg/iu4djwjt+kuzbsjerhtcvyly4jpzfuohrkom4fj6/4uuqwrjmabfgzrx4+sfkcqcni8rcz6yprh5keoepo3uazalnenp8dkkhgqchawdk77nzlj727nt23sthfx6nkhzyrujgq5vx1lkl0wkukbxm=",

//编码格式

'charset' => "utf-8",

//支付宝网关

'gatewayurl' => "https://openapi.alipay.com/gateway.do",

//应用id

'app_id' => "2016061501500000",

//异步通知地址,只有扫码支付预下单可用

'notify_url' => "http://www.fangbei.org/alipay/notify.html",

//最大查询重试次数

'maxqueryretry' => "10",

//查询间隔

'queryduration' => "3"

);

其中支付宝公钥就是在前面中复制保存的,直接复制到程序中即可,而商户私钥是之前openssl中生成的私钥。appid是该服务的id号。

而这个异步通知将会接收扫码支付结果的通知。

五、条码支付、扫码支付、订单查询、退款申请

1. 条码支付

条码支付的参数配置如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
// (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,

// 需保证商户系统端不能重复,建议通过数据库sequence生成,

$outtradeno = "barpay" . date('ymdhis') . mt_rand(100, 1000);

$subject = "方倍工作室-支付宝-当面付-扫码支付";

$totalamount = 0.01; // (必填) 订单总金额,单位为元,不能超过1亿元

// (必填) 付款条码,用户支付宝钱包手机app点击“付款”产生的付款条码

$authcode = $_post['auth_code']; //28开头18位数字

// 支付超时,线下扫码交易定义为5分钟

$timeexpress = "5m";

// 创建请求builder,设置请求参数

$barpayrequestbuilder = new alipaytradepaycontentbuilder();

$barpayrequestbuilder->setouttradeno($outtradeno);

$barpayrequestbuilder->settotalamount($totalamount);

$barpayrequestbuilder->setauthcode($authcode);

$barpayrequestbuilder->settimeexpress($timeexpress);

$barpayrequestbuilder->setsubject($subject);

// 调用barpay方法获取当面付应答

$barpay = new alipaytradeservice($config);

$barpayresult = $barpay->barpay($barpayrequestbuilder);

switch ($barpayresult->gettradestatus()) {

case "success":

echo "支付宝支付成功:" . "<br>--------------------------<br>";

print_r($barpayresult->getresponse());

break;

case "failed":

echo "支付宝支付失败!!!" . "<br>--------------------------<br>";

if (!empty($barpayresult->getresponse())) {

print_r($barpayresult->getresponse());

}

break;

case "unknown":

echo "系统异常,订单状态未知!!!" . "<br>--------------------------<br>";

if (!empty($barpayresult->getresponse())) {

print_r($barpayresult->getresponse());

}

break;

default:

echo "不支持的交易状态,交易返回异常!!!";

break;

}

return;

}

程序监测,最终提交的url如下

https://openapi.alipay.com/gateway.do?app_id=2016061501500000&version=1.0&format=json&sign_type=rsa&method=alipay.trade.pay×tamp=2016-08-26+17%3a14%3a52&auth_token=&alipay_sdk=alipay-sdk-php-20160411&terminal_type=&terminal_info=&prod_code=¬ify_url=&charset=utf-8&app_auth_token=&sign=emvobahpkw6b1m%2boxytdbupixniaq73jtiphlh2vuyy4ocjq2uivtxwttw0y%2b7uexhwily8fyrdonrjwsjbatraqbgclppc4ybqswtpcb%2f76d65dmqeyrenk2sgcqhxcijnkroqjgaqmbqdhneeru7swsnj%2fff%2f025yltzk5lzq%3d

发送的json数据如下:

?

1

2

3

4

5

6

7

8
{

"scene":"bar_code",

"out_trade_no":"barpay20160826051452680",

"total_amount":0.01,

"auth_code":"289743098358423535",

"timeout_express":"5m",

"subject":"方倍工作室-支付宝-当面付-扫码支付"

}

接收到的数据如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
{

"alipay_trade_pay_response":{

"code":"10000",

"msg":"success",

"buyer_logon_id":"118***@qq.com",

"buyer_pay_amount":"0.01",

"buyer_user_id":"2088002364008751",

"fund_bill_list":[

{

"amount":"0.01",

"fund_channel":"alipayaccount"

}

],

"gmt_payment":"2016-08-26 17:14:59",

"invoice_amount":"0.01",

"open_id":"20880044751374809757987911112575",

"out_trade_no":"barpay20160826051452680",

"point_amount":"0.00",

"receipt_amount":"0.01",

"total_amount":"0.01",

"trade_no":"2016082621001004750244100034"

},

"sign":"pedemwh6x73t9lmwrzpgnvb1npnktodw6+8mduturnpvwxr1jht+x3crt2g4sdnhzxkjtzspuxjnylswisrtnqjjzqrp5xmujxmaahp/d5xxeywasdag5cj7ygd7t80budasde4eoqq6ox7kzj6lwkcphox13ti+ukt1dgcqs5o="

}

2. 扫码支付
扫码支付的参数配置如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
// (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,

// 需保证商户系统端不能重复,建议通过数据库sequence生成,

$outtradeno = "qrpay".date('ymdhis').mt_rand(100,1000);

$subject = "方倍工作室-支付宝-当面付-扫码支付";

$totalamount = "0.01";

// 支付超时,线下扫码交易定义为5分钟

$timeexpress = "5m";

// 创建请求builder,设置请求参数

$qrpayrequestbuilder = new alipaytradeprecreatecontentbuilder();

$qrpayrequestbuilder->setouttradeno($outtradeno);

$qrpayrequestbuilder->settotalamount($totalamount);

$qrpayrequestbuilder->settimeexpress($timeexpress);

$qrpayrequestbuilder->setsubject($subject);

// 调用qrpay方法获取当面付应答

$qrpay = new alipaytradeservice($config);

$qrpayresult = $qrpay->qrpay($qrpayrequestbuilder);

// 根据状态值进行业务处理

switch ($qrpayresult->gettradestatus()){

case "success":

echo "支付宝创建订单二维码成功:"."<br>---------------------------------------<br>";

$response = $qrpayresult->getresponse();

$qrcode = $qrpay->create_erweima($response->qr_code);

echo $qrcode;

print_r($response);

break;

case "failed":

echo "支付宝创建订单二维码失败!!!"."<br>--------------------------<br>";

if(!empty($qrpayresult->getresponse())){

print_r($qrpayresult->getresponse());

}

break;

case "unknown":

echo "系统异常,状态未知!!!"."<br>--------------------------<br>";

if(!empty($qrpayresult->getresponse())){

print_r($qrpayresult->getresponse());

}

break;

default:

echo "不支持的返回状态,创建订单二维码返回异常!!!";

break;

}

生成的提交请求url如下

https://openapi.alipay.com/gateway.do?app_id=2016061501500000&version=1.0&format=json&sign_type=rsa&method=alipay.trade.precreate×tamp=2016-08-26+17%3a38%3a13&auth_token=&alipay_sdk=alipay-sdk-php-20160411&terminal_type=&terminal_info=&prod_code=¬ify_url=http%3a%2f%2f123.daoqidata.com%2fweixin%2frawpost.php&charset=utf-8&app_auth_token=&sign=ayyijrz63romvet8ayz58uiyv3y5irbbx8ctfx6znhkt%2fu11u7isuywcxjrwrwco2oq2tdo%2fjtuhrbbdp5ulntmubbuktqdccf53pf5yiudgikxupfyugeurtg3gw4dqxoinkm6zb6mi0n%2f9m78a%2fnp8gtz4wthyhil%2b%2fozsyt4%3d

发送的json数据如下:

?

1

2

3

4

5

6
{

"out_trade_no":"qrpay20160826053813582",

"total_amount":"0.01",

"timeout_express":"5m",

"subject":"方倍工作室-支付宝-当面付-扫码支付"

}

返回的数据如下:

?

1

2

3

4

5

6

7

8

9
{

"alipay_trade_precreate_response":{

"code":"10000",

"msg":"success",

"out_trade_no":"qrpay20160826053813582",

"qr_code":"https://qr.alipay.com/bax00885xbhszseo9l7p404d"

},

"sign":"vfntgo2wmz+2ce1l05lnywtfn4inhxo/tuabzibhn4fplxncvyc9ihs8s7wa3fyw23g30luepehkzwobnfpujilonmexzvelhv3ylinz+q2mq5m8sb/d61ypvf4bgy1ovlrt4d3h/i3judmzedbroyfn9kb9vskkayc+b6l41zw="

}

其中的 就是二维码链接地址,使用接口将其成二维码后。
支付宝用户扫码的时候,接口通知将收到如下数据

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
{

"notify_id":"4c2c04c3cc50e978d44212febe7c3f0lse",

"seller_email":"pay***@fangbei.org",

"notify_type":"trade_status_sync",

"sign":"r0irdymsq0+zusuglzkuthcr40hoop+cckojvbcma1uji3rqqfe5xehojb1nmbcape3zxpkhxmdlis109ngpbgy+nuebr7yzjyur/hxq3wxeyfz8aiwlvlozhrf7dqwxdho/vhyexaleqvri/03m0hxrwhzkuou1es9wmgzolqq=",

"trade_no":"2016082621001004750241229810",

"buyer_id":"2088002364008751",

"app_id":"2016061501500000",

"gmt_create":"2016-08-26 18:20:37",

"out_trade_no":"qrpay20160826062009757",

"seller_id":"2088421202724253",

"notify_time":"2016-08-26 18:20:37",

"subject":"方倍工作室-支付宝-当面付-扫码支付",

"trade_status":"wait_buyer_pay",

"open_id":"20880044751374809757987911112575",

"total_amount":"0.01",

"sign_type":"rsa",

"buyer_logon_id":"118***@qq.com"

}

当用户输入密码付款成功之后,将收到如下数据

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
{

"fund_bill_list":"[{"amount":"0.01","fundchannel":"alipayaccount"}]",

"subject":"方倍工作室-支付宝-当面付-扫码支付",

"trade_no":"2016082621001004750241229810",

"gmt_create":"2016-08-26 18:20:37",

"notify_type":"trade_status_sync",

"total_amount":"0.01",

"out_trade_no":"qrpay20160826062009757",

"invoice_amount":"0.01",

"open_id":"20880044751374809757987911112575",

"seller_id":"2088421202724253",

"notify_time":"2016-08-26 18:20:50",

"trade_status":"trade_success",

"gmt_payment":"2016-08-26 18:20:50",

"seller_email":"pay***@fangbei.org",

"receipt_amount":"0.01",

"buyer_id":"2088002364008751",

"app_id":"2016061501500000",

"notify_id":"56f97611ee609f46384b188b409e75else",

"buyer_logon_id":"118***@qq.com",

"sign_type":"rsa",

"buyer_pay_amount":"0.01",

"sign":"nf/kjryack0utqlnrnuymisnyw6hsxqpjpk2o5mhcz+wzuvqbrd3sq5poo3gu7lsrosiuuio4jeyel12ek2+w3ltcls9wei60syowpocjeygmvfnzbvr6+k7yo5au2wikm3mksxm2xxib9xpmmrdacghvqz2bxuaqujkpk1ft0s=",

"point_amount":"0.00"

}

3. 订单查询

订单查询的参数配置如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
////获取商户订单号

$out_trade_no = trim($_post['out_trade_no']);

//第三方应用授权令牌,商户授权系统商开发模式下使用

$appauthtoken = "";//根据真实值填写

//构造查询业务请求参数对象

$querycontentbuilder = new alipaytradequerycontentbuilder();

$querycontentbuilder->setouttradeno($out_trade_no);

$querycontentbuilder->setappauthtoken($appauthtoken);

//初始化类对象,调用querytraderesult方法获取查询应答

$queryresponse = new alipaytradeservice($config);

$queryresult = $queryresponse->querytraderesult($querycontentbuilder);

//根据查询返回结果状态进行业务处理

switch ($queryresult->gettradestatus()){

case "success":

echo "支付宝查询交易成功:"."<br>--------------------------<br>";

print_r($queryresult->getresponse());

break;

case "failed":

echo "支付宝查询交易失败或者交易已关闭!!!"."<br>--------------------------<br>";

if(!empty($queryresult->getresponse())){

print_r($queryresult->getresponse());

}

break;

case "unknown":

echo "系统异常,订单状态未知!!!"."<br>--------------------------<br>";

if(!empty($queryresult->getresponse())){

print_r($queryresult->getresponse());

}

break;

default:

echo "不支持的查询状态,交易返回异常!!!";

break;

}

最终提交的url如下

https://openapi.alipay.com/gateway.do?app_id=2016061501500000&version=1.0&format=json&sign_type=rsa&method=alipay.trade.query×tamp=2016-08-26+18%3a27%3a07&auth_token=&alipay_sdk=alipay-sdk-php-20160411&terminal_type=&terminal_info=&prod_code=¬ify_url=&charset=utf-8&app_auth_token=&sign=eiuyjtes95quan3x9exbqzba%2fcvm5qgq0touss8mskcjhzacypnu7zt5mud31lpzpfhvejcksdwiq4tuntjpfpxirg7pktit09c%2bz8psua844y7hjkkx%2b4cvzcgto11m3ap0jecrtzw8hhjte9bpy1v43x2bsl5cp3ulpac1fsm%3d

发送的json数据如下:

?

1

2

3
{

"out_trade_no":"qrpay20160826053813582"

}

接收到的数据如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
{

"alipay_trade_query_response":{

"code":"10000",

"msg":"success",

"buyer_logon_id":"118***@qq.com",

"buyer_pay_amount":"0.01",

"buyer_user_id":"2088002364008751",

"fund_bill_list":[

{

"amount":"0.01",

"fund_channel":"alipayaccount"

}

],

"invoice_amount":"0.01",

"open_id":"20880044751374809757987911112575",

"out_trade_no":"qrpay20160826053813582",

"point_amount":"0.00",

"receipt_amount":"0.01",

"send_pay_date":"2016-08-26 17:38:58",

"total_amount":"0.01",

"trade_no":"2016082621001004750239053830",

"trade_status":"trade_success"

},

"sign":"e2mxjdahw/eqrfnkzgy/y//da5cmb54hnqa0cjbz+zcftuli1lvfms93onp7cpvk/fi7yxbkztkbpk29o4aewkxlsycrt92domayqahzyca7/5a3msc/awalyrfodwyjjdlncwdfrn9hx52ivrijxvlj0himviqqedavg28hpbo="

}

4. 订单退款

订单退款的参数配置如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41
$out_trade_no = trim($_post['out_trade_no']);

$refund_amount = trim($_post['refund_amount']);

$out_request_no = trim($_post['out_request_no']);

//第三方应用授权令牌,商户授权系统商开发模式下使用

$appauthtoken = "";//根据真实值填写

//创建退款请求builder,设置参数

$refundrequestbuilder = new alipaytraderefundcontentbuilder();

$refundrequestbuilder->setouttradeno($out_trade_no);

$refundrequestbuilder->setrefundamount($refund_amount);

$refundrequestbuilder->setoutrequestno($out_request_no);

$refundrequestbuilder->setappauthtoken($appauthtoken);

//初始化类对象,调用refund获取退款应答

$refundresponse = new alipaytradeservice($config);

$refundresult = $refundresponse->refund($refundrequestbuilder);

//根据交易状态进行处理

switch ($refundresult->gettradestatus()){

case "success":

echo "支付宝退款成功:"."<br>--------------------------<br>";

print_r($refundresult->getresponse());

break;

case "failed":

echo "支付宝退款失败!!!"."<br>--------------------------<br>";

if(!empty($refundresult->getresponse())){

print_r($refundresult->getresponse());

}

break;

case "unknown":

echo "系统异常,订单状态未知!!!"."<br>--------------------------<br>";

if(!empty($refundresult->getresponse())){

print_r($refundresult->getresponse());

}

break;

default:

echo "不支持的交易状态,交易返回异常!!!";

break;

}

最终提交的url如下

https://openapi.alipay.com/gateway.do?app_id=2016061501500000&version=1.0&format=json&sign_type=rsa&method=alipay.trade.refund×tamp=2016-08-26+18%3a47%3a35&auth_token=&alipay_sdk=alipay-sdk-php-20160411&terminal_type=&terminal_info=&prod_code=¬ify_url=&charset=utf-8&app_auth_token=&sign=y1c5qwglaq0t3brvietqfnijrqmn%2fl9vmla1xgxkcexercjopmys2rpohaw%2f2pjeokjc7r9qafdgknq4lhzxhbrd8sxlpqimps6awcw9p8s%2fzc2oqcjnlfapx6lh8veharj4wzdayezla48ttoqljumgpritgoxyjhhyukdbqss%3d

发送的json数据如下:

?

1

2

3

4

5
{

"out_trade_no":"qrpay20160826053813582",

"refund_amount":"0.01",

"out_request_no":"1"

}

接收到的数据如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
{

"alipay_trade_refund_response":{

"code":"10000",

"msg":"success",

"buyer_logon_id":"123***@qq.com",

"buyer_user_id":"2088002364008751",

"fund_change":"y",

"gmt_refund_pay":"2016-08-26 18:47:41",

"open_id":"20880044751374809757987911112575",

"out_trade_no":"qrpay20160826053813582",

"refund_detail_item_list":[

{

"amount":"0.01",

"fund_channel":"alipayaccount"

}

],

"refund_fee":"0.01",

"send_back_fee":"0.01",

"trade_no":"2016082621001004750239053830"

},

"sign":"ydnsmpx5y0rqes0zbfnxrfvip8hf0w30or74cmtwkvpo2byee6tqc+pbnwessz2xsgloztyy7o+sia07l+fmhdv/ptt6qx1mvgqv7rhzodkls0zdrs/5/fy9oyj01xs1wb8od/93inlzdkd2yw9g0he6qgylpcxutkmwuasd7bm="

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 支付宝支付开发——当面付条码支付和扫码支付实例 https://www.kuaiidc.com/96169.html

相关文章

发表评论
暂无评论