Commit 5107322ee9d80cced9252b7991471ded468013eb

Authored by YunaiV
1 parent fd6ca746

fix:【pay 支付】兼容微信支付 V3 可能 header 大小写多情况

yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java
@@ -541,14 +541,23 @@ public abstract class AbstractWxPayClient extends AbstractPayClient<WxPayClientC @@ -541,14 +541,23 @@ public abstract class AbstractWxPayClient extends AbstractPayClient<WxPayClientC
541 * @see <a href="https://github.com/binarywang/weixin-java-pay-demo/blob/master/src/main/java/com/github/binarywang/demo/wx/pay/controller/WxPayV3Controller.java#L202-L221">官方示例</a> 541 * @see <a href="https://github.com/binarywang/weixin-java-pay-demo/blob/master/src/main/java/com/github/binarywang/demo/wx/pay/controller/WxPayV3Controller.java#L202-L221">官方示例</a>
542 */ 542 */
543 private SignatureHeader getRequestHeader(Map<String, String> headers) { 543 private SignatureHeader getRequestHeader(Map<String, String> headers) {
  544 + // 参见 https://gitee.com/zhijiantianya/yudao-cloud/issues/ICSFL6
544 return SignatureHeader.builder() 545 return SignatureHeader.builder()
545 - .signature(headers.get("wechatpay-signature"))  
546 - .nonce(headers.get("wechatpay-nonce"))  
547 - .serial(headers.get("wechatpay-serial"))  
548 - .timeStamp(headers.get("wechatpay-timestamp")) 546 + .signature(getHeaderValue(headers, "Wechatpay-Signature", "wechatpay-signature"))
  547 + .nonce(getHeaderValue(headers, "Wechatpay-Nonce", "wechatpay-nonce"))
  548 + .serial(getHeaderValue(headers, "Wechatpay-Serial", "wechatpay-serial"))
  549 + .timeStamp(getHeaderValue(headers, "Wechatpay-Timestamp", "wechatpay-timestamp"))
549 .build(); 550 .build();
550 } 551 }
551 552
  553 + private String getHeaderValue(Map<String, String> headers, String capitalizedKey, String lowercaseKey) {
  554 + String value = headers.get(capitalizedKey);
  555 + if (value != null) {
  556 + return value;
  557 + }
  558 + return headers.get(lowercaseKey);
  559 + }
  560 +
552 // TODO @芋艿:可能是 wxjava 的 bug:https://github.com/binarywang/WxJava/issues/1557 561 // TODO @芋艿:可能是 wxjava 的 bug:https://github.com/binarywang/WxJava/issues/1557
553 private void fixV3HttpClientConnectionPoolShutDown() { 562 private void fixV3HttpClientConnectionPoolShutDown() {
554 client.getConfig().setApiV3HttpClient(null); 563 client.getConfig().setApiV3HttpClient(null);