首先说一下微信支付已上线企业付款至银行卡功能。商户可以将商户号余额付款至指定的收款银行账户。通过指定收款银行账户户名、卡号,以及收款银行信息即可实现付款。但是功能目前为灰度开放,已灰度新资金流直连普通商户及普通受理模式子商户,其他商户类型将在后续开放。也就是说目前并不是所有商户都有此权限,所以在开发时需要注意是否有了对应的权限,下面看一下具体的实现步骤。

//接口地址
"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算法的加密和解密》,其他的处理逻辑和微信现金红包或者企业付款到零钱是一致的,如果有困难可以参照前面的文章。