uniapp如何实现支付宝支付的功能

一、前置条件

在使用uniapp实现支付宝支付功能之前,需要满足以下条件:

1. 注册支付宝开发者账户

在支付宝开放平台注册一个开发者账户,注册完成后需要进行实名认证,开通支付宝商家服务。

2. 获取支付宝应用的app_id与私钥

在支付宝开放平台创建应用,获得应用app_id。并且生成RSA私钥,私钥是进行二次签名的必须成分。

3. 配置uniapp项目

在uniapp项目中需要安装uni-alipay插件,并且进行相关配置。

{

"compilerOptions": {

...

},

"condition": {

...

},

"appid": "APID",

"ali": {

"appId": 'YOUR_APPID',

"rsaPrivate": 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

},

...

}

二、发起支付宝支付请求

在前置条件满足后,开发者可以通过uni-alipay插件中的APD接口发起支付宝支付请求。

// 查看接口文档

import uniAlipay from '@dcloudio/uni-alipay'

uniAlipay.pay({

orderStr: '从后端请求的订单信息',// 订单信息

}, function(ret) {

console.log('success')

console.log(JSON.stringify(ret))

}, function(ret) {

console.log('fail')

console.log(JSON.stringify(ret))

})

在以上代码中,uniAlipay.pay()方法是发起支付宝支付请求的接口,其执行流程如下:

前端请求后端获取订单实体。

调用uniAlipay.pay()方法,传入订单信息及成功、失败处理回调函数。

对订单实体进行字符串化处理(详情见下文)。

调用支付宝支付sdk进行支付。

三、订单信息加签方式

在请求支付宝sdk支付时需要将订单实体进行字符串化及加签,步骤如下:

1. 订单信息json化

根据支付宝开放平台要求,订单信息应包含商户订单号、订单总金额、商品名称、商品详情等字段信息,同时需要将json对象转化为字符串,这样才能放置到支付宝sdk中进行处理。

{

"out_trade_no": "商户订单号",

"total_amount": "0.01",

"subject": "测试商品",

"body": "测试商品描述",

"timeout_express": "30m",

"product_code": "QUICK_MSECURITY_PAY"

}

2. 订单信息字符串化

将订单信息进行字符串化,即将json字符串中每个字段按照key=value的形式拼接成一个字符串,保留原值中所有的空格。

out_trade_no=商户订单号&total_amount=0.01&subject=测试商品&body=测试商品描述&timeout_express=30m&product_code=QUICK_MSECURITY_PAY

3. 订单信息签名

将字符串化的订单信息进行RSA256加签,私钥为之前开发者在开放平台中申请的RSA私钥。

4. 将签名后的信息放入到支付宝支付sdk请求体中

将签名后的订单信息放入orderStr字段中,通过调用uniAlipay.pay()接口发起支付宝支付请求。

总结

通过本文我们了解了uniapp如何实现支付宝支付的功能,并且深入了解了订单实体的加签及字符串化方式。开发者可以根据以上原理,在自己项目中进行支付宝支付功能的实现。