uniapp 使用支付宝支付【支付宝小程序版】

前提:收款的支付宝商户:appId、mchId、应用公钥/秘钥、支付宝公钥

流程图:


支付宝小程序支付流程 (1).png

具体关键实现:
一、初始化:
1.0 获取authCode

由于小程序支付是需要user_id,所以需要授权获取user_id才可以完成支付。
uniapp小程序代码:

my.getAuthCode({
              scopes: 'auth_user',
              success: (res) => {
                  this.authCode = res.authCode
                  console.log(this.authCode)
                  this.oauthToken();
              },
            });

1.1 换取授权访问令牌

请求后端服务,通过后端服务换取token
服务端代码(nodeJS):

//使用了alipay-sdk
const result = await alipaySdk.exec('alipay.system.oauth.token', {
        grantType: 'authorization_code',
        code: authCode
    }).catch(error => {return error});
//返回user_id、access_token

二、支付流程:
2.0 点击支付,请求后端生成交易单
alipay.trade.pay(统一收单交易支付接口)
服务端代码(nodeJS):

const result = await alipaySdk.exec('alipay.trade.create', {
        notifyUrl: config.TRADE_CREATE_NOTIFY_URL,
        bizContent:{
            out_trade_no: outTradeNo,
            total_amount: totalAmount,
            buyer_id:userId,
            subject:subject
        }
    }).catch(error => {return error});
//返回tradeNo、outTradeNo

2.1 使用交易单号(tradeNo)唤起支付

my.tradePay({
    tradeNO: tradeNo,  
    success: function(res) {
        console.log("付款成功,严谨一点应该需要请求后端服务再次确认:",res)
    },
    fail: function(res) {  
        console.log("付款失败,严谨一点应该需要请求后端服务再次确认:",res)
    },
});

三、支付结果:
3.0 :支付成功后支付宝服务器会同步主动调用回调url,这里可以同步更新订单的支付状态。

3.1:在2.1中“my.tradePay”返回的是唤起结果,不是支付结果,支付结果还是需要请求后端服务确认(支付宝同步回调支付结果)。

基本就是这样完成了小程序的支付功能。
除了uniapp开发外,还需要一个可以访问的后端服务来做交互和加解密校验等功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容