@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证书序列号 |
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 |
//================================单独下单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) { |
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 |
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 |
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 |
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) { |
private String privateKey;// 你的商户私钥 | private String privateKey;// 你的商户私钥 | ||||
@NotBlank | @NotBlank | ||||
private String serialNo;// 商户证书序列号 | private String serialNo;// 商户证书序列号 | ||||
@NotBlank | |||||
private String publicKey;//商户公钥 | |||||
@NotBlank | |||||
private String publicKeyId;//商户公钥ID | |||||
} | } |
@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") |
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); |
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); |
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()); |
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 = |
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()); |