uni-app项目安卓可正常微信支付,iOS系统微信支付报错“商户传入的appid参数不正确,请联系商户处理”

发布于 1周前 作者 vueper 来自 Uni-App

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)

7 回复

请使用自定义基座进行测试


用这个报“请查看是否设备未加入到证书列表或者确认证书类型是否匹配”

回复 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);
      }
    });
  }
});

确保在开发和测试过程中,仔细检查所有相关配置,并正确区分平台差异。如果问题依旧存在,建议联系微信支付技术支持获取更详细的错误信息和解决方案。

回到顶部