| | |
| | | /** LWPAY API 基础地址 */ |
| | | private static final String LWPAY_BASE_URL = "https://lwpay.live"; |
| | | |
| | | /** |
| | | * 参与签名的字段白名单 |
| | | * 签名只包含这 7 个业务必传字段,pay_productname / pay_attach / pay_md5sign 不参与签名 |
| | | */ |
| | | private static final String[] SIGN_FIELD_KEYS = { |
| | | "pay_memberid", "pay_orderid", "pay_applydate", |
| | | "pay_bankcode", "pay_notifyurl", "pay_callbackurl", "pay_amount" |
| | | }; |
| | | |
| | | // ==================== 代收接口 ==================== |
| | | |
| | | /** |
| | |
| | | params.put("pay_attach", "network:" + network); |
| | | } |
| | | |
| | | // 生成签名 |
| | | String sign = generateSign(params, secretKey); |
| | | // 签名:仅使用白名单中的 7 个业务必传字段 |
| | | TreeMap<String, String> signParams = new TreeMap<>(); |
| | | for (String key : SIGN_FIELD_KEYS) { |
| | | String val = params.get(key); |
| | | if (StrUtil.isNotBlank(val)) { |
| | | signParams.put(key, val); |
| | | } |
| | | } |
| | | String sign = generateSign(signParams, secretKey); |
| | | params.put("pay_md5sign", sign); |
| | | |
| | | log.info("LWPAY 代收请求: memberId={}, orderNo={}, amount={}, bankCode={}", |