1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
@Component("alipayAdapter") public class AlipayAdapter implements PaymentProcessor { private AlipaySDK alipaySDK; public AlipayAdapter(AlipaySDK alipaySDK) { this.alipaySDK = alipaySDK; }
@Override public PaymentResult pay(String orderId, BigDecimal amount, String subject, String notifyUrl) { try { String bizContent = buildBizContent(orderId, amount, subject); System.out.println("转换参数:orderId=" + orderId + " → bizContent=" + bizContent); String alipayResult = alipaySDK.tradeAppPay(bizContent, null, notifyUrl); PaymentResult result = PaymentResult.success("ALIPAY", alipayResult); System.out.println("支付宝支付成功:" + result); return result; } catch (Exception e) { System.err.println("支付宝支付失败:" + e.getMessage()); return PaymentResult.failure("ALIPAY_ERROR", e.getMessage()); } }
private String buildBizContent(String orderId, BigDecimal amount, String subject) { JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", orderId); bizContent.put("total_amount", amount.setScale(2, RoundingMode.HALF_UP).toString()); bizContent.put("subject", subject); bizContent.put("product_code", "QUICK_MSECURITY_PAY"); System.out.println("构建支付宝参数:" + bizContent.toJSONString()); return bizContent.toJSONString(); } }
@Component("wechatPayAdapter") public class WechatPayAdapter implements PaymentProcessor { private WechatPaySDK wechatPaySDK; public WechatPayAdapter(WechatPaySDK wechatPaySDK) { this.wechatPaySDK = wechatPaySDK; } @Override public PaymentResult pay(String orderId, BigDecimal amount, String subject, String notifyUrl) { try { int totalFeeInCent = amount.multiply(new BigDecimal(100)).intValue(); System.out.println("金额转换:" + amount + "元 → " + totalFeeInCent + "分"); Map<String, String> wechatResult = wechatPaySDK.unifiedOrder( subject, totalFeeInCent, orderId, notifyUrl, "APP" ); PaymentResult result = PaymentResult.success("WECHAT_PAY", wechatResult.get("prepay_id")); System.out.println("微信支付成功:" + result); return result; } catch (Exception e) { System.err.println("微信支付失败:" + e.getMessage()); return PaymentResult.failure("WECHAT_ERROR", e.getMessage()); } } }
|