微信v3JsApi支付和支付回调Dome
@Value("${wxpay.notify_url}")
private String wxpayNotifyUrl;
@Value("${wxpay.key}")
private String key;
@Value("${wxpay.mch_id}")
private String mchId;
@Value("${wxpay.v3key}")
private String v3key;
@Value("${wxpay.app_id}")
private String appId;
@Value("${wxpay.mchSerialNo}")
private String mchSerialNo;
private static String privateKey="-----BEGIN PRIVATE KEY-----\n"+
"----------------------------------\n"+
"-----END PRIVATE KEY-----\n";
private PrivateKey merchantPrivateKey;
private CloseableHttpClient httpClient;
private AutoUpdateCertificatesVerifier verifier;
/**
* 证书验证
* @return
* @throws UnsupportedEncodingException
*/
private CloseableHttpClient WxOrderPay() throws UnsupportedEncodingException {
merchantPrivateKey = PemUtil.loadPrivateKey(
new ByteArrayInputStream (privateKey.getBytes("utf-8")));
byte[] bs = v3key.getBytes("utf-8");
//使用自动更新的签名验证器,不需要传入证书
verifier = new AutoUpdateCertificatesVerifier (
new WechatPay2Credentials (mchId, new PrivateKeySigner (mchSerialNo, merchantPrivateKey)),
bs);
httpClient = WechatPayHttpClientBuilder.create()
.withMerchant(mchId, mchSerialNo, merchantPrivateKey)
.withValidator(new WechatPay2Validator (verifier))
.build();
return httpClient;
}
//证书
CloseableHttpClient client = WxOrderPay ();
HttpPost httpPost = null;
//jsapi支付
//微信下单接口所需要的参数
httpPost = getWxJsapiHttpPost (param, orderId, outTradeNo,amount);
//完成签名并执行请求
CloseableHttpResponse response = client.execute(httpPost);
log.info ("请求返回的参数为={}",response.toString ());
try {
if(param.getTradeType().equals("JSAPI"