1、目录
- Flutter 导入 tobias SDK
- 支付宝后台配置
- Node.js 配置
- Flutter 调起支付
2、导入 tobias SDK
在fulutter —- pubspec.yaml 文件中新增
dependencies:
flutter_test:
sdk: flutter
tobias: ^2.1.2+1
3、支付宝后台设置
- 在商家中心中签约开通 APP支付
- 在开放平台中创建应用
- 在创建的应用中 添加APP支付能力
- 填写自己的APP包名与签名 签名获取工具
在应用信息中 设置回调地址、接口加签方式、应用网关
加签设置 将应用公钥复制进去
4、Node.js 后台配置
①:在项目中引入 alipay-sdk
②:项目配置
const AlipaySdk = require('alipay-sdk').default
const ali = new AlipaySdk({
appId: '应用ID',
notifyUrl: '回调地址',
privateKey: '私钥',
alipayPublicKey: '公钥',
signType: 'RSA2',
gateway: 'https://openapi.alipay.com/gateway.do'// 网关 固定
});
module.exports = {
ali
}
③:接口设置:
const alipay = require('../utils/alipay')
const AlipayFormData = require('alipay-sdk/lib/form').default
// 下单接口
async aliPay(ctx) {
const { platform, openid, title } = ctx.request.body
const out_trade_no = utils.getDate() + Math.random().toString().substring(2, 10)
const formData = new AlipayFormData();
const price = '0.01' // 价格
formData.setMethod('get');
formData.addField('notify_url', '回调地址');
formData.addField('bizContent', {
outTradeNo: out_trade_no,// 商家内部订单号
productCode: "FAST_INSTANT_TRADE_PAY",// 固定
totalAmount: price,
subject: '主题', //
body: "说明"
});
const result = await alipay.ali.exec(
'alipay.trade.app.pay', // APP支付 alipay.trade.page.pay--网页支付
{},
{ formData: formData },
);
// sdk返回的是一个地址 前端app需要的参数是url地址的后面参数
const search = new URL(result).search
ctx.body = search.substring(1) // 返回地址到前端
},
// 回调接口
async aliPayCallBack(ctx) {
const { out_trade_no, trade_no } = ctx.request.body
}
5、Flutter前端调起使用
void aliPay() async {
String openid = await Token();
final data = await Dio().post('服务器请求地址');
Map result = await tobias.aliPay(data.toString(), evn: AliPayEvn.ONLINE);//evn 固定参数
if (result['resultStatus'] == "9000") { // 支付结果回调
showToast('支付成功!');
} else {
showToast('支付失败!');
}
}
6、结语
至此在Flutter中接入支付宝支付已经完成了。
在接入的过程中,踩了许多的坑,阿里的sdk和flutter的sdk描写的都不够详细,所以在此记录一下,希望能帮助到你!