时间:2023-05-22 01:24:02 | 来源:网站运营
时间:2023-05-22 01:24:02 来源:网站运营
微信PC网站支付采坑记-微信Native支付申请接入:<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay-WxPay</artifactId> <version>2.7.3</version></dependency>
public class WxPayConfig { /** * 设置微信公众号或者小程序等的appid. */ @Value("${wx.pay.appId}") private String appId; /** * 微信支付商户号. */ @Value("${wx.pay.mchId}") private String mchId; /** * 微信支付商户密钥. */ @Value("${wx.pay.mchKey}") private String mchKey; /** * 异步回调地址 */ @Value("${wx.pay.notifyUrl}") private String notifyUrl;}
wxpay.appId=申请的服务号的appidwxpay.appSecret=申请的服务号的appSecretwxpay.mchId=申请的商户号wxpay.partnerKey=商户号的partnerKeywxpay.certPath=商户号p12证书wxpay.domain=扫码支付完成的异步校验通知url
Map<String, String> params = UnifiedOrderModel .builder() .appid(wxPayConfig.appId) .mch_id(wxPayConfig.mchId) .nonce_str(WxPayKit.generateStr()) .body("赵汤圆支付") .attach("赵汤圆支付踩坑") .out_trade_no(createOrderRequestDto.getId()) .total_fee(total_fee) .spbill_create_ip(ip) .notify_url(wxPayConfig.domain) .trade_type(TradeType.NATIVE.getTradeType()) .build() .createSign(wxPayConfig.partnerKey, SignType.HMACSHA256); String xmlResult = WxPayApi.pushOrder(false, params); Map<String, String> result = WxPayKit.xmlToMap(xmlResult); String returnCode = result.get("return_code"); String returnMsg = result.get("return_msg"); System.out.println(returnMsg); if (!WxPayKit.codeIsOk(returnCode)) { // 异常状态判断 替换成你自己的 throw new ServiceException(ErrorTypeEnum.RECHARGE_ERROR); } String resultCode = result.get("result_code"); if (!WxPayKit.codeIsOk(resultCode)) { // 异常状态判断 替换成你自己的 throw new ServiceException(ErrorTypeEnum.RECHARGE_ERROR); } //生成预付订单success String qrCodeUrl = result.get("code_url"); try { // 生成下单的二维码,返回给客户端显示 ByteArrayOutputStream out = new ByteArrayOutputStream(); QrCodeKit.encodeOutPutSteam(out, qrCodeUrl, BarcodeFormat.QR_CODE, 3, ErrorCorrectionLevel.H, "png", 200, 200); BASE64Encoder encoder = new BASE64Encoder(); imgBase64Str = encoder.encode(out.toByteArray()); } catch (IOException e) { e.printStackTrace(); } return imgBase64Str; ``` 5、异步通知 ```java String xmlMsg = HttpKit.readData(request); logger.info("支付通知=" + xmlMsg); Map<String, String> params = WxPayKit.xmlToMap(xmlMsg); String returnCode = params.get("return_code"); // 注意重复通知的情况,同一订单号可能收到多次通知,请注意一定先判断订单状态 // 注意此处签名方式需与统一下单的签名类型一致 if (WxPayKit.verifyNotify(params, wxPayConfig.partnerKey, SignType.HMACSHA256)) { if (WxPayKit.codeIsOk(returnCode)) { // 更新订单信息 // 发送通知等 String out_trade_no = params.get("out_trade_no"); String total_fee = params.get("total_fee"); Map<String, String> xml = new HashMap<String, String>(2); xml.put("return_code", "SUCCESS"); xml.put("return_msg", "OK"); return WxPayKit.toXml(xml); } }
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
关键词:支付,申请