记录下用微信云托管做微信支付到零钱包 需要数字证书存到数据库里如何操作的过程
发布于 3 年前 作者 shenqiang 2727 次浏览 来自 分享

  公司项目需要开发一个微信支付到零钱包的功能。

   因为使用的是SaaS系统,结合微信云托管,因此每个商户的数字证书最好是存到数据库,直接通过数据库来读取。如果存到云存储,每次还需要通过云存储下载,然后再生成。

     而curl 只能使用文件路径,无法通过字符串传值。因此必须在服务器生成一个临时的文件,然后传递这个路径地址到curl,在网上找了几个同行提供的方法 最后调试成功。

   因此在这里记录下分享给大家。

   首先微信支付到零钱包的功能代码就不贴了,基本上网上一搜很多。主要就发下在微信支付到零钱包的时候,用数字证书,如果不是把数字 证书放在自己的服务器目录里,如何来解决。

 

 主要用的是这个方法

 function getTmpPathByContent($content){

$myfileUri= tempnam('','cert_'); //临时文件路径

$needle= fopen($myfileUri,'r+'); //打开文件

fwrite($needle,$content); //写入内容

return$myfileUri; // 返回路径

}

 

主要方法就是上面这个

然后在curl的时候就可以这样了

 

$sslCertUri = getTmpPathByContent(’数据库里存的证书内容‘);

$sslKeyUri=  getTmpPathByContent('数据库里存的整数内容');

 

curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');//证书类型

curl_setopt($ch, CURLOPT_SSLCERT,$sslCertUri );//证书位置

curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型

curl_setopt($ch, CURLOPT_SSLKEY, $sslKeyUri);//证书位置

 上面是核心的关键代码,基本上用这个就可以解决问题了。

 然后因为用的是微信云托管的代码,在本地调试成功了,上到服务器上又遇到这个问题:

Call to undefined function simplexml_load_string()

 

按照网上提示的 安装 php7-xml php7-xmlrpc 都没效果 最后再安装了这个才生效 php7-simplexml

回到顶部