uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错

背景 :uniapp与Java实现的安卓端app支付宝支付,本想先在沙箱测试环境测支付,但一直提示"商家订单参数异常,请重新发起付款。",接着报错信息就是:{

"errMsg": "requestPayment:fail payment支付宝:62009未知错误",

"errCode": -100,

"code": -100

}

本以为是uni.requestPayment传参问题,但只有两个参数,下面是官网示例代码:

uni.requestPayment(OBJECT) | uni-app官网

javascript 复制代码
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中使用呢?

下面附上我的部分代码,作为参考:

javascript 复制代码
// #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博客

相关推荐
wangruofeng32 分钟前
AI Models 1.1.0 发布,查大模型价格、对比模型和找 API 地址
前端·aigc·ai编程
wangruofeng35 分钟前
给前端开发者的 100 个设计参考网站
前端·设计
LinXunFeng4 小时前
拿竞品 App 一扫,技术栈全暴露了
android·flutter·开源
星栈4 小时前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技4 小时前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户47949283569154 小时前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
风骏时光牛马6 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
Gracker6 小时前
AIW:从系统机制到性能排查,一本可以对照源码的 Android 电子书
android
三少爷的鞋7 小时前
代码越来越便宜,判断力越来越贵:AI 时代的 Android 架构与协程避坑指南
android
wangruofeng7 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构