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

04336d15f8b57e000ed1ff6b77fe34b3.png

微信企业付款到银行卡,这个是微信支付商户的一个功能,开通条件或者什么介绍可以到官方文档查看,开通步骤还有下载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, '')));

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文件内就行:

d3098b57acbf9fa56cf1754a8d6799dc.png

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

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

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

我的微信:graent_hu

欢迎扫码加我的微信好友,有什么问题我们可以一起探讨,有什么需要也随时欢迎发消息给我~

转载请注明出处:

本文链接:https://www.wlyc.cn/post-183.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值