支付能力说明
功能说明
目前支持三种支付方式: 度小满支付、支付宝支付、微信H5支付
需要的具体实现
需要注意的是,小程序支付只是给小程序开发者提供一个支付通道,所有和订单相关的信息都由小程序开发者生成和提供,小程序宿主只是提供通道,不需要额外注册商户号等等
所有的接口都封装在ISwanAppPayment
当中,对应SwanAppPaymentImpl
中的方法需要宿主开发者来实现,以下是具体实现
度小满支付
需要实现SwanAppPaymentImpl#baiduPay(SwanApp, String, BaiduPayCallback)
方法完成调起支付流程,以及在支付完成时收到回调,发送给小程序开发者处理。
实现参考文档: https://b.baifubao.com/static/spcenter/fe-wallet-open-platform/entry/develop-document/#/document?mdUrl=5bc5d6183c21af3fda3abc6e
具体实现如下:
集成度小满SDK,SDK下载地址:https://b.baifubao.com/static/spcenter/fe-wallet-open-platform/entry/develop-document/#/download 安卓集成包,需要完成所有的集成操作,在上面的文档中已经写明,不再赘述
API初始化:
在Application#onCreate()
里调用以下API。
1 | BaiduWallet.getInstance().initWallet(Context context) |
支付:
1 | BaiduWallet.getInstance().doPay(Context context, String orderInfo, new PayCallBack callback) |
回调:
将
PayCallBack#onPayResult(int, String)
中的结果传给BaiduPayCallback#onBaiduPayResult(int, String)
注意:
发起支付需要在主进程中进行,不然可能会收不到支付回调信息,sdk已经提供了ActivityDelegation
类处理主进程和小程序进程的交互,可以继承ActivityDelegation
进行处理
支付宝支付
需要实现SwanAppPaymentImpl#aliPay(String, AliPayCallback)
方法完成调起支付流程,以及在支付完成时收到回调,发送给小程序开发者处理。
实现参考文档:https://docs.open.alipay.com/204/105296/
具体实现如下:
集成支付宝SDK,SDK下载地址:https://docs.open.alipay.com/54/104509 选择您合适的sdk接入,需要完成所有的集成操作,在前面的文档中已经写明,不再赘述
支付:
在SwanAppPaymentImpl#aliPay(String, AliPayCallback)
中实现支付宝文档中的调起操作
1 | final String orderInfo = info; // 订单信息 |
回调:
1 | private Handler mHandler = new Handler() { |
支付宝的回调结构参考文档:https://docs.open.alipay.com/204/105301/
1 | { |
将上述结构中的resultStatus和result传给
AliPayCallback#onAliPayResult(int, String)
需要注意一点,支付宝的返回参数和小程序要求的不太一样,需要宿主进行一次参数映射转换,转换结构如下:
支付宝 | 智能小程序 |
---|---|
9000 | 0 |
8000 | 1 |
6001 | 2 |
其他 | 6 |
注意:
发起支付需要在主进程中进行,不然可能会收不到支付回调信息,sdk已经提供了ActivityDelegation
类处理主进程和小程序进程的交互,可以继承ActivityDelegation
进行处理
微信h5支付
微信h5支付的大部分功能已经实现,只需要在SwanAppPaymentImpl#isWxAppInstalledAndSupported(Context)
中判断微信是否可用就可以
具体实现如下:
需要集成微信sdk,接入参考文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN
sdk下载文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
判断当前微信状态是否可用
参考代码:
1 | IWXAPI wxApi = WXAPIFactory.createWXAPI(context, null); |
注意,集成微信sdk需要宿主向微信申请过appid,即上述代码中的
PassportDevelop.WX_APPID