feat:网商接口

This commit is contained in:
苏竹红
2025-11-18 18:22:50 +08:00
parent 9ae993c248
commit f40cfb5c92
11 changed files with 213 additions and 6 deletions

View File

@@ -0,0 +1,20 @@
package com.cool.store.dto.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/18 17:55
* @Version 1.0
*/
@Data
public class AccountActiveUrlDTO {
@ApiModelProperty(value = "商户门店编号",required = true)
private String outStoreId;
@ApiModelProperty(value = "H5 激活页短链(商户需访问此链接完成操作,非公网可直接访问需确认权限)",required = true)
private String activateUrl;
@ApiModelProperty(value = "短链失效时间格式YYYY-MM-DD HH:mm:ss过期后需重新调用接口生成",required = true)
private String expireTime;
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.dto.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/18 18:20
* @Version 1.0
*/
@Data
public class StoreIdDTO {
@ApiModelProperty(value = "商户门店编号",required = true)
private String outStoreId;
}

View File

@@ -54,4 +54,32 @@ public class AccountAddTagRequest {
@ApiModelProperty(value = "法人联系电话", required = true) @ApiModelProperty(value = "法人联系电话", required = true)
@NotBlank(message = "法人联系电话不能为空") @NotBlank(message = "法人联系电话不能为空")
private String legalPhone; private String legalPhone;
@ApiModelProperty(value = "开户许可证图片链接,企业必选", required = true)
private String industryLicensePhoto;
@ApiModelProperty(value = "法人代表证件人像面图片链接", required = true)
private String certPhotoA;
@ApiModelProperty(value = "法人代表证件国徽面 / 签证面图片链接", required = true)
private String certPhotoB;
@ApiModelProperty(value = "营业执照图片链接", required = true)
private String licensePhoto;
@ApiModelProperty(value = "签约人姓名", required = true)
private String signatoryName;
@ApiModelProperty(value = "签约人身份证", required = true)
private String signatoryNo;
@ApiModelProperty(value = "签约人联系电话", required = true)
private String signatoryPhone;
@ApiModelProperty(value = "签约人证件人像面图片链接", required = true)
private String signatoryPhotoA;
@ApiModelProperty(value = "签约人证件国徽面图片链接", required = true)
private String signatoryPhotoB;
} }

View File

@@ -17,5 +17,8 @@ public class AddTagCallbackNoticeRequest {
private Integer status; private Integer status;
@ApiModelProperty(name = "1.法人 2.非法人", required = true) @ApiModelProperty(name = "1.法人 2.非法人", required = true)
private Integer addTagType; private Integer addTagType;
@ApiModelProperty(name = "失败原因", required = false)
private Integer errorMsg;
} }

View File

@@ -19,10 +19,6 @@ public class CreateStoreAndAccountRequest {
@ApiModelProperty(name = "CRM门店编号", required = true) @ApiModelProperty(name = "CRM门店编号", required = true)
private String outStoreId; private String outStoreId;
@ApiModelProperty(name = "组织编号", required = true)
private String orgCode;
@ApiModelProperty(name = "组织名称", required = true)
private String orgName;
@ApiModelProperty(name = "联系电话", required = true) @ApiModelProperty(name = "联系电话", required = true)
private String phoneNumber; private String phoneNumber;
@ApiModelProperty(name = "结算卡业务类型 枚举值1对公 2对私", required = true) @ApiModelProperty(name = "结算卡业务类型 枚举值1对公 2对私", required = true)

View File

@@ -0,0 +1,83 @@
package com.cool.store.request.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/18 18:16
* @Version 1.0
*/
@Data
public class OldStoreAccountCreateRequest {
@ApiModelProperty(value = "CRM门店编号", required = true)
private String outStoreId;
@ApiModelProperty(value = "联系电话", required = true)
private String phoneNumber;
@ApiModelProperty(value = "结算卡业务类型 枚举值1对公 2对私(结算类型)", required = true, example = "1")
private Integer accountType;
@ApiModelProperty(value = "开户类型:1企业 2个体工商户 3个人(小微商户)", required = true, example = "1")
private Integer businessType;
@ApiModelProperty(value = "营业执照号码,与企业证件类型对应的企业注册号(企业与个体户必传)")
private String licenseNo;
@ApiModelProperty(value = "工商注册名称(与注册工商信息时一致)(企业与个体户必传)")
private String licenseName;
@ApiModelProperty(value = "法人姓名", required = true)
private String legalName;
@ApiModelProperty(value = "法人证件号码", required = true)
private String legalNo;
@ApiModelProperty(value = "法人联系电话(企业与个体户必传)")
private String legalPhone;
@ApiModelProperty(value = "账户简称", required = true)
private String accountAliasName;
@ApiModelProperty(value = "结算银行卡号", required = true)
private String accountCardNo;
@ApiModelProperty(value = "结算卡银行预留手机号(存量门店可能没有)", required = true)
private String accountPhone;
@ApiModelProperty(value = "开户支行", required = true)
private String bankNo;
@ApiModelProperty(value = "开户支行名称", required = true)
private String bankName;
@ApiModelProperty(value = "开户许可证图片链接,企业必选")
private String industryLicensePhoto;
@ApiModelProperty(value = "法人代表证件人像面图片链接", required = true)
private String certPhotoA;
@ApiModelProperty(value = "法人代表证件国徽面图片链接", required = true)
private String certPhotoB;
@ApiModelProperty(value = "营业执照图片链接", required = true)
private String licensePhoto;
@ApiModelProperty(value = "签约人姓名", required = true)
private String signatoryName;
@ApiModelProperty(value = "签约人身份证", required = true)
private String signatoryNo;
@ApiModelProperty(value = "签约人联系电话", required = true)
private String signatoryPhone;
@ApiModelProperty(value = "签约人证件人像面图片链接", required = true)
private String signatoryPhotoA;
@ApiModelProperty(value = "签约人证件国徽面图片链接", required = true)
private String signatoryPhotoB;
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.request.wallet;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2025/11/18 18:00
* @Version 1.0
*/
@Data
public class OnlineCommercialBankCallbackRequest {
@ApiModelProperty(name = "CRM门店编号", required = true)
private String outStoreId;
@ApiModelProperty(name = "网商账户编号", required = true)
private String accountNo;
@ApiModelProperty(name = "4.已开通 5.开通失败", required = true)
private Integer accountStatus;
@ApiModelProperty(name = "开户失败原因", required = true)
private String failReason;
@ApiModelProperty(name = "钱包类型 1.平安 2.网商 目前只有网商是创建账户异步的 预留字段", required = true)
private int walletType;
}

View File

@@ -183,6 +183,25 @@ public class WalletApiService {
return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/account/v1/findAccountPage", request, AccountPageDTO.class); return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/account/v1/findAccountPage", request, AccountPageDTO.class);
} }
/**
* 获取账户激活链接
* @param request
* @return
*/
public AccountActiveUrlDTO pushAccountActiveUrl(OutStoreIdRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/account/ws/v1/create", request, AccountActiveUrlDTO.class);
}
/**
* 老店创建门店网商账户
* @param request
* @return
*/
public StoreIdDTO oldStoreOpenAccount(OldStoreAccountCreateRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/account/ws/v1/create", request, StoreIdDTO.class);
}

View File

@@ -66,6 +66,13 @@ public interface WalletService {
*/ */
Boolean largePaymentCallback(PaymentDTO request); Boolean largePaymentCallback(PaymentDTO request);
/**
* 网商银行 回调接口
* @param request
* @return
*/
Boolean onlineCommercialBankCallback(OnlineCommercialBankCallbackRequest request);
/** /**
* 账户交易回调 * 账户交易回调
* @param request * @param request

View File

@@ -75,8 +75,6 @@ public class WalletServiceImpl implements WalletService {
} }
CreateStoreAndAccountRequest accountRequest = CreateStoreAndAccountRequest.builder() CreateStoreAndAccountRequest accountRequest = CreateStoreAndAccountRequest.builder()
.outStoreId(shopInfo.getStoreId()) .outStoreId(shopInfo.getStoreId())
.orgCode(String.valueOf(regionDO.getId()))
.orgName(regionDO.getName())
.phoneNumber(request.getMobile()) .phoneNumber(request.getMobile())
.accountType(BankAccountTypeEnum.PRIVATE.getType()) .accountType(BankAccountTypeEnum.PRIVATE.getType())
.businessType(BankBusinessTypeEnum.PERSONAL.getType()) .businessType(BankBusinessTypeEnum.PERSONAL.getType())
@@ -203,6 +201,11 @@ public class WalletServiceImpl implements WalletService {
return Boolean.TRUE; return Boolean.TRUE;
} }
@Override
public Boolean onlineCommercialBankCallback(OnlineCommercialBankCallbackRequest request) {
return Boolean.TRUE;
}
@Override @Override
public Boolean accountTradeCallback(AccountTradeCallbackRequest request) { public Boolean accountTradeCallback(AccountTradeCallbackRequest request) {
return Boolean.TRUE; return Boolean.TRUE;

View File

@@ -14,6 +14,7 @@ import com.cool.store.request.notice.ThirdHandleMessageRequest;
import com.cool.store.request.notice.ThirdMatterRequest; import com.cool.store.request.notice.ThirdMatterRequest;
import com.cool.store.request.wallet.AccountTradeCallbackRequest; import com.cool.store.request.wallet.AccountTradeCallbackRequest;
import com.cool.store.request.wallet.AddTagCallbackNoticeRequest; import com.cool.store.request.wallet.AddTagCallbackNoticeRequest;
import com.cool.store.request.wallet.OnlineCommercialBankCallbackRequest;
import com.cool.store.request.xgj.FranchiseFeeCallBackRequest; import com.cool.store.request.xgj.FranchiseFeeCallBackRequest;
import com.cool.store.request.xgj.ReceiptCallBackRequest; import com.cool.store.request.xgj.ReceiptCallBackRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
@@ -239,4 +240,10 @@ public class OpenApiController {
return ApiResponse.successByWallet(walletService.accountTradeCallback(request)); return ApiResponse.successByWallet(walletService.accountTradeCallback(request));
} }
@ApiOperation("网商银行通知接口")
@PostMapping("/wallet/onlineCommercialBankCallback")
public ApiResponse<Boolean> accountTradeCallback(@RequestBody @Validated OnlineCommercialBankCallbackRequest request) {
return ApiResponse.successByWallet(walletService.onlineCommercialBankCallback(request));
}
} }