修复 微信V3:商户上送敏感信息时加密秘钥错误问题

修复 支付宝:交易查询接口调用getBizContent方法tradeNo与outTradeNo弄反问题
This commit is contained in:
pengkaibing
2023-06-02 23:46:11 +08:00
parent c2e9b16809
commit c102c2a1f3
4 changed files with 28 additions and 4 deletions

View File

@@ -5,6 +5,7 @@ import java.nio.charset.StandardCharsets;
import java.security.cert.Certificate;
import java.util.Map;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHeader;
@@ -105,6 +106,17 @@ public class DefaultWxPayAssistService implements WxPayAssistService {
if (statusCode >= 400) {
throw new PayErrorException(new WxPayError(responseBody.getString(WxConst.CODE), responseBody.getString(WxConst.MESSAGE), responseBody.toJSONString()));
}
Header[] headers = responseEntity.getHeaders();
if (headers == null) {
return responseBody;
}
for (Header header : headers) {
if ("Wechatpay-Serial".equals(header.getName())) {
// 更新平台证书的序列号,需要每次都更新,因为这个可能会改变
payConfigStorage.getCertEnvironment().setPlatformSerialNumber(header.getValue());
break;
}
}
return responseBody;
}

View File

@@ -657,7 +657,8 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> implements
return null;
}
String serialNumber = payConfigStorage.getCertEnvironment().getSerialNumber();
// 商户上送敏感信息时使用`微信支付平台公钥`加密
String serialNumber = payConfigStorage.getCertEnvironment().getPlatformSerialNumber();
Certificate certificate = getAssistService().getCertificate(serialNumber);
return transferDetails.stream()
.peek(transferDetailListItem -> {

View File

@@ -26,7 +26,10 @@ public class CertEnvironment {
*/
private String serialNumber;
/**
* 微信平台证书序列号
*/
private String platformSerialNumber;
@@ -63,4 +66,12 @@ public class CertEnvironment {
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
}
public String getPlatformSerialNumber() {
return platformSerialNumber;
}
public void setPlatformSerialNumber(String platformSerialNumber) {
this.platformSerialNumber = platformSerialNumber;
}
}