weixin-java-pay对接微信V3支付记录
https://github.com/binarywang/weixin-java-pay-demo
这个demo里, 没有v3版本的配置, 这里记录一下
v3支付, 相对之前的版本来说, 更为安全, 也相对繁琐一些, 而且请求和响应都使用了json格式的数据
1. 配置
发起支付所需的配置有三个证书文件, 在商户后台申请
apiclient_cert.p12
apiclient_key.pem
apiclient_cert.pem
完整配置
@Bean @ConditionalOnMissingBean public WxPayService wxService() { WxPayConfig payConfig = new WxPayConfig(); payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId())); payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId())); payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath())); payConfig.setPrivateKeyPath(StringUtils.trimToNull(this.properties.getPrivateKeyPath())); payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath())); payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key())); WxPayService wxPayService = new WxPayServiceImpl(); wxPayService.setConfig(payConfig); return wxPayService; }
2. 发起支付
WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request(); WxPayUnifiedOrderV3Result.JsapiResult result = wxService.createOrderV3(TradeTypeEnum.JSAPI, request); System.out.println(result);
3. 回调处理
WxPayOrderNotifyV3Result result = wxService.parseOrderNotifyV3Result("notifyData", new SignatureHeader()); WxPayOrderNotifyV3Result.DecryptNotifyResult notifyResult = result.getResult(); WxPayNotifyResponse.success("成功");
SignatureHeader内的属性都可以在文档内找到获取方法
注意
支付通知http应答码为200或204才会当作正常接收,当回调处理异常时,应答的HTTP状态码应为500,或者4xx。
没什么好说的, v3支付使用json进行数据交互, 但weixin-java-pay提供的应答方法是以xml格式返回的, 可以自定义对象返回json
上一篇:
uniapp开发微信小程序-2.页面制作