对接微信支付退款证书之坑
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
背景
项目需要直接对接微信支付,实现小程序支付和退款功能,支付不需要证书,但是退款的话需要证书支持
- 语言:php
- 开发环境win
- 测试环境centos
坑点1:路径问题
网上查到比较多的答案是在Linux系统下采用虚拟路径,Windows系统下采用绝对路径,但是在开发的过程中,发现在Windows系统下用绝对路径OK,但是放到测试环境的时候,出错了,报curl:58错误。测试环境改成绝对路径就可以通过用例了。
参考PHP代码:
//在微信官方提供的demo中的Wxpay.Api.php中的postXmlCurl方法
//设置证书
//使用证书:cert 与 key 分别属于两个.pem文件
curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLCERT, __DIR__ .WxPayConfig::SSLCERT_PATH);
curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
curl_setopt($ch,CURLOPT_SSLKEY, __DIR__ .WxPayConfig::SSLKEY_PATH);
坑点2:证书存放目录
证书需要放到一个文件名问cert
的文件夹下面,不然还是会报找不到证书的错误
坑点3:微信官方文档提供的OpenSSL命令跑出来的证书有问题
- 官方提供:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
输出样例
Bag Attributes
localKeyID: ********************************
friendlyName: Tenpay Certificate
Key Attributes: <No Attributes>
- 最后正确的命令:openssl pkcs12 -nodes -clcerts -in apiclient_cert.p12 -out apiclient_key.pem
输出样例
Bag Attributes
localKeyID: **************************************
friendlyName: Tenpay Certificate
subject=/CN=1245052102/O=**************/C=CN/ST=GuangDong/L=ShenZhen
issuer=/C=CN/O=Tenpay.com/OU=Tenpay.com CA Center/CN=Tenpay.com Root CA
-----BEGIN CERTIFICATE-----
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
-----END CERTIFICATE-----
Bag Attributes
localKeyID:**********************************
friendlyName: Tenpay Certificate
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
官方提供的命令中的-nocerts
表示不输出任何证书,修改后的-clicerts
表示仅输出客户端证书
具体命令可以看看官网文档的描述:https://www.openssl.org/docs/manmaster/man1/pkcs12.html
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献1条内容
所有评论(0)