调用说明
调用的主要原理是:通过拉起支付宝APP,然后调用支付宝内said为10000007的扫码功能来发起支付;
步骤说明
第一步:调用《4.3.扫码支付交易》接口,取到下单成功返回的code_url
字段值;
第二步:在接口返回的code_url
字段前拼接上固定前缀alipays://platformapi/startapp?saId=10000007&qrcode=
组成jumpUrl;
第三步:并在H5/APP内,通过打开第三方APP的方式打开jumpUrl;
第四步:获取终态,客户支付完成后翼码会将支付结果推送到客户异步地址,如果长时间未收到异步结果可以调用《4.4.支付查询交易》查询交易状态;
调用示例
《4.3.扫码支付交易》返回报文为
...
"code_url": "https://qr.alipay.com/bax05597yh61m7lrqhgg00a0"
...
取接口返回code_url字段,拼接上固定前缀组成jumpUrl
alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax05597yh61m7lrqhgg00a0
在H5页面内,跳转打开jumpUrl或直接跳转接口返回的code_url都可以实现;
在APP内,通过打开第三方APP的方式打开jumpUrl实现;
Android APP 示例代码:
// 固定前缀
String topic = "alipays://platformapi/startapp?saId=10000007&qrcode=";
// 从《4.3.扫码支付交易》获取的code_url参数
String codeUrl = "https://qr.alipay.com/bax05597yh61m7lrqhgg00a0"
// 字符串拼接
String jumpUrl = topic + codeUrl;
// 按以上示例拼接得出结果
// jumpUrl 为 alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax05597yh61m7lrqhgg00a0
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
// jumpUrl 为先前示例中拼装的 url
Uri contentUrl = Uri.parse(jumpUrl);
intent.setData(contentUrl);
activity.startActivity(intent);
iOS APP 示例代码:
[[UIApplication sharedApplication]openURL:[NSURL URLWithString: jumpUrl]];
注意事项
系统会弹出是否允许打开支付宝,点击允许,跳转支付宝进行支付,此种方式没有考虑用户没有装支付宝的情况。
如需考虑未安装支付宝的情况,APP端可使用webview,加载《4.3.扫码支付交易》返回的code_url链接(例:
https://qr.alipay.com/bax05597yh61m7lrqhgg00a0
) 此种方式,如未安装支付宝客户端,会跳转到支付宝下载页面,引导用户安装下载。以上部分是在APP为原生开发的前提下,RN的方式参考以下示例,Union App开发的可参考以上实现思路来实现,翼码无具体代码案例。
React Native方式可参考如下
linkurl = 'alipays://platformapi/startapp?saId=10000007&qrcode='+ {codeUrl}
Linking.openURL(linkurl);