Merge branch 'pay' into test

This commit is contained in:
gong
2026-01-08 18:19:40 +08:00
10 changed files with 299 additions and 247 deletions

View File

@@ -60,8 +60,8 @@ public class EntryManagerTask {
for (ShopDirectMerchant shopDirectMerchant : list) {
String wechatMerchantId = "";
String alipayMerchantId = "";
if (PayCst.EntryStatus.NEED_QUERY_LIST.contains(shopDirectMerchant.getWechatStatus())) {
QueryStatusResp wechatStatus = EntryManager.queryWechatEntryStatus(shopDirectMerchant.getMerchantCode());
if (PayCst.EntryStatus.NEED_QUERY_LIST.contains(shopDirectMerchant.getWechatStatus()) && StrUtil.isNotBlank(shopDirectMerchant.getWechatApplyId())) {
QueryStatusResp wechatStatus = EntryManager.queryWechatEntryStatus(shopDirectMerchant.getWechatApplyId());
shopDirectMerchant.setWechatStatus(wechatStatus.getStatus());
shopDirectMerchant.setWechatErrorMsg(wechatStatus.getFailReason());
shopDirectMerchant.setWechatSignUrl(wechatStatus.getSignUrl());
@@ -69,8 +69,8 @@ public class EntryManagerTask {
wechatMerchantId = wechatStatus.getThirdMerchantId();
}
}
if (PayCst.EntryStatus.NEED_QUERY_LIST.contains(shopDirectMerchant.getAlipayStatus())) {
QueryStatusResp alipayStatus = EntryManager.queryAlipayEntryStatus(shopDirectMerchant.getMerchantCode());
if (PayCst.EntryStatus.NEED_QUERY_LIST.contains(shopDirectMerchant.getAlipayStatus()) && StrUtil.isNotBlank(shopDirectMerchant.getAlipayOrderId())) {
QueryStatusResp alipayStatus = EntryManager.queryAlipayEntryStatus(shopDirectMerchant.getAlipayOrderId());
shopDirectMerchant.setAlipayStatus(alipayStatus.getStatus());
shopDirectMerchant.setAlipayErrorMsg(alipayStatus.getFailReason());
shopDirectMerchant.setAlipaySignUrl(alipayStatus.getSignUrl());

View File

@@ -9,6 +9,7 @@ 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.alipay.AlipayIsvEntryManager;
import com.czg.third.wechat.WechatEntryManager;
import com.czg.utils.AssertUtil;
import com.czg.utils.AsyncTaskExecutor;
@@ -40,7 +41,7 @@ public class EntryManager {
/**
* 查询微信进件状态
*
* @param merchantCode 商户编号
* @param merchantCode 商户编号, 进件时返回的批次号 {@link EntryRespDto#wechatApplyId}
* @return 进件状态
*/
public static QueryStatusResp queryWechatEntryStatus(String merchantCode) {
@@ -50,11 +51,11 @@ public class EntryManager {
/**
* 查询支付宝进件状态
*
* @param merchantCode 商户编号
* @param batchNo 商户编号, 进件时返回的批次号 {@link EntryRespDto#alipayOrderId}
* @return 进件状态
*/
public static QueryStatusResp queryAlipayEntryStatus(String merchantCode) {
return AlipayEntryManager.queryMerchantEntryStatus(null, merchantCode);
public static QueryStatusResp queryAlipayEntryStatus(String batchNo) {
return AlipayIsvEntryManager.queryMerchantBatchStatus(null, batchNo);
}
/**
@@ -77,7 +78,7 @@ public class EntryManager {
tasks.add(() -> WechatEntryManager.entryMerchant(null, reqDto));
}
if (ArrayUtil.contains(platform, PayCst.Platform.ALIPAY)) {
tasks.add(() -> AlipayEntryManager.entryMerchant(null, reqDto));
tasks.add(() -> AlipayIsvEntryManager.entryMerchant(null, reqDto));
}
// 执行所有任务
@@ -235,6 +236,7 @@ public class EntryManager {
AssertUtil.isBlank(baseInfo.getUserType(), "商户类型不能为空");
AssertUtil.isBlank(baseInfo.getShortName(), "商户简称不能为空");
AssertUtil.isBlank(baseInfo.getMccCode(), "商户行业编码不能为空");
AssertUtil.isBlank(baseInfo.getAlipayAccount(), "支付宝账号不能为空");
AssertUtil.isBlank(baseInfo.getContactPersonType(), "联系人类型不能为空");
if (!PayCst.ContactPersonType.SUPER.equals(baseInfo.getContactPersonType()) && !PayCst.ContactPersonType.LEGAL.equals(baseInfo.getContactPersonType())) {
throw new CzgException("联系人类型错误");
@@ -367,11 +369,11 @@ public class EntryManager {
// uploadParamImage(merchantDto);
verifyEntryParam(merchantDto);
uploadParamImage(merchantDto);
System.out.println(merchantDto);
// uploadParamImage(merchantDto);
// System.out.println(merchantDto);
// entryMerchant(merchantDto, PayCst.Platform.WECHAT);
// entryMerchant(merchantDto, PayCst.Platform.ALIPAY);
entryMerchant(merchantDto, PayCst.Platform.WECHAT, PayCst.Platform.ALIPAY);
entryMerchant(merchantDto, PayCst.Platform.ALIPAY);
// entryMerchant(merchantDto, PayCst.Platform.WECHAT, PayCst.Platform.ALIPAY);
}
private static AggregateMerchantDto getTestMerchantEntryData() {
@@ -382,7 +384,8 @@ public class EntryManager {
baseInfoDto.setUserType("1");
baseInfoDto.setCompanyChildType("1");
baseInfoDto.setShortName("测试商户");
baseInfoDto.setMccCode("0741");
baseInfoDto.setAlipayAccount("1157756119@qq.com");
baseInfoDto.setMccCode("A0001_B0001");
baseInfoDto.setContactPersonType(PayCst.ContactPersonType.SUPER);
baseInfoDto.setContactName("张三");
baseInfoDto.setContactPersonId("110101199001011234");

View File

@@ -10,6 +10,11 @@ import java.util.List;
*/
public interface PayCst {
/**
* 长期有效时间
*/
String LONG_TERM_DATE = "2099-12-31";
/**
* 平台
*/

View File

@@ -1,6 +1,7 @@
package com.czg.dto.resp;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 查询进件状态
@@ -8,6 +9,7 @@ import lombok.Data;
* @date 2026/1/7 17:12
*/
@Data
@Accessors(chain = true)
public class QueryStatusResp {
/**

View File

@@ -2,6 +2,7 @@ package com.czg.third.alipay;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.FileItem;
@@ -344,11 +345,12 @@ public class AlipayEntryManager {
return entryParams;
}
public static void main(String[] args) {
public static void main(String[] args) throws ApiException {
// queryBankBranchList("CMB", "陕西省", "西安市");
uploadImage(null, "https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240312/31476c871c224389aea0ac4e17c964a3.jpg");
// uploadImage(null, "https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240312/31476c871c224389aea0ac4e17c964a3.jpg");
test();
}
// https://opendocs.alipay.com/solution/0dec7x?pathHash=caec4753 直付通
@@ -361,6 +363,7 @@ public class AlipayEntryManager {
alipayConfig.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB");
alipayConfig.setPrivateKey("MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCz3FkdffxZibdwis9W7eOW1dEjGAbSvRDL2ikfeCIW5KZNoIjUqxI0mIoUlLRRKO71QLHZS1Vb2aJp8jeOAqIPa8e76HTneQEzk3FGA8gpraSGvbadHWzvxnmYKsts1TBiEZQL82ySJXhQTJvZ6jyDM7s6wHHUnrH+Qi29QpppQ1sxsoJeCtajUgRg3btD6XbBcyFAX3pzM56Kw9eaIjZoD8WToZOM/Y3sqNL2uo8lLqcIpTrI7Pq5ZOspmBQ+t8v3rS9IdDZZMvd0trzS67AXwHz8rKPBT/lL1A4iHnXCHUvktusX1fPs3/RGY/a7PIddaBLnfY0GcueE16K7QcrXAgMBAAECggEAbSdT2eckp75BWoaTcGEs1tRqeM7TDT/6moyKmnOQ1K3tE31SrSYpBUxxuC3LBNo/sw2RIZtrcTOyMnPyLTgB3DP/4lUf5X51MTTQ8LnI1ypvh+pIki9Sdm3QS33lOOZk149tdpdDk6ozyx/DEcvq74EMpoo2SuAIi5LkKVDrXuehvGA/WeXtpmuPgqRFdIA+JBlA3knHk5XEQY/k2Y31gq5oCwNL9iT9OAZqVkukE6EnvCXE9t2rAV4/snYilaf/UaO+ktgEwSbPBQ8YKlovDAarMBbGtgr6E174A9djlPyR+W/fgx8rlTwSWtieb9MkO8LN3KSxgVs0kY5U8OHg8QKBgQDljJq9kTFHare+W/fAXdUy3tJprfNQCAii6s+GuDfTQiviVQDtWmdtHAN+xU3to7MepvVhwHsqtQnZXKTtZuwwxn82FNl7A5RYD3GVFW+wG6AsGLIdESrWxySoL6Kx8QmNpMEVg8acT/ywzW/RnUXS5vU7GIi8GA0vtyBo24R9KQKBgQDIlf/R9+iNk9oXlbB/k4um9eVvBBS7l5cx4E5Id5Dpp4kGZfPZEa7oDsEUstZZM9mgQLJK/noNWbcf0+BohCR5ux7SC12qIoxwN3k4BzTDqrS8BzFuVVp5PELUsf/uCbRn05iMzpiDUhj3Vde04wvjHYIobfKlZO2HeSWXCpUH/wKBgQC8wSuU6ck90pEY5QMKmZ3wYK1g3PsQOirv3Gmde+nbu7PePsuuYQJfBAQTwCZeXJezgtKP+PjOm2Nn6vhrhpB9YxvD2s0ijET1TG23i5L1myHQYNZFdJJnXgXUjqcX7v5ODMYA7QTqEBPXRnbGRK7fx66rU3dMQ/LD46+wyaFeUQKBgA4QTk53dkuu6SSsLyLSwoDjTsHY5Gc+urAZjQORtoxbXcUgEtfOYJgOqMT9wP+iHgkZYCbX7tDO0IMfxOUvFqueTgvmFhwergAUM6CVCMMLTf689l9JBr3nVrw4+rvC3G5HLLP6rEDQ2cVFtIkPPj8fS4fwJYopKGpOOS9843QbAoGBAMoHH8LqoZ50FLsospx/hJe24Cd8wCgQTXSa/hMqNZ1999JDhftMt7R0ZdB1he2LReACe0K9ntBU4H4u225zZ3wZlyOfoyerAHuLK/ysNlgIIzblZlOxbBJ64Kul8leXzlYy3tOZuZ997KqBcWPCE3LUBBNvM6E3blJUnlmJAVoi");
defaultClient.setAlipayConfig(alipayConfig);
log.info("dd: {}", JSONObject.toJSONString(alipayConfig));
AlipayOpenAgentApi api = new AlipayOpenAgentApi();
AlipayOpenAgentCreateModel data = new AlipayOpenAgentCreateModel();
ContactModel contactInfo = new ContactModel();

View File

@@ -0,0 +1,239 @@
package com.czg.third.alipay;
import com.alibaba.fastjson2.JSONObject;
import com.alipay.v3.ApiException;
import com.alipay.v3.api.*;
import com.alipay.v3.model.*;
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.alipay.dto.config.AlipayConfigDto;
import com.czg.utils.UploadFileUtil;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.IOException;
/**
* 支付宝服务商进件管理
* <a href="https://opendocs.alipay.com/open-v3/b4c46445_alipay.open.agent.create?scene=common&pathHash=d7084b4b">...</a>
* @author yjjie
* @date 2026/1/8 13:34
*/
@Slf4j
public class AlipayIsvEntryManager {
private static final String ERR_MESSAGE_KEY = "message";
public static QueryStatusResp queryMerchantBatchStatus(AlipayConfigDto configDto, String batchNo) {
QueryStatusResp respDto = new QueryStatusResp()
.setPlatform(PayCst.Platform.ALIPAY);
AlipayClient.setApiClient(configDto);
try {
AlipayOpenAgentOrderApi api = new AlipayOpenAgentOrderApi();
AlipayOpenAgentOrderQueryResponseModel response = api.query(batchNo);
log.info("支付宝查询进件状态: 响应={}", response);
respDto.setApplyId(batchNo);
switch (response.getOrderStatus()) {
case "MERCHANT_INFO_HOLD" -> {
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setFailReason("三方异常,请重新提交");
return respDto;
}
case "MERCHANT_CONFIRM_TIME_OUT" -> {
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setFailReason("商户确认超时,请重新提交");
return respDto;
}
case "MERCHANT_AUDITING" -> {
respDto.setStatus(PayCst.EntryStatus.AUDIT);
respDto.setFailReason("");
return respDto;
}
case "MERCHANT_CONFIRM" -> {
respDto.setStatus(PayCst.EntryStatus.SIGN);
respDto.setFailReason("");
respDto.setSignUrl(response.getConfirmUrl());
return respDto;
}
case "MERCHANT_APPLY_ORDER_CANCELED" -> {
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setFailReason(response.getRejectReason());
return respDto;
}
case "MERCHANT_CONFIRM_SUCCESS" -> {
respDto.setStatus(PayCst.EntryStatus.FINISH);
respDto.setFailReason("");
respDto.setThirdMerchantId(response.getMerchantPid());
return respDto;
}
case null -> {
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setFailReason("查询失败");
return respDto;
}
default -> {
return respDto;
}
}
} catch (ApiException e) {
String body = e.getResponseBody();
log.error("支付宝查询进件状态异常: {}", body);
JSONObject object = JSONObject.parseObject(body);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setFailReason(object.getString(ERR_MESSAGE_KEY));
return respDto;
}
}
/**
* 创建商户
* @param configDto 配置信息
* @param reqDto 请求信息
*/
public static EntryThirdRespDto entryMerchant(AlipayConfigDto configDto, AggregateMerchantDto reqDto) {
AlipayClient.setApiClient(configDto);
EntryThirdRespDto respDto = new EntryThirdRespDto()
.setPlatform(PayCst.Platform.ALIPAY);
try {
String batchNo = createRequest(reqDto);
AlipayOpenAgentFacetofaceSignModel signModel = buildFaceToFaceModel(reqDto, batchNo);
File businessLicensePic = UploadFileUtil.getFileByUrl(reqDto.getBusinessLicenceInfo().getLicensePic().getUrl());
File shopScenePic = UploadFileUtil.getFileByUrl(reqDto.getStoreInfo().getInsidePic().getUrl());
File shopSignBoardPic = UploadFileUtil.getFileByUrl(reqDto.getStoreInfo().getDoorPic().getUrl());
// 构造请求参数以调用接口
AlipayOpenAgentFacetofaceApi api = new AlipayOpenAgentFacetofaceApi();
Object response = api.sign(null, businessLicensePic, signModel, shopScenePic, shopSignBoardPic, null);
log.info("支付宝开启代商户签约: 响应={}", JSONObject.toJSONString(response));
try {
String orderNo = confirmRequest(batchNo);
respDto.setEntryId(orderNo);
respDto.setStatus(PayCst.EntryStatus.INIT);
respDto.setErrorMsg("");
return respDto;
} catch (CzgException e) {
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setErrorMsg(e.getMessage());
return respDto;
}
} catch (ApiException e) {
String body = e.getResponseBody();
log.error("支付宝开启代商户签约,创建应用事务异常: {}", body);
JSONObject object = JSONObject.parseObject(body);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setErrorMsg(object.getString(ERR_MESSAGE_KEY));
return respDto;
} catch (IOException e) {
log.error("上传图片出错", e);
respDto.setStatus(PayCst.EntryStatus.REJECTED);
respDto.setErrorMsg("上传图片出错");
return respDto;
}
}
/**
* 开启代商户签约、创建应用事务
* @param reqDto 请求信息
* @return 请求ID
*/
public static String createRequest(AggregateMerchantDto reqDto) {
AlipayOpenAgentApi api = new AlipayOpenAgentApi();
AlipayOpenAgentCreateModel openModel = new AlipayOpenAgentCreateModel();
MerchantBaseInfoDto info = reqDto.getMerchantBaseInfo();
LegalPersonInfoDto legalPersonInfo = reqDto.getLegalPersonInfo();
String contactPersonType = info.getContactPersonType();
boolean isSuper = PayCst.ContactPersonType.SUPER.equals(contactPersonType);
ContactModel contactModel = new ContactModel();
// 联系人名称
contactModel.setContactName(isSuper ? info.getContactName() : legalPersonInfo.getLegalPersonName());
// 联系人手机号码
contactModel.setContactMobile(isSuper ? info.getContactPhone() : legalPersonInfo.getLegalPersonPhone());
// 联系人邮箱
contactModel.setContactEmail(isSuper ? info.getContactEmail() : legalPersonInfo.getLegalPersonEmail());
openModel.setContactInfo(contactModel);
openModel.setAccount(reqDto.getMerchantBaseInfo().getAlipayAccount());
try {
AlipayOpenAgentCreateResponseModel responseModel = api.create(openModel);
log.info("支付宝开启代商户签约,开启事务: 结果={}, batchNo={}", responseModel.getBatchStatus(), responseModel.getBatchNo());
return responseModel.getBatchNo();
} catch (ApiException e) {
String body = e.getResponseBody();
log.error("支付宝开启代商户签约,开启事务异常: {}", body);
JSONObject object = JSONObject.parseObject(body);
throw new CzgException("支付宝开启代商户签约,开启事务异常: " + object.getString(ERR_MESSAGE_KEY));
}
}
public static String confirmRequest(String batchNo) {
AlipayClient.setApiClient(null);
// 构造请求参数以调用接口
AlipayOpenAgentCommonsignApi api = new AlipayOpenAgentCommonsignApi();
AlipayOpenAgentCommonsignConfirmModel data = new AlipayOpenAgentCommonsignConfirmModel();
// 设置ISV 代商户操作事务编号
data.setBatchNo(batchNo);
try {
AlipayOpenAgentCommonsignConfirmResponseModel response = api.confirm(data);
log.info("支付宝开启代商户签约,确认事务: 响应={}", response);
return response.getOrderNo();
} catch (ApiException e) {
String body = e.getResponseBody();
log.error("支付宝开启代商户签约,确认事务异常: {}", body);
JSONObject object = JSONObject.parseObject(body);
throw new CzgException(object.getString(ERR_MESSAGE_KEY));
}
}
/**
* 构建 当面付参数
*/
public static AlipayOpenAgentFacetofaceSignModel buildFaceToFaceModel(AggregateMerchantDto reqDto, String batchNo) {
AlipayOpenAgentFacetofaceSignModel signModel = new AlipayOpenAgentFacetofaceSignModel();
signModel.setBatchNo(batchNo);
MerchantBaseInfoDto baseInfo = reqDto.getMerchantBaseInfo();
LegalPersonInfoDto legalPersonInfo = reqDto.getLegalPersonInfo();
BusinessLicenceInfoDto licenceInfo = reqDto.getBusinessLicenceInfo();
StoreInfoDto storeInfo = reqDto.getStoreInfo();
signModel.setMccCode(baseInfo.getMccCode());
signModel.setRate("0.38");
signModel.setSignAndAuth(true);
signModel.setBusinessLicenseNo(licenceInfo.getLicenceNo());
signModel.setBusinessLicenseMobile(legalPersonInfo.getLegalPersonPhone());
signModel.setLongTerm(PayCst.LONG_TERM_DATE.equals(licenceInfo.getLicenceEndDate()));
signModel.setDateLimitation(licenceInfo.getLicenceStartDate());
signModel.setShopName(baseInfo.getShortName());
// 设置店铺地址
SignAddressInfo shopAddress = new SignAddressInfo();
shopAddress.setCountryCode("156");
shopAddress.setDistrictCode(storeInfo.getMercAreaCode());
shopAddress.setDetailAddress(storeInfo.getBusinessAddress());
shopAddress.setProvinceCode(storeInfo.getMercProvCode());
shopAddress.setCityCode(storeInfo.getMercCityCode());
signModel.setShopAddress(shopAddress);
return signModel;
}
public static void main(String[] args) {
// confirmRequest("2026010815384505500018243");
queryMerchantBatchStatus(null, "2026010815384505500018243");
}
}

View File

@@ -1,224 +0,0 @@
package com.czg.third.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayConfig;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.*;
import com.alipay.api.request.AntMerchantExpandIndirectZftSimplecreateRequest;
import com.alipay.api.response.AntMerchantExpandIndirectZftSimplecreateResponse;
import java.util.ArrayList;
import java.util.List;
/**
* @author yjjie
* @date 2026/1/5 13:46
*/
public class AlipayReqUtils {
public static void main(String[] args) throws AlipayApiException {
// DefaultAlipayClient defaultAlipayClient = AlipayClient.getDefaultClient(null);
// AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
DefaultAlipayClient defaultAlipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AntMerchantExpandIndirectZftSimplecreateRequest request = new AntMerchantExpandIndirectZftSimplecreateRequest();
AntMerchantExpandIndirectZftSimplecreateModel model = new AntMerchantExpandIndirectZftSimplecreateModel();
// 设置商户编号
model.setExternalId("1052900599901941");
// 设置签约支付宝账户
model.setBindingAlipayLogonId("18434286340");
// 设置商户别名
model.setAliasName("一点点");
// 设置商户客服电话
// model.setServicePhone("0571-85022088");
// 设置商户联系人信息
ContactInfo contactInfos = new ContactInfo();
contactInfos.setIdCardNo("142725199902176419");
// contactInfos.setPhone("0571-85022088");
contactInfos.setName("王伟");
contactInfos.setMobile("18434286340");
contactInfos.setEmail("18434286340");
model.setContactInfos(contactInfos);
// 设置进件的二级商户名称
model.setName("王伟");
// 设置默认结算规则
DefaultSettleRule defaultSettleRule = new DefaultSettleRule();
defaultSettleRule.setDefaultSettleType("alipayAccount");
defaultSettleRule.setDefaultSettleTarget("18434286340");
model.setDefaultSettleRule(defaultSettleRule);
// 设置结算支付宝账号
model.setAlipayLogonId("18434286340");
// 设置结算银行卡信息
SettleCardInfo bizCards = new SettleCardInfo();
bizCards.setAccountInstName("招商银行");
bizCards.setBankCode("103290003044");
bizCards.setAccountType("DC");
bizCards.setUsageType("01");
bizCards.setAccountHolderName("王伟");
bizCards.setAccountInstCity("杭州市");
bizCards.setAccountInstId("CMB");
bizCards.setAccountNo("6214831259609102");
bizCards.setAccountBranchName("招商银行杭州高新支行");
bizCards.setAccountInstProvince("浙江省");
model.setBizCards(bizCards);
// 设置授权函
model.setLicenseAuthLetterImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// 设置开票资料信息
// MerchantInvoiceInfo invoiceInfo = new MerchantInvoiceInfo();
// invoiceInfo.setMailTelephone("057162288888");
// invoiceInfo.setTaxPayerQualification("01");
// invoiceInfo.setAddress("浙江省杭州市西湖区西溪路蚂蚁金服");
// invoiceInfo.setAcceptElectronic(false);
// invoiceInfo.setTelephone("057162288888");
// invoiceInfo.setTitle("蚂蚁金服(杭州)信息技术有限公司");
// invoiceInfo.setMailName("张三");
// invoiceInfo.setAutoInvoice(true);
// invoiceInfo.setTaxPayerValid("19981011");
// invoiceInfo.setTaxNo("51010482542598631219");
// invoiceInfo.setBankName("中国银行");
// AddressInfo mailAddress = new AddressInfo();
// mailAddress.setAddress("万塘路18号黄龙时代广场B座");
// mailAddress.setDistrictCode("371002");
// mailAddress.setLatitude("60.270001");
// mailAddress.setCityCode("371000");
// mailAddress.setPoiid("B0FFIVU189");
// mailAddress.setProvinceCode("370000");
// mailAddress.setLongitude("120.760001");
// invoiceInfo.setMailAddress(mailAddress);
// invoiceInfo.setBankAccount("1234567812345678123");
// model.setInvoiceInfo(invoiceInfo);
// 设置商户使用服务
List<String> service = new ArrayList<String>();
service.add("当面付");
model.setService(service);
// 设置经营地址
AddressInfo businessAddress = new AddressInfo();
businessAddress.setAddress("万塘路18号黄龙时代广场B座");
businessAddress.setDistrictCode("371002");
businessAddress.setLatitude("60.270001");
businessAddress.setCityCode("371000");
businessAddress.setPoiid("B0FFIVU189");
businessAddress.setProvinceCode("370000");
businessAddress.setType("BUSINESS_ADDRESS");
businessAddress.setLongitude("120.760001");
model.setBusinessAddress(businessAddress);
// 设置门头照
model.setOutDoorImages("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// 设置内景照
model.setInDoorImages("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// 设置商户站点信息
// SiteInfo sites = new SiteInfo();
// sites.setIcpOrgName("支付宝(中国)网络技术有限公司");
// sites.setSiteType("01");
// sites.setSiteDomain("www.alipay.com");
// sites.setScreenshotImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// sites.setRemark("备注说明");
// sites.setAuthLetterImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// sites.setSiteName("XXX网站");
// sites.setMarket("豌豆荚");
// sites.setPassword("测试密码");
// sites.setDownload("https://itunes.apple.com/cn/app/id333206289?mt=8");
// sites.setTinyAppId("2021004105652035");
// sites.setSiteUrl("https://open.alipay.com");
// sites.setIcpServiceName("支付宝");
// sites.setRemarkImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// sites.setAccount("测试账号");
// sites.setIcpNo("沪ICP备15027489号-2");
// sites.setStatus("ONLINE");
// model.setSites(sites);
// 设置商户类别码 mcc
model.setMcc("B0007");
// 设置商户行业资质图片
List<IndustryQualificationInfo> qualifications = new ArrayList<IndustryQualificationInfo>();
IndustryQualificationInfo qualifications0 = new IndustryQualificationInfo();
qualifications0.setIndustryQualificationImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
qualifications0.setIndustryQualificationType("323");
qualifications.add(qualifications0);
model.setQualifications(qualifications);
// 设置补充证件号
model.setAdditionalCertNo("9133010608210550XR");
// 设置补充证件类型
model.setAdditionalCertType("201");
// 设置补充证件图片
model.setAdditionalCertImage("c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg");
// uid参数未来计划废弃存量商户可继续使用新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.setInfoSourceUid("2088111122223333");
// 设置平替原来的info_source_uid字段
// model.setInfoSourceOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
// uid参数未来计划废弃存量商户可继续使用新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。
// model.setOverseaSettleAccount("2088111122223333");
// 设置平替原来的oversea_settle_open_id字段
// model.setOverseaSettleOpenId("074a1CcTG1LelxKe4xQC0zgNdId0nxi95b5lsNpazWYoCo5");
// 设置二级商户与服务商的签约时间
model.setSignTimeWithIsv("2015-04-15");
// 设置代扣产品信息
ZFTWithholdingInfo zftWithholdingInfo = new ZFTWithholdingInfo();
zftWithholdingInfo.setWithholdingServiceFeatureName("GENERAL_WITHHOLDING_P");
zftWithholdingInfo.setSignScene("DEFAULT");
model.setZftWithholdingInfo(zftWithholdingInfo);
// 设置交易场景
List<String> tradeScene = new ArrayList<String>();
tradeScene.add("TINY_APP");
model.setTradeScene(tradeScene);
request.setBizModel(model);
// 第三方代调用模式下请设置app_auth_token
// request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");
AntMerchantExpandIndirectZftSimplecreateResponse response = defaultAlipayClient.execute(request);
System.out.println(response.getBody());
if (response.isSuccess()) {
System.out.println("调用成功");
} else {
System.out.println("调用失败");
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
// String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
// System.out.println(diagnosisUrl);
}
}
private static AlipayConfig getAlipayConfig() {
String privateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD48HaUoV7OH7os+9L01kHgxzwIhJick4OkFq4aHsntsXEJ J3gedhuEZtV8oHKZ30DPW12IJ4S8NXtpr8OWaqrAPFonf4wVaRY1d0yIAea57kfLEn9oOEEy4FzARgMNDkyxC+/3OUdGbLHpTjfVX3gusXsEhUDy1/WewihAkoNYF37+W3W/uVLzeWoPq0EcUbRv/G/t/p6gL69ltsMAiVFG4Q/Yk24YAN6lYgBPNLXUEwQ1Q+T+1omjfavHgvarKOp33z3JOUH+aGOmDsJ5Y9gyGtJzOCipAd8Zcv+T1ygsEzZYO1/gzcbPnfO1ShqStCHzssuw8FBVx2JdfQKXKMMNAgMBAAECggEAVTrO/pg5Q00titU1Jspsh67u6OOs9H605Ws2dI7yB8VmtAGlaJh7V1t14FN2qSP8poHbhhAxq9aLyGV7C3a9u09udnN+3J28EtYjh7VO732bavWMVXxdJjQWzWWrCb9JlpxFrlkYBA6W4w/6ob0sAqCVQ7jzwbEa0R4cde8ztOa5nysKSfr4YTSs0gqvoiC6fmg8eiRJraEQBoYz9VkKFtOhhh/4w5FhVcYQ2gQvZ3kK3QVuD1eJIQKlCtz8qaox9lXKDiZT4SCmnKshdUL0u5TYIcYeBjZmhJz0Q50KHcpZrCs5y7I0+vRBH3hU+TKSQt7ureymwhbwWMHScLV2gQKBgQD+58SHXhr5M8NGagAmTdsgmCnNv2kOYMd4STyPMY10SVwCv1Bk808ZuP+7e558J1b5/OuDLI5dLq6xrZ/1wLv1G++XqxI00hlFuWS5mUGJVcXotT1mw20rVeUILc7Qe3mLvbMGgfyKf4A7Qa5SSZ4bDeDTJYaFxyiQ281hMzDuPQKBgQD6AiL/Na2/uPH4CG6juwpjYvYVUcjK+7gbRwf3wWsWMpk90Z4ju2iUiP5c1J/oK9P+1T3PIr6M4Xjza8JJj+r9KC/PVB0gBv6vVM96cDpKUEy/UMpcn/T81vqj/Z+WEOODU8Ms6NiTTm+u9ldvpCjbu0u8M+9c0JeIyadJvSTFEQKBgQCsxmFyM3nq8YfpgU2qqNjfBeRH3faSVUy+nj1a/YZYjKS+A/i1BCnYUImeBVNN6chNV342ggvY4xxruDiU9Vcw8wd58O09Oi8BEIFSP6upL6cebUI6Fjo3xlegLJRiwV6INkNTJOYM5hD/mSxUACwXQFfkJipBINXBIgraWD1RLQKBgQCj49axWq0F6+WjZVOyPaD3uh37p9trRUxRhWTxw3fB23WdktaKMgbCqHOmwzP4bRLSEVQtf2dOz1gMqu14b8HqJvgAf/F/11YJ9hz09LEhmjZVjE68HZfqT7uK2W5OX8/lfXmK7TFcj6SjG5YB96lZMhTZ0WnufEd6QkdKDZYXIQKBgQD9GDTcIMbFwbEaKHnfZaTD3f876EGRgsgrCxwdEk7LBCRPwWo7yI929M4psIlpNwNeiyjBkBunWIVkpznp6qPtJqagIPUYesU4f5v6/okq5wcpaNKSkWbIvWVLaLGOiA1aeGJtbpMpyClbSr52puHpRRdvAiIEQ74yYh0JX8q96g==";
String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
alipayConfig.setAppId("2021004174605036");
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(alipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setSignType("RSA2");
return alipayConfig;
}
}

View File

@@ -34,10 +34,15 @@ public class AlipayConfigDto {
public static AlipayConfigDto getDefaultConfig() {
return new AlipayConfigDto()
.setAppId("2021004174605036")
.setPrivateKey("MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD48HaUoV7OH7os+9L01kHgxzwIhJick4OkFq4aHsntsXEJ J3gedhuEZtV8oHKZ30DPW12IJ4S8NXtpr8OWaqrAPFonf4wVaRY1d0yIAea57kfLEn9oOEEy4FzARgMNDkyxC+/3OUdGbLHpTjfVX3gusXsEhUDy1/WewihAkoNYF37+W3W/uVLzeWoPq0EcUbRv/G/t/p6gL69ltsMAiVFG4Q/Yk24YAN6lYgBPNLXUEwQ1Q+T+1omjfavHgvarKOp33z3JOUH+aGOmDsJ5Y9gyGtJzOCipAd8Zcv+T1ygsEzZYO1/gzcbPnfO1ShqStCHzssuw8FBVx2JdfQKXKMMNAgMBAAECggEAVTrO/pg5Q00titU1Jspsh67u6OOs9H605Ws2dI7yB8VmtAGlaJh7V1t14FN2qSP8poHbhhAxq9aLyGV7C3a9u09udnN+3J28EtYjh7VO732bavWMVXxdJjQWzWWrCb9JlpxFrlkYBA6W4w/6ob0sAqCVQ7jzwbEa0R4cde8ztOa5nysKSfr4YTSs0gqvoiC6fmg8eiRJraEQBoYz9VkKFtOhhh/4w5FhVcYQ2gQvZ3kK3QVuD1eJIQKlCtz8qaox9lXKDiZT4SCmnKshdUL0u5TYIcYeBjZmhJz0Q50KHcpZrCs5y7I0+vRBH3hU+TKSQt7ureymwhbwWMHScLV2gQKBgQD+58SHXhr5M8NGagAmTdsgmCnNv2kOYMd4STyPMY10SVwCv1Bk808ZuP+7e558J1b5/OuDLI5dLq6xrZ/1wLv1G++XqxI00hlFuWS5mUGJVcXotT1mw20rVeUILc7Qe3mLvbMGgfyKf4A7Qa5SSZ4bDeDTJYaFxyiQ281hMzDuPQKBgQD6AiL/Na2/uPH4CG6juwpjYvYVUcjK+7gbRwf3wWsWMpk90Z4ju2iUiP5c1J/oK9P+1T3PIr6M4Xjza8JJj+r9KC/PVB0gBv6vVM96cDpKUEy/UMpcn/T81vqj/Z+WEOODU8Ms6NiTTm+u9ldvpCjbu0u8M+9c0JeIyadJvSTFEQKBgQCsxmFyM3nq8YfpgU2qqNjfBeRH3faSVUy+nj1a/YZYjKS+A/i1BCnYUImeBVNN6chNV342ggvY4xxruDiU9Vcw8wd58O09Oi8BEIFSP6upL6cebUI6Fjo3xlegLJRiwV6INkNTJOYM5hD/mSxUACwXQFfkJipBINXBIgraWD1RLQKBgQCj49axWq0F6+WjZVOyPaD3uh37p9trRUxRhWTxw3fB23WdktaKMgbCqHOmwzP4bRLSEVQtf2dOz1gMqu14b8HqJvgAf/F/11YJ9hz09LEhmjZVjE68HZfqT7uK2W5OX8/lfXmK7TFcj6SjG5YB96lZMhTZ0WnufEd6QkdKDZYXIQKBgQD9GDTcIMbFwbEaKHnfZaTD3f876EGRgsgrCxwdEk7LBCRPwWo7yI929M4psIlpNwNeiyjBkBunWIVkpznp6qPtJqagIPUYesU4f5v6/okq5wcpaNKSkWbIvWVLaLGOiA1aeGJtbpMpyClbSr52puHpRRdvAiIEQ74yYh0JX8q96g==")
.setAppId("2021006121646825")
.setPrivateKey("MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCz3FkdffxZibdwis9W7eOW1dEjGAbSvRDL2ikfeCIW5KZNoIjUqxI0mIoUlLRRKO71QLHZS1Vb2aJp8jeOAqIPa8e76HTneQEzk3FGA8gpraSGvbadHWzvxnmYKsts1TBiEZQL82ySJXhQTJvZ6jyDM7s6wHHUnrH+Qi29QpppQ1sxsoJeCtajUgRg3btD6XbBcyFAX3pzM56Kw9eaIjZoD8WToZOM/Y3sqNL2uo8lLqcIpTrI7Pq5ZOspmBQ+t8v3rS9IdDZZMvd0trzS67AXwHz8rKPBT/lL1A4iHnXCHUvktusX1fPs3/RGY/a7PIddaBLnfY0GcueE16K7QcrXAgMBAAECggEAbSdT2eckp75BWoaTcGEs1tRqeM7TDT/6moyKmnOQ1K3tE31SrSYpBUxxuC3LBNo/sw2RIZtrcTOyMnPyLTgB3DP/4lUf5X51MTTQ8LnI1ypvh+pIki9Sdm3QS33lOOZk149tdpdDk6ozyx/DEcvq74EMpoo2SuAIi5LkKVDrXuehvGA/WeXtpmuPgqRFdIA+JBlA3knHk5XEQY/k2Y31gq5oCwNL9iT9OAZqVkukE6EnvCXE9t2rAV4/snYilaf/UaO+ktgEwSbPBQ8YKlovDAarMBbGtgr6E174A9djlPyR+W/fgx8rlTwSWtieb9MkO8LN3KSxgVs0kY5U8OHg8QKBgQDljJq9kTFHare+W/fAXdUy3tJprfNQCAii6s+GuDfTQiviVQDtWmdtHAN+xU3to7MepvVhwHsqtQnZXKTtZuwwxn82FNl7A5RYD3GVFW+wG6AsGLIdESrWxySoL6Kx8QmNpMEVg8acT/ywzW/RnUXS5vU7GIi8GA0vtyBo24R9KQKBgQDIlf/R9+iNk9oXlbB/k4um9eVvBBS7l5cx4E5Id5Dpp4kGZfPZEa7oDsEUstZZM9mgQLJK/noNWbcf0+BohCR5ux7SC12qIoxwN3k4BzTDqrS8BzFuVVp5PELUsf/uCbRn05iMzpiDUhj3Vde04wvjHYIobfKlZO2HeSWXCpUH/wKBgQC8wSuU6ck90pEY5QMKmZ3wYK1g3PsQOirv3Gmde+nbu7PePsuuYQJfBAQTwCZeXJezgtKP+PjOm2Nn6vhrhpB9YxvD2s0ijET1TG23i5L1myHQYNZFdJJnXgXUjqcX7v5ODMYA7QTqEBPXRnbGRK7fx66rU3dMQ/LD46+wyaFeUQKBgA4QTk53dkuu6SSsLyLSwoDjTsHY5Gc+urAZjQORtoxbXcUgEtfOYJgOqMT9wP+iHgkZYCbX7tDO0IMfxOUvFqueTgvmFhwergAUM6CVCMMLTf689l9JBr3nVrw4+rvC3G5HLLP6rEDQ2cVFtIkPPj8fS4fwJYopKGpOOS9843QbAoGBAMoHH8LqoZ50FLsospx/hJe24Cd8wCgQTXSa/hMqNZ1999JDhftMt7R0ZdB1he2LReACe0K9ntBU4H4u225zZ3wZlyOfoyerAHuLK/ysNlgIIzblZlOxbBJ64Kul8leXzlYy3tOZuZ997KqBcWPCE3LUBBNvM6E3blJUnlmJAVoi")
.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB")
.setDomain("https://openapi.alipay.com/gateway.do");
.setDomain("https://openapi.alipay.com");
// return new AlipayConfigDto()
// .setAppId("2021004174605036")
// .setPrivateKey("MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD48HaUoV7OH7os+9L01kHgxzwIhJick4OkFq4aHsntsXEJ J3gedhuEZtV8oHKZ30DPW12IJ4S8NXtpr8OWaqrAPFonf4wVaRY1d0yIAea57kfLEn9oOEEy4FzARgMNDkyxC+/3OUdGbLHpTjfVX3gusXsEhUDy1/WewihAkoNYF37+W3W/uVLzeWoPq0EcUbRv/G/t/p6gL69ltsMAiVFG4Q/Yk24YAN6lYgBPNLXUEwQ1Q+T+1omjfavHgvarKOp33z3JOUH+aGOmDsJ5Y9gyGtJzOCipAd8Zcv+T1ygsEzZYO1/gzcbPnfO1ShqStCHzssuw8FBVx2JdfQKXKMMNAgMBAAECggEAVTrO/pg5Q00titU1Jspsh67u6OOs9H605Ws2dI7yB8VmtAGlaJh7V1t14FN2qSP8poHbhhAxq9aLyGV7C3a9u09udnN+3J28EtYjh7VO732bavWMVXxdJjQWzWWrCb9JlpxFrlkYBA6W4w/6ob0sAqCVQ7jzwbEa0R4cde8ztOa5nysKSfr4YTSs0gqvoiC6fmg8eiRJraEQBoYz9VkKFtOhhh/4w5FhVcYQ2gQvZ3kK3QVuD1eJIQKlCtz8qaox9lXKDiZT4SCmnKshdUL0u5TYIcYeBjZmhJz0Q50KHcpZrCs5y7I0+vRBH3hU+TKSQt7ureymwhbwWMHScLV2gQKBgQD+58SHXhr5M8NGagAmTdsgmCnNv2kOYMd4STyPMY10SVwCv1Bk808ZuP+7e558J1b5/OuDLI5dLq6xrZ/1wLv1G++XqxI00hlFuWS5mUGJVcXotT1mw20rVeUILc7Qe3mLvbMGgfyKf4A7Qa5SSZ4bDeDTJYaFxyiQ281hMzDuPQKBgQD6AiL/Na2/uPH4CG6juwpjYvYVUcjK+7gbRwf3wWsWMpk90Z4ju2iUiP5c1J/oK9P+1T3PIr6M4Xjza8JJj+r9KC/PVB0gBv6vVM96cDpKUEy/UMpcn/T81vqj/Z+WEOODU8Ms6NiTTm+u9ldvpCjbu0u8M+9c0JeIyadJvSTFEQKBgQCsxmFyM3nq8YfpgU2qqNjfBeRH3faSVUy+nj1a/YZYjKS+A/i1BCnYUImeBVNN6chNV342ggvY4xxruDiU9Vcw8wd58O09Oi8BEIFSP6upL6cebUI6Fjo3xlegLJRiwV6INkNTJOYM5hD/mSxUACwXQFfkJipBINXBIgraWD1RLQKBgQCj49axWq0F6+WjZVOyPaD3uh37p9trRUxRhWTxw3fB23WdktaKMgbCqHOmwzP4bRLSEVQtf2dOz1gMqu14b8HqJvgAf/F/11YJ9hz09LEhmjZVjE68HZfqT7uK2W5OX8/lfXmK7TFcj6SjG5YB96lZMhTZ0WnufEd6QkdKDZYXIQKBgQD9GDTcIMbFwbEaKHnfZaTD3f876EGRgsgrCxwdEk7LBCRPwWo7yI929M4psIlpNwNeiyjBkBunWIVkpznp6qPtJqagIPUYesU4f5v6/okq5wcpaNKSkWbIvWVLaLGOiA1aeGJtbpMpyClbSr52puHpRRdvAiIEQ74yYh0JX8q96g==")
// .setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB")
// .setDomain("https://openapi.alipay.com/gateway.do");
// return new AlipayConfigDto()
// .setAppId("2021004145625815")
// .setPrivateKey("MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCAjDBuS8K/IJb9ui+KuNm/sTUdEiaji4BNpZ92avO1N5JpNlGmac6ec4p3tNFT950sBLcQkClcUpQxUHQzAT6DYNNXOKyvfI/EmcqwCw6PaMNLs/8cV//J2WWZBUhLaOsjKurpm9/3W5MnTh4BGxIfBoeBMA8f8K3BgKdmyKtvIEV2h2cyjsMskdn+g6oNZcmWcms0pvpPHyH46mRaGFhpp0v19wX3WsamGldh1L2VntmaDN3C2XbSrXv90XYp5bEUqwTbLwXpMAlzTibF56d/iqv9oYi8cpAKougUFLOymnbutLNs2tLrEDSFwHcmG2/wbZHybZyYcIgFgv4arf+tAgMBAAECggEAf7hKKlw1y6Z6vvAtalxNZUuRZSfyog3p1bwYWxTavZPQcZ7Zs0lvVDmiO1u5m/7q96BbryY9IhCeUv0H5uF2lhwu/3s9AEL3qTPQkeb6eXxyhhX6A9RfPdM1Qbtg4CQHdHKg4qjP9znSVHwmDZ0y/QaEvdPdQzPjv92u9c2tn4N4x6XyBYcU5gzxiJNnIugCmBgcJo/3H2fgV+XXEhORPvy5of9b4oATHEaLS/8dAS2wuOjhzaGS4MXp3VkXn3XaYjwSzaL03qYWA+xm+aO5sJv8bmqZW7sNVck5o3sPo7cQ4VkBFVzyrRdmJcxcSRJ9MsB9JsrhoKI8pgaXrVie4QKBgQDU2vai0lpBIK/0jzRpPNoqdT8lnafnnWni8nU4kfAh+gCLi+HBPhQRT0kv4unQc2q2/gALE7sgZVO00JGY5a3R0orsojPoUSZlpypGW7GGqKy576NHn0nw4o/PdfysT92VWgt1hlfTf6qfCDhfE9APU+RGvlSWXcT8nxVel3iUaQKBgQCamoJN6+4v+chJvL2nqV8NVVRLp0vDIHxs1QOtKwUodx8Qp1D6CJYtavCXn8aNUFVNQJPJ7TQPpJjXP2rI4SN01weDwx+I+wh8PBGHV6/234R+6TvFgY1PrYgCdfNP4i/E7B4uyEhAxdU73PB8qkqRAeJGok05p7oG71KCOBiYpQKBgEZfGflcuDAeAW5GRhqg3rP4zWa/R7qgZVh9tll8jjp9b96y4XFE99d9MgId8BVVgyt6sEL5Q/2C4ni+F9TH4n6jMADp42VkJuCmsqhOOlP9whU67+2G8Sgtj0QUivPg964f9ffl8XVgGOW5DwIIB9p5btggptCLscufQK5kP545AoGADBvf6tR4wl8w9b2HqTMV08iEIqzGvVC1Dh0c/Zop/EJgN4CzUfIMOSBwGaAVAApzs+pD6QPgGP2OTwWTioo/qa4R05sbxDHNN1XJFa2jhZV6HiqMWOrNs5jm1zJ/zRjtHuJTdtyO9CvKiLbESy9XScY4/8lEfSiK5HIoJzTXkFUCgYAkYkvkW6psJpWj05XWq44UN0n6QOU/Igl35Um/iuOMVhsTmIt09STQVTuzJzfH82+sCqoRsD1blE5unKNUC1DK77aNKTv3Z0dxN9R7FAyfZRiYQXTrbBPBqWjay6FCNxn8e8UsJN4Z6FIV2LGlQI114krSap1MALKLVvnld0NaUQ==")

View File

@@ -42,15 +42,15 @@ public class WechatEntryManager {
* 查询商户进件状态
*
* @param configDto 配置信息
* @param merchantCode 自系统的商户编号
* @param applyId 自系统的商户编号
* @return 进件状态
*/
public static QueryStatusResp queryMerchantEntryStatus(WechatPayConfigDto configDto, String merchantCode) {
public static QueryStatusResp queryMerchantEntryStatus(WechatPayConfigDto configDto, String applyId) {
QueryStatusResp queryStatusResp = new QueryStatusResp();
queryStatusResp.setPlatform(PayCst.Platform.WECHAT);
queryStatusResp.setMerchantCode(merchantCode);
queryStatusResp.setMerchantCode(applyId);
String resp = WechatReqUtils.getReq(configDto, "/v3/applyment4sub/applyment/business_code/" + merchantCode, Map.of());
String resp = WechatReqUtils.getReq(configDto, "/v3/applyment4sub/applyment/applyment_id/" + applyId, Map.of());
JSONObject object = JSONObject.parseObject(resp);
JSONObject data = object.getJSONObject("data");
if (data == null) {

View File

@@ -2,10 +2,14 @@ package com.czg.utils;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.regex.Pattern;
/**
@@ -33,6 +37,21 @@ public class UploadFileUtil {
return "png";
}
/**
* 根据图片URL获取图片文件
*
* @param url 图片URL
* @return 图片文件
*/
public static File getFileByUrl(String url) throws IOException {
byte[] bytes = downloadImage(url);
Path tempFile = Files.createTempFile("image_", "." + extractImageExtension(url));
Files.write(tempFile, bytes);
return tempFile.toFile();
}
/**
* 下载图片
* @param url 图片地址