| | |
| | | import com.talentcard.server.business.order.OrderFundBoundaryService; |
| | | import com.talentcard.server.business.order.OrderRefundRequest; |
| | | import com.talentcard.server.business.payment.huifu.HuifuPaymentGatewayException; |
| | | import com.talentcard.server.business.payment.huifu.HuifuPayload; |
| | | import com.talentcard.server.business.payment.huifu.HuifuPaymentProperties; |
| | | import com.talentcard.server.business.payment.huifu.HuifuRefundCommand; |
| | | import com.talentcard.server.business.payment.huifu.HuifuRefundGateway; |
| | |
| | | String providerNo = textValue(data.get("hf_seq_id")); |
| | | boolean codeSuccess = "00000000".equals(code) || "10000".equals(code) || "0".equals(code) || "SUCCESS".equalsIgnoreCase(code); |
| | | boolean success = codeSuccess && (status.isBlank() || "S".equalsIgnoreCase(status) || "SUCCESS".equalsIgnoreCase(status) || "PAID".equalsIgnoreCase(status)); |
| | | boolean failed = !success && !("P".equalsIgnoreCase(status) || "PROCESSING".equalsIgnoreCase(status) || "PENDING".equalsIgnoreCase(status)); |
| | | // 语义未定的码一律不判失败。判失败会把订单解锁成「可以再退一次」,万一通道那边第一次其实 |
| | | // 已经出款,第二次就是重复出款;停在在途最多是让对账/人工多收敛一轮。 |
| | | boolean failed = !success && !HuifuPayload.undeterminedCode(code) |
| | | && !("P".equalsIgnoreCase(status) || "PROCESSING".equalsIgnoreCase(status) || "PENDING".equalsIgnoreCase(status)); |
| | | return new ProviderResult(success, failed, code, message, providerNo); |
| | | } |
| | | private static String textValue(Object value) { return value == null ? "" : String.valueOf(value).trim(); } |