8000 电商收付通支付回调处理 by cloudX2019 · Pull Request #1749 · binarywang/WxJava · GitHub
[go: up one dir, main page]

Skip to content

电商收付通支付回调处理 #1749

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Sep 10, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
new:电商收付通二级商户进件
  • Loading branch information
曾浩 committed Aug 17, 2020
commit 2b27ee9c9f04986060b4cd86d420eb1623a8ffa1

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.github.binarywang.wxpay.bean.ecommerce;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
* 二级商户进件 提交申请结果响应
*/
@Data
@NoArgsConstructor
public class ApplymentsResult implements Serializable {

/**
* <pre>
* 字段名:微信支付申请单号
* 变量名:applyment_id
* 是否必填:是
* 类型:uint64
* 描述:
* 微信支付分配的申请单号 。
* 示例值:2000002124775691
* </pre>
*/
@SerializedName(value = "applyment_id")
private String applymentId;

/**
* <pre>
* 字段名:业务申请编号
* 变量名:out_request_no
* 是否必填:是
* 类型:string(124)
* 描述:
* 服务商自定义的商户唯一编号。每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。
* 示例值:APPLYMENT_00000000001
* </pre>
*/
@SerializedName(value = "out_request_no")
private String outRequestNo;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,308 @@
package com.github.binarywang.wxpay.bean.ecommerce;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

@Data
@NoArgsConstructor
public class ApplymentsStatusResult implements Serializable {
/**
* <pre>
* 字段名:申请状态
* 变量名:applyment_state
* 是否必填:否
* 类型:string(32)
* 描述:
* 枚举值:
* CHECKING:资料校验中
* ACCOUNT_NEED_VERIFY:待账户验证
* AUDITING:审核中
* REJECTED:已驳回
* NEED_SIGN:待签约
* FINISH:完成
* FROZEN:已冻结
* 示例值:FINISH
* </pre>
*/
@SerializedName(value = "applyment_state")
private String applymentState;

/**
* <pre>
* 字段名:申请状态描述
* 变量名:applyment_state_desc
* 是否必填:否
* 类型:string(32)
* 描述:
* 申请状态描述
* 示例值:“审核中”
* </pre>
*/
@SerializedName(value = "applyment_state_desc")
private String applymentStateDesc;

/**
* <pre>
* 字段名:签约链接
* 变量名:sign_url
* 是否必填:否
* 类型:string(256)
* 描述:
* 1、当申请状态为NEED_SIGN时才返回。
* 2、建议将链接转为二维码展示,需让申请单-管理者用微信扫码打开,完成签约。
* 示例值:https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec
* </pre>
*/
@SerializedName(value = "sign_url")
private String signUrl;

/**
* <pre>
* 字段名:电商平台二级商户号
* 变量名:sub_mchid
* 是否必填:否
* 类型:string(32)
* 描述:
* 当申请状态为NEED_SIGN或FINISH时才返回。
* 示例值:1542488631
* </pre>
*/
@SerializedName(value = "sub_mchid")
private String subMchid;

/**
* <pre>
* 字段名:+汇款账户验证信息
* 变量名:account_validation
* 是否必填:否
* 类型:object
* 描述:当申请状态为ACCOUNT_NEED_VERIFY 时有返回,可根据指引汇款,完成账户验证。
* </pre>
*/
@SerializedName(value = "account_validation")
private AccountValidation accountValidation;

/**
* <pre>
* 字段名:+驳回原因详情
* 变量名:audit_detail
* 是否必填:否
* 类型:array
* 描述:各项资料的审核情况。当申请状态为REJECTED或 FROZEN时才返回。
* </pre>
*/
@SerializedName(value = "audit_detail")
private List<AuditDetail> auditDetail;

/**
* <pre>
* 字段名:法人验证链接
* 变量名:legal_validation_url
* 是否必填:否
* 类型:string(256)
* 描述:
* 1、当申请状态为
* ACCOUNT_NEED_VERIFY,且通过系统校验的申请单,将返回链接。
* 2、建议将链接转为二维码展示,让商户法人用微信扫码打开,完成账户验证。
* 示例值: https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec
* </pre>
*/
@SerializedName(value = "legal_validation_url")
private String legalValidationUrl;

/**
* <pre>
* 字段名:业务申请编号
* 变量名:out_request_no
* 是否必填:是
* 类型:string(124)
8000 * 描述:
* 提交接口填写的业务申请编号。
* 示例值:APPLYMENT_00000000001
* </pre>
*/
@SerializedName(value = "out_request_no")
private String outRequestNo;

/**
* <pre>
* 字段名:微信支付申请单号
* 变量名:applyment_id
* 是否必填:否
* 类型:uint64
* 描述:
* 微信支付分配的申请单号。
* 示例值:2000002124775691
* </pre>
*/
@SerializedName(value = "applyment_id")
private String applymentId;

@Data
@NoArgsConstructor
public static class AccountValidation implements Serializable{
/**
* <pre>
* 字段名:付款户名
* 变量名:account_name
* 是否必填:否
* 类型:uint64
* 描述:
* 需商户使用该户名的账户进行汇款。
* 示例值: rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==
* </pre>
*/
@SerializedName(value = "account_name")
private String accountName;

/**
* <pre>
* 字段名:付款卡号
* 变量名:account_no
* 是否必填:否
* 类型:string(128)
* 描述:
* 结算账户为对私时会返回,商户需使用该付款卡号进行汇款。
* 示例值:9nZYDEvBT4rDdICA3ZYXshYqeOSslSjSauAE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==
* </pre>
*/
@SerializedName(value = "account_no")
private String accountNo;

/**
* <pre>
* 字段名:汇款金额
* 变量名:pay_amount
* 是否必填:否
* 类型:string(32)
* 描述:
* 需要汇款的金额(单位:分)。
* 示例值:124
* </pre>
*/
@SerializedName(value = "pay_amount")
private String payAmount;

/**
* <pre>
* 字段名:收款卡号
* 变量名:destination_account_number
* 是否必填:否
* 类型:string(128)
* 描述:
* 收款账户的卡号
* 示例值:7222223333322332
* </pre>
*/
@SerializedName(value = "destination_account_number")
private String destinationAccountNumber;

/**
* <pre>
* 字段名:收款户名
* 变量名:destination_account_name
* 是否必填:否
* 类型:string(128)
* 描述:
* 收款账户名
* 示例值:财付通支付科技有限公司
* </pre>
*/
@SerializedName(value = "destination_account_name")
private String destinationAccountName;

/**
* <pre>
* 字段名:开户银行
* 变量名:destination_account_bank
* 是否必填:否
* 类型:string(128)
* 描述:
* 收款账户的开户银行名称。
* 示例值:招商银行威盛大厦支行
* </pre>
*/
@SerializedName(value = "destination_account_bank")
private String destinationAccountBank;

/**
* <pre>
* 字段名:省市信息
* 变量名:city
* 是否必填:否
* 类型:string(128)
* 描述:
* 收款账户的省市。
* 示例值:深圳
* </pre>
*/
@SerializedName(value = "city")
private String city;

/**
* <pre>
* 字段名:备注信息
* 变量名:remark
* 是否必填:否
* 类型:string(128)
* 描述:
* 商户汇款时,需要填写的备注信息。
* 示例值:入驻账户验证
* </pre>
*/
@SerializedName(value = "remark")
private String remark;

/**
* <pre>
* 字段名:汇款截止时间
* 变量名:deadline
* 是否必填:否
* 类型:string(20)
* 描述:
* 请在此时间前完成汇款。
* 示例值:2018-12-1017:09:01
* </pre>
*/
@SerializedName(value = "deadline")
private String deadline;

}

@Data
@NoArgsConstructor
public static class AuditDetail implements Serializable{
/**
* <pre>
* 字段名:参数名称
* 变量名:param_name
* 是否必填:否
* 类型:string(32)
* 描述:
* 提交申请单的资料项名称。
* 示例值:id_card_copy
* </pre>
*/
@SerializedName(value = "param_name")
private String paramName;

/**
* <pre>
* 字段名:驳回原因
* 变量名:reject_reason
* 是否必填:否
* 类型:string(32)
* 描述:
* 提交资料项被驳回原因。
* 示例值:身份证背面识别失败,请上传更清晰的身份证图片
* </pre>
*/
@SerializedName(value = "reject_reason")
private String rejectReason;

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,10 @@ public class WxPayConfig {
* 私钥信息
*/
private PrivateKey privateKey;
/**
* 证书自动更新时间差(分钟),默认一分钟
*/
private int certAutoUpdateTime = 60;
/**
* p12证书文件内容的字节数组.
*/
Expand Down Expand Up @@ -245,8 +249,7 @@ public CloseableHttpClient initApiV3HttpClient() throws WxPayException {

AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
new WxPayCredentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)),
apiV3Key.getBytes(StandardCharsets.UTF_8));

apiV3Key.getBytes(StandardCharsets.UTF_8), this.getCertAutoUpdateTime());

CloseableHttpClient httpClient = WxPayV3HttpClientBuilder.create()
.withMerchant(mchId, certSerialNo, merchantPrivateKey)
Expand Down
Loading
0