微信企业支付到个人银行卡
2018-03-07 11:29
288 查看
最近公司接通了微信的新功能企业支付到银行卡,记录一下,一定要注意,不同银行的银行编码不一样,详情见微信官方文档,这个坑要仔细,因为调用api成功后微信付款失败不会告诉你失败原因!
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String source =""; //持卡人姓名
String pank = ""; //银行卡号
//注意 这里的 publicKeyPKCS8 是微信支付公钥后经openssl 转化成PKCS8格式的公钥,需要转换一次,详情见微信官方文档
String publicKeyPKCS8 = "";
String enc_true_name =GetRSA.getRSA(source,publicKeyPKCS8);
String enc_bank_no = GetRSA.getRSA(pank,publicKeyPKCS8);
String bank_code = "1002"; //这里一定要注意,不同银行的银行编码不一样,详情见微信官方文档
String amount = "100"; //微信单位为分,必须是整数
String desc ="测试开发企业付款到银行卡";
//商户企业付款单号
String partner_trade_no = StringUtils.getStrRandom(28);
//随机字符串
String nonce_str1 = StringUtils.getStrRandom(28);
//获取签名
SortedMap<Object,Object> parameters1 = new TreeMap<Object,Object>();
parameters1.put("mch_id", WChatInfo.MCH_ID);
parameters1.put("partner_trade_no", partner_trade_no);
parameters1.put("nonce_str", nonce_str1);
parameters1.put("enc_bank_no", enc_bank_no);
parameters1.put("enc_true_name", enc_true_name);
parameters1.put("bank_code", bank_code);
parameters1.put("amount", amount);
parameters1.put("desc", desc);
String sign1 = SignUtils.creatSign(WChatInfo.CHARSET, parameters1);
//请求企业付款
TreeMap<String, String> tmap1 = new TreeMap<String, String>();
tmap1.put("mch_id", WChatInfo.MCH_ID);
tmap1.put("partner_trade_no", partner_trade_no);
tmap1.put("nonce_str", nonce_str1);
tmap1.put("enc_bank_no", enc_bank_no);
tmap1.put("enc_true_name", enc_true_name);
tmap1.put("bank_code", bank_code);
tmap1.put("amount", amount);
tmap1.put("desc", desc);
tmap1.put("sign", sign1);
String xml2 = XMLUtils.getRequestXml(tmap1);
String xml3= HttpClientCustomSSL.httpClientResultPANK(xml2);
EnterpriceToCustomerByCard enterpriceToCustomerByCard = EnterpricePayByBankXmlToBeanUtils.parseXmlToMap(xml3);
//8.0根据map中的result_code AND return_code来判断是否成功与失败~~写自己的逻辑
if("SUCCESS".equalsIgnoreCase(enterpriceToCustomerByCard.getResult_code())
&&
"SUCCESS".equalsIgnoreCase(enterpriceToCustomerByCard.getReturn_code())){
//8表示退款成功
//TODO写自己的逻辑
//TODO 更改自己的申请单状态,生成记录等等
System.out.println(enterpriceToCustomerByCard.getReturn_msg());
}else{
//9 表示退款失败
//TODO 调用service的方法 ,存储失败提现的记录咯
System.out.println(enterpriceToCustomerByCard.getReturn_msg());
System.out.println(enterpriceToCustomerByCard.getErr_code_des());
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String source =""; //持卡人姓名
String pank = ""; //银行卡号
//注意 这里的 publicKeyPKCS8 是微信支付公钥后经openssl 转化成PKCS8格式的公钥,需要转换一次,详情见微信官方文档
String publicKeyPKCS8 = "";
String enc_true_name =GetRSA.getRSA(source,publicKeyPKCS8);
String enc_bank_no = GetRSA.getRSA(pank,publicKeyPKCS8);
String bank_code = "1002"; //这里一定要注意,不同银行的银行编码不一样,详情见微信官方文档
String amount = "100"; //微信单位为分,必须是整数
String desc ="测试开发企业付款到银行卡";
//商户企业付款单号
String partner_trade_no = StringUtils.getStrRandom(28);
//随机字符串
String nonce_str1 = StringUtils.getStrRandom(28);
//获取签名
SortedMap<Object,Object> parameters1 = new TreeMap<Object,Object>();
parameters1.put("mch_id", WChatInfo.MCH_ID);
parameters1.put("partner_trade_no", partner_trade_no);
parameters1.put("nonce_str", nonce_str1);
parameters1.put("enc_bank_no", enc_bank_no);
parameters1.put("enc_true_name", enc_true_name);
parameters1.put("bank_code", bank_code);
parameters1.put("amount", amount);
parameters1.put("desc", desc);
String sign1 = SignUtils.creatSign(WChatInfo.CHARSET, parameters1);
//请求企业付款
TreeMap<String, String> tmap1 = new TreeMap<String, String>();
tmap1.put("mch_id", WChatInfo.MCH_ID);
tmap1.put("partner_trade_no", partner_trade_no);
tmap1.put("nonce_str", nonce_str1);
tmap1.put("enc_bank_no", enc_bank_no);
tmap1.put("enc_true_name", enc_true_name);
tmap1.put("bank_code", bank_code);
tmap1.put("amount", amount);
tmap1.put("desc", desc);
tmap1.put("sign", sign1);
String xml2 = XMLUtils.getRequestXml(tmap1);
String xml3= HttpClientCustomSSL.httpClientResultPANK(xml2);
EnterpriceToCustomerByCard enterpriceToCustomerByCard = EnterpricePayByBankXmlToBeanUtils.parseXmlToMap(xml3);
//8.0根据map中的result_code AND return_code来判断是否成功与失败~~写自己的逻辑
if("SUCCESS".equalsIgnoreCase(enterpriceToCustomerByCard.getResult_code())
&&
"SUCCESS".equalsIgnoreCase(enterpriceToCustomerByCard.getReturn_code())){
//8表示退款成功
//TODO写自己的逻辑
//TODO 更改自己的申请单状态,生成记录等等
System.out.println(enterpriceToCustomerByCard.getReturn_msg());
}else{
//9 表示退款失败
//TODO 调用service的方法 ,存储失败提现的记录咯
System.out.println(enterpriceToCustomerByCard.getReturn_msg());
System.out.println(enterpriceToCustomerByCard.getErr_code_des());
}
}
相关文章推荐
- 【微信付款】企业支付个人api
- java 微信公众号支付,微信提现到银行卡,微信企业付款到银行卡demo
- 微信红包,企业支付完整命名空间版
- java-微信--企业向个人付款
- thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5
- java实现微信企业付款到个人
- 公众号支付接口开发,生成签名,随机字符串,微信企业支付开发
- 开通微信企业付款功能,申请公众号企业付款到个人
- 结合业务设计公众号支付流程,微信企业支付开发
- 微信企业付款到个人钱包引发的坑之反思~
- 支付狗提供支付宝、微信个人网站收款接口
- tp3.2中企业向个人微信钱包零钱付款
- 微信企业付款到个人钱包引发的坑之反思~
- java实现微信企业付款到个人功能
- 关于微信新出的企业付款到银行卡API的问题(二)
- 微信支付证书cert是怎么提交给微信服务器的,微信企业支付开发
- tp3.2中企业向个人微信钱包零钱付款
- 查询微信企业付款结果,获取公众号企业付款给个人的结果状态
- 微信企业付款到个人