68素材站

微信企业付款到银行卡RSA公钥获取生成的步骤和可能遇到的问题的处理办法

68素材 10797 0

微信企业付款到银行卡,这个是微信支付商户的一个功能,开通条件或者什么介绍可以到官方文档查看,开通步骤还有下载API证书下载这些,可以自行处理,也比较简单,这里从获取RSA加密公钥开始:

一、获取RSA加密公钥:

调用获取RSA公钥API获取RSA公钥,落地成本地文件,假设为public.pem,确定public.pem文件的存放路径,同时修改代码中文件的输入路径,加载RSA公钥,用标准的RSA加密库对敏感信息进行加密,选择RSA_PKCS1_OAEP_PADDING填充模式, 得到进行rsa加密并转base64之后的密文,将密文传给微信侧相应字段,如付款接口(enc_bank_no/enc_true_name)

下面代码默认输出PKCS#1格式的公钥,我们需要这个,所以先写一个接口去请求一下,然后将证书文件保存一下。请求下面这个接口方法会返回证书信息。

public function GetRsa()
    {
        $data = [
            'mch_id' =>'your mch_id',
            'nonce_str' => '随机字符串(32)',
            'sign_type' => 'MD5',
        ];
        $data['sign'] = makeSign($data, $this->api_key); // 生成签名,不具体的写了,自己根据实际情况处理
 
        $xml = ArrayToXml($data);
        $url = 'https://fraud.mch.weixin.qq.com/risk/getpublickey';
        $arr = CurlPostSsl($url, $xml, $this->certificate_path);
        var_dump(self::XmlToArray(strstr($arr, '<xml>')));
        exit;
}

二、RSA密钥PKCS#1转PKCS#8:

微信支付官方给出的描述是

PKCS#1 转 PKCS#8:
openssl rsa -RSAPublicKey_in -in  -pubout
PKCS#8 转 PKCS#1:
openssl rsa -pubin -in  -RSAPublicKey_out

需要在服务器上面执行,如果出现错误,在检查看一下,一般出错都是由于一些细节的问题:

openssl rsa -RSAPublicKey_in -in pkcs1.pem -pubout > pkcs8.pem

执行完成之后,如果出现下方的情况,说明成功了,复制之后放到.pem文件内就行:

9bec1587135767.png

至于使用,请参考官方说明,如果你是使用的easywechat之类的库的话,使用就非常简单了,只需配置好位置即可,当然文件比较敏感,可以放在敏感的目录,安全嘛!

当然如果你是适应的easywechat提供的工具生成的话,生成的pem是不能直接使用的,里面只有一行,首先要转换成每行64个字符的pem文件,之后在使用上方的方法转换成PKCS#8的格式,然后才能使用,不知道为什么easywechat这里没有直接转换,第一次的时候确实比较懵,希望对你有所帮助吧

详细这个生成之后,就简单了



发表评论 (已有0条评论

还木有评论哦,快来抢沙发吧~