对接微信付款到银行卡来实现资金提现功能
【摘要】 使用微信提供的付款到银行卡接入很灵活,可应用于多行业平台内用户分佣等场景。可以和自身业务系统直接集成实现转账功能,无需频繁登录微信支付商户平台转账。
使用场景
方便快捷
功能实现
微信支付付款到银行卡使用的是V2接口,调用/mmpaysptrans/pay_bank,实现转账功能。
public void payBank() {
Map<String, String> result = new HashMap<String, String>();
SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
parameters.put("mch_id", "商户号");
parameters.put("partner_trade_no", "商户付款单号");
parameters.put("nonce_str", "随机字符串");
parameters.put("enc_bank_no", "收款方银行卡号,需要加密");
parameters.put("enc_true_name", "收款方用户名,需要加密");
parameters.put("bank_code", "收款方开户行编号");
parameters.put("amount", "付款金额,单位分,大于0的整数");
parameters.put("desc", "付款到银行卡付款说明,即订单备注");
String sign = PayUtils.createSign("UTF-8", parameters, "api密钥");
parameters.put("sign", sign);
String requestXML = PayUtils.getRequestXml(parameters);
logger.info("微信企业付款到银行卡请求参数============:" + requestXML);
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
FileInputStream instream = new FileInputStream(new File("apiclient_cert.p12证书路径"));
try {
keyStore.load(instream, "商户号".toCharArray());
} finally {
instream.close();
}
SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, "商户号".toCharArray()).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },
null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
HttpPost httpost = HttpClientConnectionManager.getPostMethod("https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank");
httpost.setEntity(new StringEntity(requestXML, "UTF-8"));
HttpResponse weixinResponse = httpClient.execute(httpost);
String result = EntityUtils.toString(weixinResponse.getEntity(), "UTF-8");
logger.info("微信企业付款到银行卡返回结果"+result);
Map<String, String> map = XMLUtils.doXMLParse(result);
if ("success".equalsIgnoreCase((String) map.get("return_code"))) {
logger.info("微信企业付款到银行卡成功");
} else {
logger.info("微信企业付款到银行卡失败");
}
} catch (Exception e) {
logger.info("微信企业付款到银行卡失败");
}
}
注意事项
资金由商户号转出来的基本都需要使用证书,就是从微信支付商户平台下载的那个api证书,apiclient_cert.pem和apiclient_key.pem两个证书是在PHP环境中使用,apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。收款方银行卡号和收款方用户名必须先采用标准RSA公钥加密后再传入。
转账额度
涉及到转账,自然就有限额的问题,每个商户号单日最高转账10万元,单次转账限额2万元,每个商户号每天付款给同一银行卡的限额为2万元。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)