uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书

uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书

bug描述:

微信支付小程序红包接口填写调用ip白名单后仍然报错"IP地址非你在商户平台设置的可用IP地址",使用阿里云uniCloud.httpProxyForEip固定出口ip,将代理服务器IP列表填入白名单显示证书错误,uniCloud.httpProxyForEip能否传入微信证书,请问有没有办法解决?

alt text

alt text

alt text

alt text


更多关于uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

这个代理请求是不支持证书的,只能改用微信支付v3接口, v3接口网络传输过程中不需要传证书

更多关于uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书的实战教程也可以访问 https://www.itying.com/category-93-b0.html


找不到小程序红包的v3接口,能否发一下?

回复 2***@qq.com: v3没有小程序红包,也意味着用不了这个接口了,可以考虑自己买一台最便宜的服务器,搭建nginx做反向代理

回复 DCloud_uniCloud_VK: 购买阿里云服务器还需要使用uniCloud.httpProxyForEip固定ip吗?

回复 2***@qq.com: 不需要了, 即云函数请求你购买的阿里云服务器搭建的nginx, nginx反向代理去请求微信接口

回复 DCloud_uniCloud_VK: 好的谢谢!

这个问题是由于微信支付接口要求使用商户证书进行双向认证,而uniCloud.httpProxyForEip默认不支持传入客户端证书导致的。目前uniCloud的HTTP代理功能确实存在这个限制。

解决方案可以考虑以下几种:

  1. 使用uniCloud云函数直接发起请求,不使用httpProxyForEip代理,这样可以直接在代码中配置微信支付证书。示例代码:
const res = await uniCloud.httpclient.request('https://api.mch.weixin.qq.com/...', {
  method: 'POST',
  data: requestData,
  contentType: 'xml',
  dataType: 'xml',
  cert: require('fs').readFileSync('/path/to/apiclient_cert.p12'),
  key: require('fs').readFileSync('/path/to/apiclient_key.pem')
});
回到顶部