建立第一个网站,广州线上教学,多用户商城系统开发,wordpress取消邮箱背景#xff1a;uniapp与Java实现的安卓端app支付宝支付#xff0c;本想先在沙箱测试环境测支付#xff0c;但一直提示“商家订单参数异常#xff0c;请重新发起付款。”#xff0c;接着报错信息就是#xff1a;{ errMsg: requestPayment:fail [pa… 背景uniapp与Java实现的安卓端app支付宝支付本想先在沙箱测试环境测支付但一直提示“商家订单参数异常请重新发起付款。”接着报错信息就是{ errMsg: requestPayment:fail [payment支付宝:62009]未知错误, errCode: -100, code: -100 } 本以为是uni.requestPayment传参问题但只有两个参数下面是官网示例代码
uni.requestPayment(OBJECT) | uni-app官网
uni.requestPayment({provider: alipay,orderInfo: orderInfo, //微信、支付宝订单数据 【注意微信的订单信息键值应该全部是小写不能采用驼峰命名】success: function (res) {console.log(success: JSON.stringify(res));},fail: function (err) {console.log(fail: JSON.stringify(err));}
});其中orderInfo是后端返回的字符串本来一直以为是后端传来的参数不对便使用客户端调试工具测试。
后端返回的值支付宝客户端处理加密过后的字符串 调试方法使用安卓手机 1. 下载支付宝沙箱版
这个可以在支付宝开发者中心沙箱环境里面扫二维码进行下载
2. 下载客户端调试工具
客户端调试工具下载
具体客户端使用请参照: 蚂蚁技术支持客户端调试工具使用教程 通过上面的方法测试后使用那段长参数值是可以正常支付的。
可问题是使用uni.requestPayment调用就是不行继续翻支付宝官网文档发现一重要注意事项。小程序文档 - 支付宝文档中心 解决沙箱测试时需要添加一段代码EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); 知道问题在哪了但这段代码怎么在uniapp中使用呢
下面附上我的部分代码作为参考
// #ifdef APP-PLUS
// 获取后端返回的支付宝客户端处理加密过后的字符串
await API_Trade.initiatePay(paymentMethod, paymentClient, params).then((signXml) {//如果支付异常if (!signXml.data.success) {uni.showToast({title: signXml.data.message,duration: 2000});return;}let payForm signXml.data.result;// 由于测试阶段采用沙箱支付下面两行代码需要配置var EnvUtils plus.android.importClass(com.alipay.sdk.app.EnvUtils);EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);uni.requestPayment({provider: alipay,orderInfo: payForm || ,success: (e) {console.log(成功的返回值, e);uni.showToast({icon: none,title: 支付成功!,});this.callback(paymentMethod)},fail: (e) {console.log(失败的返回值, e);this.exception e;uni.showModal({content: 支付失败,如果您已支付请勿反复支付,showCancel: false,});},});}
);
// #endif
ok沙箱环境下支付宝支付莫得问题了。
注意的是关于EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);的代码段在使用生产环境支付时就需要注释了。
参考地址学习记录关于Uniapp与Java实现支付宝沙箱APP内支付_uniapp支付宝沙箱-CSDN博客