查询进件状态

This commit is contained in:
gong
2026-01-07 17:51:52 +08:00
parent 006035f71b
commit 21b9acf3c9
6 changed files with 361 additions and 70 deletions

View File

@@ -6,6 +6,7 @@ import com.czg.dto.req.*;
import com.czg.dto.resp.BankBranchDto;
import com.czg.dto.resp.EntryRespDto;
import com.czg.dto.resp.EntryThirdRespDto;
import com.czg.dto.resp.QueryStatusResp;
import com.czg.exception.CzgException;
import com.czg.third.alipay.AlipayEntryManager;
import com.czg.third.wechat.WechatEntryManager;
@@ -33,7 +34,27 @@ public class EntryManager {
* @param instId 顶级机构ID CMB
*/
public static List<BankBranchDto> queryBankBranchList(String province, String city, String instId) {
return AlipayEntryManager.queryBankBranchList(instId, province, city);
return AlipayEntryManager.queryBankBranchList(null, instId, province, city);
}
/**
* 查询微信进件状态
*
* @param merchantCode 商户编号
* @return 进件状态
*/
public static QueryStatusResp queryWechatEntryStatus(String merchantCode) {
return WechatEntryManager.queryMerchantEntryStatus(null, merchantCode);
}
/**
* 查询支付宝进件状态
*
* @param merchantCode 商户编号
* @return 进件状态
*/
public static QueryStatusResp queryAlipayEntryStatus(String merchantCode) {
return AlipayEntryManager.queryMerchantEntryStatus(null, merchantCode);
}
/**

View File

@@ -0,0 +1,49 @@
package com.czg.dto.resp;
import lombok.Data;
/**
* 查询进件状态
* @author yjjie
* @date 2026/1/7 17:12
*/
@Data
public class QueryStatusResp {
/**
* 平台
* {@link com.czg.PayCst.Platform}
*/
private String platform;
/**
* 商户编号
*/
private String merchantCode;
/**
* 进件编号
*/
private String applyId;
/**
* 三方商户id
*/
private String thirdMerchantId;
/**
* 进件状态
* {@link com.czg.PayCst.EntryStatus}
*/
private String status;
/**
* 签约地址
*/
private String signUrl;
/**
* 失败原因
*/
private String failReason;
}

View File

@@ -1,35 +1,36 @@
package com.czg.third.alipay;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alipay.api.AlipayApiException;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.FileItem;
import com.alipay.api.domain.AlipayFinancialnetAuthPbcnameQueryModel;
import com.alipay.api.domain.AntMerchantExpandIndirectZftCreateModel;
import com.alipay.api.domain.AntMerchantExpandIndirectZftSimplecreateModel;
import com.alipay.api.domain.SiteInfo;
import com.alipay.api.domain.*;
import com.alipay.api.request.AlipayFinancialnetAuthPbcnameQueryRequest;
import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest;
import com.alipay.api.request.AntMerchantExpandIndirectZftCreateRequest;
import com.alipay.api.request.AntMerchantExpandIndirectZftSimplecreateRequest;
import com.alipay.api.request.AntMerchantExpandIndirectZftorderQueryRequest;
import com.alipay.api.response.AlipayFinancialnetAuthPbcnameQueryResponse;
import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse;
import com.alipay.api.response.AntMerchantExpandIndirectZftCreateResponse;
import com.alipay.api.response.AntMerchantExpandIndirectZftSimplecreateResponse;
import com.alipay.api.response.AntMerchantExpandIndirectZftorderQueryResponse;
import com.alipay.v3.ApiClient;
import com.alipay.v3.ApiException;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayOpenAgentApi;
import com.alipay.v3.api.AntMerchantExpandIndirectImageApi;
import com.alipay.v3.model.*;
import com.alipay.v3.model.AlipayOpenAgentCreateDefaultResponse;
import com.alipay.v3.model.AlipayOpenAgentCreateModel;
import com.alipay.v3.model.AlipayOpenAgentCreateResponseModel;
import com.alipay.v3.model.ContactModel;
import com.alipay.v3.util.model.AlipayConfig;
import com.czg.PayCst;
import com.czg.dto.req.*;
import com.czg.dto.resp.BankBranchDto;
import com.czg.dto.resp.EntryRespDto;
import com.czg.dto.resp.EntryThirdRespDto;
import com.czg.dto.resp.QueryStatusResp;
import com.czg.exception.CzgException;
import com.czg.third.alipay.dto.config.AlipayConfigDto;
import com.czg.third.wechat.dto.req.entry.WechatEntryReqDto;
import com.czg.third.wechat.dto.resp.WechatQueryStateResp;
import com.czg.utils.UploadFileUtil;
import lombok.extern.slf4j.Slf4j;
@@ -41,7 +42,6 @@ import java.util.List;
/**
* 支付宝进件管理
*
* <a href="https://opendocs.alipay.com/solution/9434dd99_ant.merchant.expand.indirect.zft.simplecreate?scene=bf5951260023430e944c2e9afdf7f9e2&pathHash=d3136936">...</a>
*
* @author yjjie
@@ -50,6 +50,104 @@ import java.util.List;
@Slf4j
public class AlipayEntryManager {
/**
* 查询商户进件状态
*
* @param configDto 配置信息
* @param merchantCode 自系统的商户编号
* @return 进件状态
*/
public static QueryStatusResp queryMerchantEntryStatus(AlipayConfigDto configDto, String merchantCode) {
QueryStatusResp queryStatusResp = new QueryStatusResp();
queryStatusResp.setPlatform(PayCst.Platform.ALIPAY);
queryStatusResp.setMerchantCode(merchantCode);
AntMerchantExpandIndirectZftorderQueryRequest request = new AntMerchantExpandIndirectZftorderQueryRequest();
AntMerchantExpandIndirectZftorderQueryModel model = new AntMerchantExpandIndirectZftorderQueryModel();
model.setExternalId(merchantCode);
request.setBizModel(model);
try {
DefaultAlipayClient defaultAlipayClient = AlipayClient.getDefaultClient(configDto);
AntMerchantExpandIndirectZftorderQueryResponse response = defaultAlipayClient.execute(request);
log.info("支付宝查询进件状态结果:{}", response.getBody());
if (response.isSuccess()) {
List<ZftSubMerchantOrder> orders = response.getOrders();
if (orders != null && !orders.isEmpty()) {
ZftSubMerchantOrder first = orders.getFirst();
queryStatusResp.setApplyId(first.getExternalId());
if ("99".equals(first.getStatus())) {
// 已完成
queryStatusResp.setStatus(PayCst.EntryStatus.FINISH);
queryStatusResp.setThirdMerchantId(first.getSmid());
queryStatusResp.setFailReason("");
return queryStatusResp;
}
if ("-1".equals(first.getStatus())) {
// 拒绝
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
queryStatusResp.setFailReason(first.getReason());
return queryStatusResp;
}
if (StrUtil.isNotBlank(first.getFkAudit())) {
if ("REJECT".equals(first.getFkAudit())) {
// 风控拒绝
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
queryStatusResp.setFailReason(first.getFkAuditMemo());
return queryStatusResp;
}
if ("CREATE".equals(first.getFkAudit())) {
queryStatusResp.setStatus(PayCst.EntryStatus.AUDIT);
queryStatusResp.setFailReason(first.getFkAuditMemo());
return queryStatusResp;
}
}
if (StrUtil.isNotBlank(first.getKzAudit())) {
if ("REJECT".equals(first.getKzAudit())) {
// 风控拒绝
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
queryStatusResp.setFailReason(first.getKzAuditMemo());
return queryStatusResp;
}
if ("CREATE".equals(first.getKzAudit())) {
queryStatusResp.setStatus(PayCst.EntryStatus.AUDIT);
queryStatusResp.setFailReason(first.getKzAuditMemo());
return queryStatusResp;
}
}
if (StrUtil.isNotBlank(first.getSubConfirm()) && "FAIL".equals(first.getSubConfirm())) {
// 签约失败
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
queryStatusResp.setFailReason("签约失败");
return queryStatusResp;
}
queryStatusResp.setStatus(PayCst.EntryStatus.SIGN);
queryStatusResp.setSignUrl(first.getSubSignQrCodeUrl());
return queryStatusResp;
}
} else {
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
queryStatusResp.setFailReason(response.getSubMsg());
}
} catch (AlipayApiException e) {
log.error("支付宝查询进件状态报错:{}", e.getMessage(), e);
queryStatusResp.setStatus(PayCst.EntryStatus.INIT);
}
return queryStatusResp;
}
/**
* 进件商户
*
@@ -72,13 +170,13 @@ public class AlipayEntryManager {
respDto.setEntryId(response.getOrderId());
respDto.setErrorMsg("");
} else {
respDto.setStatus(PayCst.EntryStatus.FAIL);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setEntryId("");
respDto.setErrorMsg(response.getSubMsg());
}
} catch (Exception e) {
log.error("支付宝进件报错:{}", e.getMessage(), e);
respDto.setStatus(PayCst.EntryStatus.FAIL);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setEntryId("");
respDto.setErrorMsg(e.getMessage());
}
@@ -128,7 +226,7 @@ public class AlipayEntryManager {
* @param province 省份 陕西省
* @param city 城市 西安市
*/
public static List<BankBranchDto> queryBankBranchList(String instId, String province, String city) {
public static List<BankBranchDto> queryBankBranchList(AlipayConfigDto configDto, String instId, String province, String city) {
try {
AlipayFinancialnetAuthPbcnameQueryRequest request = new AlipayFinancialnetAuthPbcnameQueryRequest();
@@ -138,7 +236,7 @@ public class AlipayEntryManager {
model.setCity(city);
request.setBizModel(model);
DefaultAlipayClient defaultAlipayClient = AlipayClient.getDefaultClient(null);
DefaultAlipayClient defaultAlipayClient = AlipayClient.getDefaultClient(configDto);
AlipayFinancialnetAuthPbcnameQueryResponse response = defaultAlipayClient.execute(request);
String data = response.getPbcQueryResult();

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONWriter;
import com.czg.PayCst;
import com.czg.dto.req.*;
import com.czg.dto.resp.EntryThirdRespDto;
import com.czg.dto.resp.QueryStatusResp;
import com.czg.exception.CzgException;
import com.czg.third.wechat.dto.config.WechatPayConfigDto;
import com.czg.third.wechat.dto.req.entry.*;
@@ -14,6 +15,8 @@ import com.czg.third.wechat.dto.req.entry.business.WechatEntryLicenseReqDto;
import com.czg.third.wechat.dto.req.entry.business.sales.WechatEntryMiniProgramReqDto;
import com.czg.third.wechat.dto.req.entry.business.sales.WechatEntrySalesInfoReqDto;
import com.czg.third.wechat.dto.req.entry.business.sales.WechatEntryStoreInfoReqDto;
import com.czg.third.wechat.dto.resp.WechatAuditDetail;
import com.czg.third.wechat.dto.resp.WechatQueryStateResp;
import com.czg.utils.UploadFileUtil;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.cipher.PrivacyEncryptor;
@@ -35,6 +38,63 @@ import java.util.Map;
@Slf4j
public class WechatEntryManager {
/**
* 查询商户进件状态
*
* @param configDto 配置信息
* @param merchantCode 自系统的商户编号
* @return 进件状态
*/
public static QueryStatusResp queryMerchantEntryStatus(WechatPayConfigDto configDto, String merchantCode) {
QueryStatusResp queryStatusResp = new QueryStatusResp();
queryStatusResp.setPlatform(PayCst.Platform.WECHAT);
queryStatusResp.setMerchantCode(merchantCode);
String resp = WechatReqUtils.getReq(configDto, "/v3/applyment4sub/applyment/business_code/" + merchantCode, Map.of());
JSONObject object = JSONObject.parseObject(resp);
JSONObject data = object.getJSONObject("data");
if (data == null) {
log.error("微信查询进件状态失败:{}", resp);
queryStatusResp.setFailReason(object.getString("message"));
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
return queryStatusResp;
}
log.info("微信查询进件状态:{}", resp);
WechatQueryStateResp stateResp = JSONObject.parseObject(data.toJSONString(), WechatQueryStateResp.class);
queryStatusResp.setApplyId(stateResp.getApplyId());
switch (stateResp.getApplyState()) {
case "APPLYMENT_STATE_EDITTING" -> {
queryStatusResp.setStatus(PayCst.EntryStatus.WAIT);
queryStatusResp.setFailReason("");
}
case "APPLYMENT_STATE_AUDITING" -> {
queryStatusResp.setStatus(PayCst.EntryStatus.AUDIT);
queryStatusResp.setFailReason("");
}
case "APPLYMENT_STATE_REJECTED" -> {
queryStatusResp.setStatus(PayCst.EntryStatus.REJECTED);
StringBuilder msg = new StringBuilder();
for (WechatAuditDetail auditDetail : stateResp.getAuditDetail()) {
msg.append(auditDetail.getRejectReason()).append("");
}
queryStatusResp.setFailReason(msg.toString());
}
case "APPLYMENT_STATE_TO_BE_CONFIRMED", "APPLYMENT_STATE_TO_BE_SIGNED" -> {
queryStatusResp.setStatus(PayCst.EntryStatus.SIGN);
queryStatusResp.setFailReason("");
queryStatusResp.setSignUrl(stateResp.getSignUrl());
}
case "APPLYMENT_STATE_SIGNING", "APPLYMENT_STATE_FINISHED" -> {
queryStatusResp.setStatus(PayCst.EntryStatus.FINISH);
queryStatusResp.setFailReason("");
queryStatusResp.setThirdMerchantId(stateResp.getSubMchId());
}
}
return queryStatusResp;
}
/**
* 进件商户
*
@@ -46,22 +106,25 @@ public class WechatEntryManager {
EntryThirdRespDto respDto = new EntryThirdRespDto()
.setPlatform(PayCst.Platform.WECHAT);
log.info("微信进件参数:{}", JSONObject.toJSONString(entryReqDto));
try {
String params = JSONObject.toJSONString(entryReqDto, JSONWriter.Feature.IgnoreEmpty);
String respBody = WechatReqUtils.postReq(configDto, "/v3/applyment4sub/applyment/", params);
JSONObject object = JSONObject.parseObject(respBody);
if (object.containsKey("applyment_id")) {
JSONObject data = object.getJSONObject("data");
log.info("微信进件结果:{}", respBody);
if (data != null) {
respDto.setStatus(PayCst.EntryStatus.INIT);
respDto.setEntryId(object.getString("applyment_id"));
respDto.setEntryId(data.getString("applyment_id"));
respDto.setErrorMsg("");
} else {
respDto.setStatus(PayCst.EntryStatus.FAIL);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setEntryId("");
respDto.setErrorMsg(object.getString("message"));
}
} catch (Exception e) {
log.error("微信进件报错:{}", e.getMessage(), e);
respDto.setStatus(PayCst.EntryStatus.FAIL);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setEntryId("");
respDto.setErrorMsg(e.getMessage());
}
@@ -71,22 +134,25 @@ public class WechatEntryManager {
public static JSONObject queryBankList(WechatPayConfigDto configDto, Integer offset, Integer limit) {
String resp = WechatReqUtils.getReq(configDto, "/v3/capital/capitallhh/banks/corporate-banking", Map.of("offset", offset, "limit", limit));
log.info("查询银行列表:{}", resp);
log.info("微信查询银行列表:{}", resp);
return JSONObject.parseObject(resp);
}
public static JSONObject queryBankBranchList(WechatPayConfigDto configDto, String bankAliceCode, String cityCode, Integer offset, Integer limit) {
String resp = WechatReqUtils.getReq(configDto, "/v3/capital/capitallhh/banks/" + bankAliceCode + "/branches", Map.of("city_code", cityCode, "offset", offset, "limit", limit));
log.info("微信查询银行支行列表:{}", resp);
return JSONObject.parseObject(resp);
}
public static JSONObject queryProvinceList(WechatPayConfigDto configDto) {
String resp = WechatReqUtils.getReq(configDto, "/v3/capital/capitallhh/areas/provinces", Map.of());
log.info("微信查询省份列表:{}", resp);
return JSONObject.parseObject(resp);
}
public static JSONObject queryCityList(WechatPayConfigDto configDto, String provinceCode) {
String resp = WechatReqUtils.getReq(configDto, "/v3/capital/capitallhh/areas/provinces/" + provinceCode + "/cities", Map.of());
log.info("微信查询城市列表:{}", resp);
return JSONObject.parseObject(resp);
}
@@ -257,58 +323,16 @@ public class WechatEntryManager {
}
public static void main(String[] args) throws IOException {
WechatPayConfigDto dto = new WechatPayConfigDto()
.setMerchantId("1643779408")
.setApiV3Key("a92baac5eb7a36ed8ec198113e769a03")
.setSerialNumber("4DE9BAC2EA584C3F274F694C9753CA814C4E9BF4")
.setPublicKey("""
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtbeWXEEjBaYtw2OyM+SC
aCEMbryRXi4duKxx3vYG4rUVix+d5/Jz7Khev4Upml9zC+Xxvv/G9bHWAUyolzqD
wefahGurIxr43r4GJVnQ4i5G6BbBVw5d4Vuz0y/9Zd14zmc/EmBpT0Ml26H7tOZl
n1LSbQ4xNFkrRKrNEcExBLxkCd+K5K2TREZznywIi0izbHImvuzM8IneuR51FiqK
pdFnAjTwb126EIj6ECkL6KLCl8RWqpfiX8SFiolSQLs1/w79O0sIUk96X2zWpnoW
rTDFatPif/VEKl3y2dTlxxDxoZtVi48yTDW00OMzVl5D67oX3FVK0KsjHJSCfGlZ
6wIDAQAB
-----END PUBLIC KEY-----""")
.setPrivateKey("""
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDqnAZhTxT572fo
6wvSr8Rt0vRXg+EFKC6UvUiNE24oocQU5fjedX9KL/+fmoqay/xqIxvxvCNFTs4J
zlMqavSl6bMWCpjvf/Ry82JmN1v2kJEO4lgP8BsEiqlUpObCH8BMAVUOn1j+9q4Q
uZJJcbtRvec2fNweDM8EJp4B7RlUdDbHm86lfcDVp8iini7VjDp6D7aHT+C8A8OT
ugxQIquDec778wVd9r2Sv3+t6rAzFs+n+Zu++2xtFEPhO5N0wjrLHaukl+9crU+1
lktjDzcPd07SwGZ+A+3BTmW3UCramI3506e/3MWBECB7ge+gM4URAV0nJJCLH/Im
WgEvPMr5AgMBAAECggEBAKv+wraoMWqiVv1tA/froAgbtcJLDranJK8qrXuvmPz0
yzm+91qvrSgIVFEADUk67swo/R2Vng37nhWWS2Y3jy/rSr2H+2Lp3Z5ATA0/3I3A
onfU/FaC4mvL9CP32KzMdj/CYkccDzSsSCQ+x75MQNXGcTGDDCSDo2kZnpEu73j3
aqvO1jbqTGWigRfjOIaIhStjQIT8nEm/3mJ4f5dM9M6FMz33mhax8EahSgvdahYB
t45iaGOWw81OJhmry47EvpwjXBl7jtO2HX3LiLbq5Ebcwu1zqDz5NM7ttnnGAqWC
6y7JN5Vt4wPYrCydiUDe7dj0looffr2yw6MkNfYjLGECgYEA+FAvbEInQEi9YguS
CQtLHngqvYeai66tvyykog9o38KHnPGx2Myf+rn/Hcp7KNRfjd5G34CCNg7KLnrx
YIYh6+2bY3jirzdYUxuNKGbvM4gky/6M/P9zHF/uALKOE02yArdqemf4UxUvrYCc
JdXsAMqvbpdvW1aGgNRB32YCkG0CgYEA8d89vawsCjNCEUh0VWTMoBLFoex3qBMZ
rfzYQeBo6bDCRlAlUVzl+ouBUxSYxP/U8rzeNaRzGUwRLmlGMjyIr58FBlHsg2cR
DlsX3HVCUjpS6sgPXOqakdiLfhMcHZAspislSyVfeS3TbUWiA45+5PuNUq+EZYwl
ESsB1+yfRT0CgYEA0Ct49ksnWM8iZbXJgeeD3FFlk2rBd2TDqEem5W4Bv8T3p+0/
6b7yR2HyrGj5gys3yFmWFP1JLESN3xWWkhMhEQcrg+LuN3Iwi8vHNR3GXu892f7W
96q4OAt8Hf2S+j/igkB99YyANDbIt63gOh/zMF67X/14j5wkOpC3gK+maqkCgYEA
s7nIrPoUt3ejLiiCmTmPe5q3VDzcJP4cZNau8zSHgK6hjZHcSPsYwPWMoWl6o1fe
qoiBLacHB9MoKS58xLOKdcVZ/Ho/ntylJd+2eVCAeY1xM5h5IfgJ5znbXVFh4O3S
357L1Wzt5qOQqW/GlZH65LevKbPWU4axvHISqpnfN5kCgYEAqiqLuAPu84VSsqsE
GFh25t+1f0JY1sNfilE3/t9AdQeeCFv/5z9KB1kMt3a5ZFeVonsFIvCyaOJjhSkj
4HCB94vWS7NuN5G9r874lMaPbZYQGwrcVaf265tN7cYYr3gUx1qB6+u+fh/kcft1
BBmTzhb0zp5k8ngwAkA1g/LK204=
-----END PRIVATE KEY-----""")
.setPublicKeyId("PUB_KEY_ID_0116437794082025111000382377001000")
.setDomain("https://api.mch.weixin.qq.com");
int offset = 0;
Integer limit = 100;
// JSONObject resp = queryBankList(dto, offset, limit);
queryMerchantEntryStatus(null, "20220106000000000001");
// int offset = 0;
// Integer limit = 100;
// JSONObject resp = queryBankList(null, offset, limit);
// queryBankBranchList(dto, "1000009561", "110000", offset, limit);
queryBankBranchList(dto, "1000009561", "29", offset, limit);
// queryBankBranchList(dto, "1000009561", "29", offset, limit);
// queryProvinceList(dto);
// queryCityList(dto, "28");

View File

@@ -0,0 +1,29 @@
package com.czg.third.wechat.dto.resp;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
/**
* @author yjjie
* @date 2026/1/7 15:46
*/
@Data
public class WechatAuditDetail {
/**
* 字段名
*/
@JSONField(name = "field")
public String field;
/**
* 字段名称
*/
@JSONField(name = "field_name")
public String fieldName;
/**
* 驳回原因
*/
@JSONField(name = "reject_reason")
public String rejectReason;
}

View File

@@ -0,0 +1,70 @@
package com.czg.third.wechat.dto.resp;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 微信进件状态查询返回参数
* @author yjjie
* @date 2026/1/7 15:42
*/
@Data
@Accessors(chain = true)
public class WechatQueryStateResp {
/**
* 业务申请编号
*/
@JSONField(name = "business_code")
public String businessCode;
/**
* 微信支付申请单号
*/
@JSONField(name = "applyment_id")
public String applyId;
/**
* 特约商户号
* 当申请单状态为APPLYMENT_STATE_TO_BE_SIGNED、APPLYMENT_STATE_SIGNING、APPLYMENT_STATE_FINISHED时才返回。
*/
@JSONField(name = "sub_mchid")
public String subMchId;
/**
* 超级管理员签约链接
* 1、超级管理员用微信扫码关注“微信支付商家助手”公众号后公众号将自动发送签约消息超管需点击消息根据指引完成核对联系信息、账户验证、签约等操作
* 2、超管完成核对联系信息后续申请单进度可通过公众号自动通知超级管理员。
*/
@JSONField(name = "sign_url")
public String signUrl;
/**
* 申请单状态
* APPLYMENT_STATE_EDITTING:(编辑中)提交申请发生错误导致,请尝试重新提交。
* APPLYMENT_STATE_AUDITING:(审核中)申请单正在审核中,超级管理员用微信打开“签约链接”,完成绑定微信号后,申请单进度将通过微信公众号通知超级管理员,引导完成后续步骤。
* APPLYMENT_STATE_REJECTED:(已驳回)请按照驳回原因修改申请资料,超级管理员用微信打开“签约链接”,完成绑定微信号,后续申请单进度将通过微信公众号通知超级管理员。
* APPLYMENT_STATE_TO_BE_CONFIRMED:(待账户验证)请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成账户验证。
* APPLYMENT_STATE_TO_BE_SIGNED:(待签约)请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成签约。
* APPLYMENT_STATE_SIGNING:(开通权限中)系统开通相关权限中,请耐心等待。
* APPLYMENT_STATE_FINISHED:(已完成)商户入驻申请已完成。
* APPLYMENT_STATE_CANCELED:(已作废)申请单已被撤销。
*/
@JSONField(name = "applyment_state")
public String applyState;
/**
* 申请状态描述
*/
@JSONField(name = "applyment_state_msg")
public String applyStateMsg;
/**
* 驳回原因详情
*/
@JSONField(name = "audit_detail")
public List<WechatAuditDetail> auditDetail;
}