uni-app项目安卓可正常微信支付,iOS系统微信支付报错“商户传入的appid参数不正确,请联系商户处理”
uni-app项目安卓可正常微信支付,iOS系统微信支付报错“商户传入的appid参数不正确,请联系商户处理”
操作步骤:
支付的逻辑代码
```python
uni.requestPayment({
"provider": "wxpay",
"orderInfo": {
"appid": "wx4a19c0df3df1e717", // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
"noncestr": resData.nonceStr, // 随机字符串
"package": "Sign=WXPay", // 固定值
"partnerid": resData.merchantId, // 微信支付商户号
"prepayid": resData.pay_data, // 统一下单订单号
"timestamp": resData.timeStamp, // 时间戳(单位:秒)
"sign": resData.paySign // 签名,这里用的 MD5/RSA 签名
},
success(res) {
that.payResult('success');
console.log(res)
},
fail(err) {
console.log(err)
err.errMsg !== 'requestPayment:fail cancel' && that.payResult('fail');
}
})
预期结果:
预期结果:是希望能够在ISO设备上进行微信支付
实际结果:
实际结果:当在苹果iOS系统上进行微信支付报“商户传入的appid参数不正确,请联系商户处理”
bug描述:
在安卓上能够正常微信支付,当在苹果iOS系统上进行微信支付报“商户传入的appid参数不正确,请联系商户处理”
控制台报的错误是
```json
{
"errMsg": "requestPayment:fail The payment appid configured in HBuilder mainifest.json is inconsistent with the appid used to generate the order. If it is HB debugging, please package it online,https://ask.dcloud.net.cn/article/282",
"code": 9
}
以上操作是用基作连接在苹果设备上进行测试出现的问题,目前app苹果端还没有上线
| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| Windows | 1 | HBuilderX |
| iOS | iOS 17 | |
| 手机厂商 | | |
| 手机机型 | | |
![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20241015/47cafb83fa86de9175eefe091e04b31d.jpg)
![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20241015/3eae27ea6c311dd69127865e583d370b.png)
请使用自定义基座进行测试
用这个报“请查看是否设备未加入到证书列表或者确认证书类型是否匹配”
回复 i***@163.com: 请检查证书类型需要是开发证书。并且是否将测试手机的UDID添加到devices中
谢谢已经解决了
回复 i***@163.com: 哥们怎么解决的
咋解决的啊我用的是基座不知道发版后会不会有问题
在处理uni-app项目中微信支付时,如果安卓系统可以正常工作,而iOS系统报错“商户传入的appid参数不正确,请联系商户处理”,这通常表明iOS在请求微信支付接口时传递的appid与在微信支付商户平台配置的appid不匹配。这种情况一般与平台相关的配置或代码差异有关。以下是一些可能帮助排查和解决问题的代码案例和检查步骤:
1. 检查平台特定配置
确保在uni-app项目的manifest.json
中,针对iOS和Android分别配置了正确的appid(注意,这里的appid是指uni-app应用的标识,不是微信支付的商户号appid)。同时,确保微信支付商户平台配置的appid是针对iOS平台的。
// manifest.json
{
"mp-weixin": { // 小程序配置
"appid": "wx1234567890abcdef"
},
"app-plus": { // App平台配置
"distribute": {
"apple": {
"appleId": "com.example.yourapp",
// 其他iOS配置
},
"android": {
// Android配置
}
}
}
}
2. 微信支付配置检查
确保在调用微信支付接口时,传入的appid是微信支付商户平台为iOS应用配置的appid。以下是一个简化的微信支付请求示例:
// 微信支付配置对象(示例)
const wxPayConfig = {
appId: 'wx_merchant_appid_for_ios', // 确保这是微信支付商户平台为iOS配置的appid
timeStamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: ''
};
// 调用微信支付
if (uni.getSystemInfoSync().platform === 'ios') {
uni.requestPayment({
...wxPayConfig,
success: function (res) {
console.log('支付成功', res);
},
fail: function (err) {
console.error('支付失败', err);
}
});
} else {
// Android或其他平台处理
}
3. 动态获取配置
如果appid等配置信息存储在服务器端,确保在请求支付配置时,服务器能够正确区分iOS和Android平台,并返回对应的配置信息。
// 示例:从服务器获取支付配置
uni.request({
url: 'https://yourserver.com/getWxPayConfig',
data: {
platform: uni.getSystemInfoSync().platform
},
success: function (res) {
const payConfig = res.data;
uni.requestPayment({
...payConfig,
success: function (res) {
console.log('支付成功', res);
},
fail: function (err) {
console.error('支付失败', err);
}
});
}
});
确保在开发和测试过程中,仔细检查所有相关配置,并正确区分平台差异。如果问题依旧存在,建议联系微信支付技术支持获取更详细的错误信息和解决方案。