Преглед на файлове

微信支付V3 改造

master
chenchaod преди 1 месец
родител
ревизия
62fc45ebb6
променени са 14 файла, в които са добавени 60 реда и са изтрити 7 реда
  1. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/entity/comm/CommonPayConfig.java
  2. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/entity/comm/CommonWxSignConfig.java
  3. 5
    1
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsCreatPayOrderV3Request.java
  4. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsQueryPayResultV3Request.java
  5. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsQueryRefundV3Request.java
  6. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsRefundV3Request.java
  7. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsVehicleSignV3Request.java
  8. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsVehicleSignV3ResultRequest.java
  9. 7
    3
      zhywpt-app-userw/src/main/java/cn/com/taiji/userw/dto/wx/WxCarAddReqDTO.java
  10. 9
    1
      zhywpt-app-userw/src/main/java/cn/com/taiji/userw/dto/wx/WxPayAddReqDTO.java
  11. 2
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/AbstractOrderManager.java
  12. 2
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderPayApplyManager.java
  13. 3
    2
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderPayQueryManager.java
  14. 4
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignQueryManager.java

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/comm/CommonPayConfig.java Целия файл

@Size(max = 3000) @Size(max = 3000)
@Column(name = "WX_PRIVATEKEY") @Column(name = "WX_PRIVATEKEY")
private String wxPrivatekey;//微信V3私钥-apiclient_key.pem private String wxPrivatekey;//微信V3私钥-apiclient_key.pem
@Column(name = "WX_PUBLICKEY_ID")
private String wxPublicKeyId;//微信V3公钥ID
@Column(name = "WX_PUBLIC_KEY")
private String wxPublicKey;//微信V3公钥-pub_key.pem
@Size(max = 50) @Size(max = 50)
@Column(name = "WX_SERIAL_NO") @Column(name = "WX_SERIAL_NO")
private String wxSerialNo;//微信V3证书序列号 private String wxSerialNo;//微信V3证书序列号

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/comm/CommonWxSignConfig.java Целия файл

private String planId;//ETC授权扣费模板ID,商户申请后由微信侧提供 V3 private String planId;//ETC授权扣费模板ID,商户申请后由微信侧提供 V3
@Column(name = "PRIVATEKEY") @Column(name = "PRIVATEKEY")
private String privateKey;//微信V3私钥-apiclient_key.pem V3 private String privateKey;//微信V3私钥-apiclient_key.pem V3
@Column(name = "WX_PUBLICKEY_ID")
private String wxPublicKeyId;//微信V3公钥ID
@Column(name = "WX_PUBLIC_KEY")
private String wxPublicKey;//微信V3公钥-pub_key.pem
@Column(name = "SERIAL_NO") @Column(name = "SERIAL_NO")
private String serialNo;//序列号 V3 private String serialNo;//序列号 V3
@NotNull @NotNull

+ 5
- 1
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsCreatPayOrderV3Request.java Целия файл

//================================单独下单sdk请求将上面字段组装支付者信息Payer payer; //================================单独下单sdk请求将上面字段组装支付者信息Payer payer;


//================================组装到场景信息SceneInfo sceneInfo; //================================组装到场景信息SceneInfo sceneInfo;
private String payerClientIp;//用户终端IP
private String payerClientIp;//用户终端IP h5必填


//=================================组装到H5场景信息H5Info h5Info,然后h5Info组装到场景信息SceneInfo sceneInfo; //=================================组装到H5场景信息H5Info h5Info,然后h5Info组装到场景信息SceneInfo sceneInfo;
private String type;//场景类型,示例值:iOS, Android, Wap private String type;//场景类型,示例值:iOS, Android, Wap
private String privateKey;// 你的商户私钥 apiclient_key.pem private String privateKey;// 你的商户私钥 apiclient_key.pem
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID




public void validate(ErrorMsgBuilder builder) { public void validate(ErrorMsgBuilder builder) {

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsQueryPayResultV3Request.java Целия файл

private String privateKey;// 你的商户私钥 apiclient_key.pem private String privateKey;// 你的商户私钥 apiclient_key.pem
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID


private String subMchid;//子商户号 private String subMchid;//子商户号
@Override @Override

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsQueryRefundV3Request.java Целия файл

private String privateKey;// 你的商户私钥 apiclient_key.pem private String privateKey;// 你的商户私钥 apiclient_key.pem
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID


private String subMchid;//子商户号 private String subMchid;//子商户号
@Override @Override

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsRefundV3Request.java Целия файл

private String privateKey;// 你的商户私钥 apiclient_key.pem private String privateKey;// 你的商户私钥 apiclient_key.pem
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID


private String subMchid;//子商户号 private String subMchid;//子商户号
@Override @Override

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsVehicleSignV3Request.java Целия файл

private String privateKey;// 你的商户私钥 apiclient_key.pem private String privateKey;// 你的商户私钥 apiclient_key.pem
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID


@Override @Override
protected void validate(ErrorMsgBuilder builder) { protected void validate(ErrorMsgBuilder builder) {

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/weiXin/AtsVehicleSignV3ResultRequest.java Целия файл

private String privateKey;// 你的商户私钥 private String privateKey;// 你的商户私钥
@NotBlank @NotBlank
private String serialNo;// 商户证书序列号 private String serialNo;// 商户证书序列号
@NotBlank
private String publicKey;//商户公钥
@NotBlank
private String publicKeyId;//商户公钥ID




} }

+ 7
- 3
zhywpt-app-userw/src/main/java/cn/com/taiji/userw/dto/wx/WxCarAddReqDTO.java Целия файл

@NotBlank @NotBlank
@ApiModelProperty(value = "签名密钥") @ApiModelProperty(value = "签名密钥")
private String signKey; private String signKey;
@Column(name = "PLAN_ID")
@ApiModelProperty(value = "ETC授权扣费模板ID")
private String planId;//ETC授权扣费模板ID,商户申请后由微信侧提供 V3 private String planId;//ETC授权扣费模板ID,商户申请后由微信侧提供 V3
@Column(name = "PRIVATEKEY")
@ApiModelProperty(value = "微信V3私钥")
private String privateKey;//微信V3私钥-apiclient_key.pem V3 private String privateKey;//微信V3私钥-apiclient_key.pem V3
@Column(name = "SERIAL_NO")
@ApiModelProperty(value = "微信V3公钥ID")
private String wxPublicKeyId;//微信V3公钥ID
@ApiModelProperty(value = "微信V3公钥")
private String wxPublicKey;//微信V3公钥-pub_key.pem
@ApiModelProperty(value = "微信V3序列号")
private String serialNo;//序列号 V3 private String serialNo;//序列号 V3
@NotNull @NotNull
@IntegerConstant(values = "2,3") @IntegerConstant(values = "2,3")

+ 9
- 1
zhywpt-app-userw/src/main/java/cn/com/taiji/userw/dto/wx/WxPayAddReqDTO.java Целия файл

import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;

import javax.persistence.Column;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;


@ApiModelProperty(value = "微信V2签名密钥") @ApiModelProperty(value = "微信V2签名密钥")
private String wxKey;//微信V2签名密钥 private String wxKey;//微信V2签名密钥
@ApiModelProperty(value = "支付产品类型") @ApiModelProperty(value = "支付产品类型")
private String payProductType;//支付类型-暂时保留此字段
private String payProductType;//
@ApiModelProperty(value = "说明") @ApiModelProperty(value = "说明")
@NotBlank @NotBlank
private String info;//说明 private String info;//说明
private Integer wxServiceType;//微信商户下单类型,1普通商户,2服务商 private Integer wxServiceType;//微信商户下单类型,1普通商户,2服务商
@ApiModelProperty(value = "微信商户号") @ApiModelProperty(value = "微信商户号")
private String wxSubMchId;//微信商户号 private String wxSubMchId;//微信商户号
@ApiModelProperty(value = "微信商户公钥ID")
private String wxPublicKeyId;
@ApiModelProperty(value = "微信商户公钥")
private String wxPublicKey;


@Override @Override
protected void validate(ViolationValidator validator) { protected void validate(ViolationValidator validator) {
validator.validFieldNotBlank("wxApiv3key",wxApiv3key); validator.validFieldNotBlank("wxApiv3key",wxApiv3key);
validator.validFieldNotBlank("wxPrivatekey",wxPrivatekey); validator.validFieldNotBlank("wxPrivatekey",wxPrivatekey);
validator.validFieldNotBlank("wxSerialNo",wxSerialNo); validator.validFieldNotBlank("wxSerialNo",wxSerialNo);
validator.validFieldNotBlank("wxPublicKeyId",wxPublicKeyId);
validator.validFieldNotBlank("wxPublicKey",wxPublicKey);
} }
if (wxServiceType != null && wxServiceType==2){ if (wxServiceType != null && wxServiceType==2){
validator.validFieldNotBlank("wxSubMchId",wxSubMchId); validator.validFieldNotBlank("wxSubMchId",wxSubMchId);

+ 2
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/AbstractOrderManager.java Целия файл

v3Request.setMchid(payConfig.getWxMchId()); v3Request.setMchid(payConfig.getWxMchId());
v3Request.setApiV3Key(payConfig.getWxApiv3key()); v3Request.setApiV3Key(payConfig.getWxApiv3key());
v3Request.setPrivateKey(payConfig.getWxPrivatekey()); v3Request.setPrivateKey(payConfig.getWxPrivatekey());
v3Request.setPublicKeyId(payConfig.getWxPublicKeyId());
v3Request.setPublicKey(payConfig.getWxPublicKey());
v3Request.setSerialNo(payConfig.getWxSerialNo()); v3Request.setSerialNo(payConfig.getWxSerialNo());
// v3Request.setSubMchId("payConfig.get"); // v3Request.setSubMchId("payConfig.get");
AtsQueryPayResultV3Response res = jsonPostRepeat(v3Request); AtsQueryPayResultV3Response res = jsonPostRepeat(v3Request);

+ 2
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderPayApplyManager.java Целия файл

v3Request.setCreateType(payConfig.getWxServiceType()); v3Request.setCreateType(payConfig.getWxServiceType());
v3Request.setTradeType(TradeType.valueOf(payConfig.getPayProductType())); v3Request.setTradeType(TradeType.valueOf(payConfig.getPayProductType()));
v3Request.setAppid(payConfig.getWxAppId()); v3Request.setAppid(payConfig.getWxAppId());
v3Request.setPublicKeyId(payConfig.getWxPublicKeyId());
v3Request.setPublicKey(payConfig.getWxPublicKey());
// v3Request.setSubAppid(); // v3Request.setSubAppid();
v3Request.setSubMchId(payConfig.getWxSubMchId()); v3Request.setSubMchId(payConfig.getWxSubMchId());
v3Request.setDescription(orderPay.getPayType().getValue()); v3Request.setDescription(orderPay.getPayType().getValue());

+ 3
- 2
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderPayQueryManager.java Целия файл

IssueOrderinfo order = (IssueOrderinfo)dataStream.get(ORDER); IssueOrderinfo order = (IssueOrderinfo)dataStream.get(ORDER);
if (order.getNeedPay()) { if (order.getNeedPay()) {
List<IssueOrderPay> orderPays = paymentDetections(request.getOrderNo()); List<IssueOrderPay> orderPays = paymentDetections(request.getOrderNo());
List<OrderPayStatus> payStatus = orderPays.stream().distinct().map(IssueOrderPay::getPayStatus).collect(Collectors.toList());
List<OrderPayStatus> payStatus = orderPays.stream().map(IssueOrderPay::getPayStatus).distinct().collect(Collectors.toList());
// 全支付完了 // 全支付完了
if (payStatus.contains(OrderPayStatus.SUCCESS) && payStatus.size() == 1) { if (payStatus.contains(OrderPayStatus.SUCCESS) && payStatus.size() == 1) {
order.setWxOpenedId(request.getSubOpenId());
updateOrder(order); updateOrder(order);
} }
orderPayRepo.persistAll(orderPays); orderPayRepo.persistAll(orderPays);
res.setOrderNo(order.getOrderNo()); res.setOrderNo(order.getOrderNo());
if (order.getNeedPay()) { if (order.getNeedPay()) {
List<IssueOrderPay> orderPays = (List<IssueOrderPay>)dataStream.get(ORDERPAY); List<IssueOrderPay> orderPays = (List<IssueOrderPay>)dataStream.get(ORDERPAY);
List<OrderPayStatus> payStatus = orderPays.stream().distinct().map(IssueOrderPay::getPayStatus).collect(Collectors.toList());
List<OrderPayStatus> payStatus = orderPays.stream().map(IssueOrderPay::getPayStatus).distinct().collect(Collectors.toList());
res.setPaymentStatus(payStatus.contains(OrderPayStatus.SUCCESS) && payStatus.size()==1 ? 1:0); res.setPaymentStatus(payStatus.contains(OrderPayStatus.SUCCESS) && payStatus.size()==1 ? 1:0);
res.setSumFee(order.getAmount()); res.setSumFee(order.getAmount());
List<OrderPayQueryModel> collect = List<OrderPayQueryModel> collect =

+ 4
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignQueryManager.java Целия файл

resultRequest.setMchid(signConfig.getMchId()); resultRequest.setMchid(signConfig.getMchId());
resultRequest.setApiV3Key(signConfig.getSignKey()); resultRequest.setApiV3Key(signConfig.getSignKey());
resultRequest.setPrivateKey(signConfig.getPrivateKey()); resultRequest.setPrivateKey(signConfig.getPrivateKey());
resultRequest.setPublicKeyId(signConfig.getWxPublicKeyId());
resultRequest.setPublicKey(signConfig.getWxPublicKey());
resultRequest.setSerialNo(signConfig.getSerialNo()); resultRequest.setSerialNo(signConfig.getSerialNo());
resultRequest.setPlanId(signConfig.getPlanId()); resultRequest.setPlanId(signConfig.getPlanId());
AtsVehicleSignV3ResultResponse resultResponse = jsonPostRepeat(resultRequest); AtsVehicleSignV3ResultResponse resultResponse = jsonPostRepeat(resultRequest);
v3Request.setMchid(signConfig.getMchId()); v3Request.setMchid(signConfig.getMchId());
v3Request.setApiV3Key(signConfig.getSignKey()); v3Request.setApiV3Key(signConfig.getSignKey());
v3Request.setPrivateKey(signConfig.getPrivateKey()); v3Request.setPrivateKey(signConfig.getPrivateKey());
v3Request.setPublicKeyId(signConfig.getWxPublicKeyId());
v3Request.setPublicKey(signConfig.getWxPublicKey());
v3Request.setSerialNo(signConfig.getSerialNo()); v3Request.setSerialNo(signConfig.getSerialNo());
v3Request.setPlanId(signConfig.getPlanId()); v3Request.setPlanId(signConfig.getPlanId());
v3Request.setOpenId(request.getSubOpenId()); v3Request.setOpenId(request.getSubOpenId());

Loading…
Отказ
Запис