uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书
uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书
bug描述:
微信支付小程序红包接口填写调用ip白名单后仍然报错"IP地址非你在商户平台设置的可用IP地址",使用阿里云uniCloud.httpProxyForEip固定出口ip,将代理服务器IP列表填入白名单显示证书错误,uniCloud.httpProxyForEip能否传入微信证书,请问有没有办法解决?
更多关于uni-app 阿里云uniCloud.httpProxyForEip固定出口ip不能传入微信支付商户证书的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个代理请求是不支持证书的,只能改用微信支付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代理功能确实存在这个限制。
解决方案可以考虑以下几种:
- 使用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')
});