支付宝支付开发——当面付条码支付和扫码支付实例
本文介绍支付宝中当面付下属的条码支付、扫码支付、订单查询、退款申请的集成开发过程。
本文分为以下五个部分:
- 条码支付和扫码支付介绍
- 申请应用
- 密钥生成及配置
- api及sdk集成
- 条码支付、扫码支付、订单查询、退款申请
一、条码支付及二维码支付介绍
1. 条码支付
条码支付是支付宝给到线下传统行业的一种收款方式。商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款。用户仅需出示付款码,所有收款操作由商家端完成。其使用场景如下:
业务流程:
使用步骤:
- 用户登陆支付宝钱包,点击首页“付款”,进入付款码界面;
- 收银员在商家收银系统操作生成订单,用户确认支付金额;
- 用户出示钱包的“付款码”,收银员用扫码设备来扫描用户手机上的条码/二维码后,商家收银系统提交支付;
- 付款成功后商家收银系统会拿到支付成功或者失败的结果。
2. 扫码支付
扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。
其使用场景如下:
业务流程:
使用步骤:
- 用户登陆支付宝钱包,点击首页“付款-扫码付”,进入扫一扫界面;
- 收银员在商家收银系统操作生成支付宝订单,用户确认支付金额,并生成二维码;
- 用户使用钱包的“扫码付”,扫收银员提供的二维码,确认支付;
- 用户付款后商家收银系统会拿到支付成功或者失败的结果。
二、接口申请
企业在申请企业支付宝之后,进行功能申请并签约,然后在蚂蚁金服开放平台中申请应用如下(详细过程就略了)
然后在功能列表中,申请当面付这一功能,申请成功后如下。
这样,我们就有了当面付的权限了。
三、密钥生成
在支付宝当面付的接口中,使用了非对称加密算法,商户自己的公钥和私钥需要自己使用openssl手动生成。对这些概念比较陌生的话,请先自行先了解一下密码学的相关知识。openssl也可以从方倍工作室博客中找到。
下载支付宝官方提供的密钥生成工具openssl,然后执行以下命令就可以生成公钥和私钥。
其中
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-----
命令
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 | 订单描述 |
goodsdetail [] | 可选 | - | 订单包含的商品列表信息,json格式,其它说明详见商品明细说明 | |
operator_id | string | 可选 | 28 | 商户操作员编号 |
store_id | string | 可选 | 32 | 商户门店编号 |
terminal_id | string | 可选 | 32 | 商户机具终端编号 |
alipay_store_id | string | 可选 | 32 | 支付宝的店铺编号 |
extendparams | 可选 | - | 业务扩展参数 | |
timeout_express | string | 可选 | 6 | 该笔订单允许的最晚付款时间,逾期将关闭交易。 |
royaltyinfo | 可选 | - | 描述分账信息,json格式,其它说明详见分账说明 | |
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 | 交易支付时间 |
tradefundbill [] | 必填 | - | 交易支付使用的资金渠道 | |
card_balance | price | 选填 | 11 | 支付宝卡余额 |
store_name | string | 选填 | 512 | 发生支付交易的商户门店名称 |
buyer_user_id | string | 必填 | 28 | 买家在支付宝的用户id |
discount_goods_detail | string | 必填 | - | 本次交易支付所使用的单品券优惠的商品优惠信息 |
系统中配置如下
<?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. 条码支付
条码支付的参数配置如下
// (必填) 商户网站订单系统中唯一订单号,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如下
发送的json数据如下:
{ "scene":"bar_code", "out_trade_no":"barpay20160826051452680", "total_amount":0.01, "auth_code":"289743098358423535", "timeout_express":"5m", "subject":"方倍工作室-支付宝-当面付-扫码支付" }
接收到的数据如下
{ "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. 扫码支付
扫码支付的参数配置如下
// (必填) 商户网站订单系统中唯一订单号,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如下
发送的json数据如下:
{ "out_trade_no":"qrpay20160826053813582", "total_amount":"0.01", "timeout_express":"5m", "subject":"方倍工作室-支付宝-当面付-扫码支付" }
返回的数据如下:
{ "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=" }
其中的 就是二维码链接地址,使用接口将其成二维码后。
当支付宝用户扫码的时候,接口通知将收到如下数据
{ "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" }
当用户输入密码付款成功之后,将收到如下数据
{ "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. 订单查询
订单查询的参数配置如下
////获取商户订单号 $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如下
发送的json数据如下:
{ "out_trade_no":"qrpay20160826053813582" }
接收到的数据如下
{ "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. 订单退款
订单退款的参数配置如下
$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如下
发送的json数据如下:
{ "out_trade_no":"qrpay20160826053813582", "refund_amount":"0.01", "out_request_no":"1" }
接收到的数据如下
{ "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=" }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java内存溢出和内存泄露
下一篇: java中如何获取时间戳的方法实例