時(shí)間:2023-05-22 01:24:02 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-05-22 01:24:02 來源:網(wǎng)站運(yùn)營(yíng)
微信PC網(wǎng)站支付采坑記-微信Native支付申請(qǐng)接入:<dependency> <groupId>com.github.javen205</groupId> <artifactId>IJPay-WxPay</artifactId> <version>2.7.3</version></dependency>
public class WxPayConfig { /** * 設(shè)置微信公眾號(hào)或者小程序等的appid. */ @Value("${wx.pay.appId}") private String appId; /** * 微信支付商戶號(hào). */ @Value("${wx.pay.mchId}") private String mchId; /** * 微信支付商戶密鑰. */ @Value("${wx.pay.mchKey}") private String mchKey; /** * 異步回調(diào)地址 */ @Value("${wx.pay.notifyUrl}") private String notifyUrl;}
wxpay.appId=申請(qǐng)的服務(wù)號(hào)的appidwxpay.appSecret=申請(qǐng)的服務(wù)號(hào)的appSecretwxpay.mchId=申請(qǐng)的商戶號(hào)wxpay.partnerKey=商戶號(hào)的partnerKeywxpay.certPath=商戶號(hào)p12證書wxpay.domain=掃碼支付完成的異步校驗(yàn)通知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)) { // 異常狀態(tài)判斷 替換成你自己的 throw new ServiceException(ErrorTypeEnum.RECHARGE_ERROR); } String resultCode = result.get("result_code"); if (!WxPayKit.codeIsOk(resultCode)) { // 異常狀態(tài)判斷 替換成你自己的 throw new ServiceException(ErrorTypeEnum.RECHARGE_ERROR); } //生成預(yù)付訂單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"); // 注意重復(fù)通知的情況,同一訂單號(hào)可能收到多次通知,請(qǐng)注意一定先判斷訂單狀態(tài) // 注意此處簽名方式需與統(tǒng)一下單的簽名類型一致 if (WxPayKit.verifyNotify(params, wxPayConfig.partnerKey, SignType.HMACSHA256)) { if (WxPayKit.codeIsOk(returnCode)) { // 更新訂單信息 // 發(fā)送通知等 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); } }
本文由博客群發(fā)一文多發(fā)等運(yùn)營(yíng)工具平臺(tái) OpenWrite 發(fā)布
關(guān)鍵詞:支付,申請(qǐng)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。