首先说一下微信支付已上线企业付款至银行卡功能。商户可以将商户号余额付款至指定的收款银行账户。通过指定收款银行账户户名、卡号,以及收款银行信息即可实现付款。但是功能目前为灰度开放,已灰度新资金流直连普通商户及普通受理模式子商户,其他商户类型将在后续开放。也就是说目前并不是所有商户都有此权限,所以在开发时需要注意是否有了对应的权限,下面看一下具体的实现步骤。
//接口地址
"https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank"
同样调用接口需要上相证书(《PHP使用CURL携带ssl证书和秘钥请求接口代码》),下面下你给出请求接口时需要发送的参数,以PHP代码为例:
[
'mch_id' => self::MCHID,//商户号
'partner_trade_no' => date('YmdHis'),//商户付款单号
'nonce_str' => md5(time()), //随机串
'enc_bank_no' => $data['enc_bank_no'],//收款方银行卡号RSA加密
'enc_true_name' => $data['enc_true_name'],//收款方姓名RSA加密
'bank_code' => $data['bank_code'],//收款方开户行
'amount' => $data['amount'],//付款金额
];
与其他接口不同的是收款方的银行账号和姓名需要RSA加密,那这个怎么做呢,其实也不难就是需要多调用一个接口:
//获取RSA加密公钥接口地址
"https://fraud.mch.weixin.qq.com/risk/getpublickey"
//发送参数
[
'mch_id' => self::MCHID,//商户ID
'nonce_str' => md5(time()),
'sign_type' => 'MD5'
];
接口会返回PKCS#1格式的公钥,如果使用PHP语言需要转换为KCS#8可以使用如下指令
openssl rsa -RSAPublicKey_in -in pcs1.pem -out pcs8.pem
这样转换之后就可以用了,RSA加密的代码可以参考《使用PHP实现RSA算法的加密和解密》,其他的处理逻辑和微信现金红包或者企业付款到零钱是一致的,如果有困难可以参照前面的文章。
看下这篇文章有详细说明https://www.liminghulian.com/article/40
回复 @ root:老师 为什么调用获取公钥接口地址返回为空呢