| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.order.api.feignClient.ChargingOrderClient; |
| | | import com.ruoyi.order.api.feignClient.OrderClient; |
| | | import com.ruoyi.payment.api.vo.IcbcPaymentReq; |
| | | import com.ruoyi.payment.api.vo.IcbcPaymentResp; |
| | | import com.ruoyi.payment.api.vo.IcbcRefundReq; |
| | |
| | | |
| | | @Resource |
| | | private ChargingOrderClient chargingOrderClient; |
| | | |
| | | @Resource |
| | | private OrderClient orderClient; |
| | | |
| | | @PostMapping("/payment") |
| | | public R<IcbcPaymentResp> payment(@RequestBody IcbcPaymentReq req) { |
| | |
| | | callback.get("out_trade_no"), callback.get("transaction_id")); |
| | | } |
| | | log.info("工行支付回调解析结果:{}", JSON.toJSONString(callback)); |
| | | dispatchChargingOrderCallback(callback); |
| | | dispatchPaymentCallback(callback); |
| | | success = true; |
| | | } catch (Exception e) { |
| | | log.error("工行支付回调处理失败,已记录原始请求并返回fail等待重试", e); |
| | |
| | | return values == null || values.length == 0 ? null : values[0]; |
| | | } |
| | | |
| | | private void dispatchChargingOrderCallback(Map<String, String> callback) { |
| | | void dispatchPaymentCallback(Map<String, String> callback) { |
| | | String outTradeNo = callback.get("out_trade_no"); |
| | | String transactionId = callback.get("transaction_id"); |
| | | String attach = callback.get("attach"); |
| | |
| | | log.info("工行测试支付回调成功,订单号:{},流水号:{},支付类型:{}", outTradeNo, transactionId, attach); |
| | | return; |
| | | } |
| | | if (outTradeNo != null && outTradeNo.startsWith("HY")) { |
| | | orderClient.vipCallBack(outTradeNo, transactionId); |
| | | return; |
| | | } |
| | | if (outTradeNo != null && outTradeNo.startsWith("GW")) { |
| | | orderClient.callBack(outTradeNo, transactionId); |
| | | return; |
| | | } |
| | | if (outTradeNo == null || !outTradeNo.startsWith("CD")) { |
| | | throw new IllegalArgumentException("工行回调订单类型不支持:" + outTradeNo); |
| | | } |
| | | Integer paymentType = Integer.valueOf(attach); |
| | | if (Integer.valueOf(1).equals(paymentType)) { |
| | | chargingOrderClient.chargingOrderWXCallback(outTradeNo, transactionId, attach); |