import java.util.SortedMap;
import java.util.TreeMap;
import com.wsz.config.WChatInfo;
import com.wsz.utils.GetRSA;
import com.wsz.utils.HttpClientCustomSSL;
import com.wsz.utils.SignUtils;
import com.wsz.utils.StringUtils;
import com.wsz.utils.XMLUtils;
public class TestWChatToBank {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String source ="姓名";
String pank = "卡号";
//注意 这里的 publicKeyPKCS8 是上一步获取微信支付公钥后经openssl 转化成PKCS8格式的公钥
String publicKeyPKCS8 =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsCnQkpccue430Pwzg3h5"+"\r"+
"1lF7HJs0k4UMh5UinQ2ShDtNwP2lAXlsMLL4+yN5Z6f6Eta63QRbCnTYe7LaaEG1"+"\r"+
"zeTxBgLlccTx2SFFIHDHlUHbdxPEqKbH2QjzZYdnU4JWFAuPzyvsakSqi4akrGwZ"+"\r"+
"h6IqWIXxKexF4xGC1x3SyFFHF0/lBbTDvQXrHwYhFXPOwM4OMe1N63pkrGCHt888"+"\r"+
"D/P7rtqBYU4jdc2PJj+tasii85R/wWcuAdnZgZDEEn9ex317QeiSRD2xTnIe3gkt"+"\r"+
"yiS7IRlXGAB3Hh/QoRUMc2UsuVuv2/Gn0MiwRRow"+"\r"+
"zwIDAQ"+"\r";
String enc_true_name =GetRSA.getRSA(source,publicKeyPKCS8);
String enc_bank_no = GetRSA.getRSA(pank,publicKeyPKCS8);
String bank_code = "1066";
String amount = "1000";
String desc ="test";
String partner_trade_no = "2018013101635";
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);
System.out.println("获取签名成功"+sign1);
//请求企业付款
TreeMap<String, String> tmap1 = new TreeMap<String, String>();
tmap1.put("mch_id", WChatInfo.MCH_ID);
System.out.println("商户号:"+WChatInfo.MCH_ID);
tmap1.put("partner_trade_no", partner_trade_no);
System.out.println("商户企业付款单号:"+partner_trade_no);
tmap1.put("nonce_str", nonce_str1);
System.out.println("随机字符串:"+nonce_str1);
tmap1.put("enc_bank_no", enc_bank_no);
System.out.println("收款方银行卡号:"+enc_bank_no);
tmap1.put("enc_true_name", enc_true_name);
System.out.println("收款方用户名:"+enc_true_name);
tmap1.put("bank_code", bank_code);
System.out.println("收款方开户行:"+bank_code);
tmap1.put("amount", amount);
System.out.println("付款金额:"+amount);
tmap1.put("desc", desc);
System.out.println("付款说明:"+desc);
tmap1.put("sign", sign1);
String xml2 = XMLUtils.getRequestXml(tmap1);
System.out.println(xml2);
String xml3= HttpClientCustomSSL.httpClientResultPANK(xml2);
System.out.println(xml3);
}
}
输出报错:
下一步
获取签名成功95B199417CF2F81993A0D4BEA025D07C
商户号:xxxxxxx
商户企业付款单号:2018013101635
随机字符串:Z9p9TVVmS9Ig9A6D36lmyywuWLxY
收款方银行卡号:GbwYIm3roWI1YvqUES+5VcYGzkKNVfD6h4oUp9M+MLtQGAsiL5INlYLpBcibNR11Mu9jIofmZ0B8SNO+30JCZoE8M8LclQU6MmU/NP+cyy+Ghqe/uk00DHlM4DC+BZXfduR7t2gGPMiV9DAzNElDHqUjJ75uAz0a54ya487/quGX8FW/xDCcDdj7v/Z/OayST9LKi0vSDegBZmodSMl6fH13xDB4Q+foV+egYnDWysFOq4sIqzuPBVht+JiCYnkZmcZ76oAGDDmgRFXt8++K8yFA5S8YyqyK73iSb7hifMti2EK+rcp3WJaaUCVS9y+oI+/yYlplz9PCKFMFNxf44w==
收款方用户名:CfvCPcSVsO0ebNMAgHUWSFS3RDAzAmhFprNqPK967FIrYaSJQPfz34rdsu1qwZJgIZcj7YJ0y7rzRBXBi4gMtazl/HAkueU9S0ZC3NCXc4mo7FTXRE/B6Ft3OZOW9yJPxwYt5Z6Q/SNic6lIuYisqA/V+46Bc7WfIgbiG4zr9zgHFfJz8DO9TU4yW7AKei+LiSjiIXwvD4mnti4apvr6BW5Hdo+zE0I2H9GFnUiinwTX+m/PKLmIbcfy1cIIdAsUuRCltNN3fEhlo1WkIT7ax9UlLgoiWBehQwkcP4BLTwg7ZmT7xepqzME3trIM3REI/qISREw8PX9K0SKh8/c7XA==
收款方开户行:1066
付款金额:1000
付款说明:test
<xml><amount>1000</amount><bank_code>1066</bank_code><desc>test</desc><enc_bank_no>GbwYIm3roWI1YvqUES+5VcYGzkKNVfD6h4oUp9M+MLtQGAsiL5INlYLpBcibNR11Mu9jIofmZ0B8SNO+30JCZoE8M8LclQU6MmU/NP+cyy+Ghqe/uk00DHlM4DC+BZXfduR7t2gGPMiV9DAzNElDHqUjJ75uAz0a54ya487/quGX8FW/xDCcDdj7v/Z/OayST9LKi0vSDegBZmodSMl6fH13xDB4Q+foV+egYnDWysFOq4sIqzuPBVht+JiCYnkZmcZ76oAGDDmgRFXt8++K8yFA5S8YyqyK73iSb7hifMti2EK+rcp3WJaaUCVS9y+oI+/yYlplz9PCKFMFNxf44w==</enc_bank_no><enc_true_name>CfvCPcSVsO0ebNMAgHUWSFS3RDAzAmhFprNqPK967FIrYaSJQPfz34rdsu1qwZJgIZcj7YJ0y7rzRBXBi4gMtazl/HAkueU9S0ZC3NCXc4mo7FTXRE/B6Ft3OZOW9yJPxwYt5Z6Q/SNic6lIuYisqA/V+46Bc7WfIgbiG4zr9zgHFfJz8DO9TU4yW7AKei+LiSjiIXwvD4mnti4apvr6BW5Hdo+zE0I2H9GFnUiinwTX+m/PKLmIbcfy1cIIdAsUuRCltNN3fEhlo1WkIT7ax9UlLgoiWBehQwkcP4BLTwg7ZmT7xepqzME3trIM3REI/qISREw8PX9K0SKh8/c7XA==</enc_true_name><mch_id><![CDATA[1496858762]]></mch_id><nonce_str><![CDATA[Z9p9TVVmS9Ig9A6D36lmyywuWLxY]]></nonce_str><partner_trade_no>2018013101635</partner_trade_no><sign><![CDATA[95B199417CF2F81993A0D4BEA025D07C]]></sign></xml>
路径:E:\wx\cert\apiclient_cert.p12
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[参数错误,请检查参数]]></return_msg><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[SYSTEMERROR]]></err_code><err_code_des><![CDATA[解密真实姓名或银行卡号出错]]></err_code_des><mch_id><![CDATA[xxxxxxx]]></mch_id></xml>
该问题已经得到解决:
很可能就是你的公钥问题,还有就是填充方式