您的位置:首页 > 移动开发 > 微信开发

微信企业支付到个人银行卡

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());
    }
     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信企业付款