Merge branch 'pay' into test
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -10,6 +10,11 @@ import java.util.List;
|
||||
*/
|
||||
public interface PayCst {
|
||||
|
||||
/**
|
||||
* 长期有效时间
|
||||
*/
|
||||
String LONG_TERM_DATE = "2099-12-31";
|
||||
|
||||
/**
|
||||
* 平台
|
||||
*/
|
||||
|
||||
@@ -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 {
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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==")
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 图片地址
|
||||
|
||||
Reference in New Issue
Block a user