diff --git a/pom.xml b/pom.xml
index beba29486..3f708f676 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
4.0.0
manage
- 1.3.83
+ 1.3.84
UTF-8
1.8.0
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailRSvcService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailRSvcService.java
index 62935b725..71651c2d0 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailRSvcService.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailRSvcService.java
@@ -10,7 +10,7 @@ public interface RetailRSvcService {
* @param sourceCode
* @return
*/
- JSONObject findMchInfoBySourceCode(JSONObject device, String sourceCode);
+ JSONObject findMchInfoBySourceCode(JSONObject device, String sourceCode, boolean debug);
JSONObject enterIntoServiceBySourceCode(String sourceCode, JSONObject params);
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailRSvcServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailRSvcServiceImpl.java
index b8d8aa0af..07cd3ef40 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailRSvcServiceImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailRSvcServiceImpl.java
@@ -11,7 +11,6 @@ import au.com.royalpay.payment.tools.codec.AESCrypt;
import au.com.royalpay.payment.tools.device.DeviceSupport;
import au.com.royalpay.payment.tools.encryptalgorithm.SignUtils;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
-import au.com.royalpay.payment.tools.exceptions.NotFoundException;
import au.com.royalpay.payment.tools.mappers.CommonIncrementalChannelMapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@@ -44,9 +43,13 @@ public class RetailRSvcServiceImpl implements RetailRSvcService {
private ClientConfigMapper clientConfigMapper;
@Override
- public JSONObject findMchInfoBySourceCode(JSONObject device, String sourceCode) {
+ public JSONObject findMchInfoBySourceCode(JSONObject device, String sourceCode, boolean debug) {
String clientType = device.getString("client_type");
deviceSupport.findRegister(clientType);
+ JSONObject clientConfig = clientConfigMapper.find(device.getIntValue("client_id"));
+ if (!debug && !clientConfig.getBooleanValue("geek_shop_status")) {
+ throw new BadRequestException("商户未开店");
+ }
JSONObject svcInfo = commonIncrementalChannelMapper.findIncreamentalChannelBySourceCode(sourceCode);
if (svcInfo == null || StringUtils.isEmpty(svcInfo.getString("channel_pub_key"))
|| StringUtils.isEmpty(svcInfo.getString("platform_pub_key")) || StringUtils.isEmpty("platform_pri_key")) {
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailRSvcController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailRSvcController.java
index 0c42f40e4..190508339 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailRSvcController.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailRSvcController.java
@@ -4,10 +4,7 @@ import au.com.royalpay.payment.manage.appclient.core.RetailRSvcService;
import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.device.advise.AppClientController;
import com.alibaba.fastjson.JSONObject;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -19,8 +16,10 @@ public class RetailRSvcController {
private RetailRSvcService retailRSvcService;
@GetMapping(value = "/{source_code}/userinfo")
- public JSONObject findUserInfoBySourceCode(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, @PathVariable String source_code) {
- return retailRSvcService.findMchInfoBySourceCode(device, source_code);
+ public JSONObject findUserInfoBySourceCode(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device,
+ @PathVariable String source_code,
+ @RequestParam(defaultValue = "false", required = false) boolean debug) {
+ return retailRSvcService.findMchInfoBySourceCode(device, source_code, debug);
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientComplianceFileConfig.java b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientComplianceFileConfig.java
index d859e21eb..e4bc78572 100644
--- a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientComplianceFileConfig.java
+++ b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientComplianceFileConfig.java
@@ -25,7 +25,7 @@ public class ClientComplianceFileConfig {
@JSONField(name = "utility_bill")
private String utilityBill;
- private static String[] WHITE_LIST = {"utility_bill","id_title_description"};
+ private static String[] WHITE_LIST = {"utilityBill","idTitleDesc"};
public void checkParamsInvalid() throws IllegalAccessException {
for (Field field : getClass().getDeclaredFields()) {
diff --git a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientPayConfig.java b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientPayConfig.java
index 56496505f..54d8b54af 100644
--- a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientPayConfig.java
+++ b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientPayConfig.java
@@ -25,7 +25,7 @@ public class ClientPayConfig {
@JSONField(name = "company_website")
private String companyWebsite;
- private static String[] WHITE_LIST = {"companyWebsite","store_photo", "company_photo"};
+ private static String[] WHITE_LIST = {"companyWebsite","storePhoto", "companyPhoto"};
public void checkParamsInvalid() throws IllegalAccessException {
diff --git a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientRegisterInfo.java b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientRegisterInfo.java
index f674d1b68..12c48ee1c 100644
--- a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientRegisterInfo.java
+++ b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientRegisterInfo.java
@@ -7,6 +7,8 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
@@ -18,6 +20,8 @@ import java.util.Date;
*/
@Data
public class ClientRegisterInfo {
+ private static final String[] DATE_PATTERNS = {"yyyy-MM-dd HH:mm:ss"};
+
private org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
@JSONField(name = "apply_id")
private String applyId;
@@ -118,7 +122,8 @@ public class ClientRegisterInfo {
public JSONObject insertClientRateInfo(JSONObject defaultRateConfig) {
JSONObject rate = new JSONObject();
rate.put("clean_days", settleConfig.getCleanDays());
- rate.put("active_time", settleConfig.getActiveTime());
+ Date lessActiveTime = DateUtils.addDays(settleConfig.getActiveTimeDate(), -1);
+ rate.put("active_time", DateFormatUtils.format(lessActiveTime,"yyyy-MM-dd HH:mm:ss"));
rate.put("expiry_time", settleConfig.getExpireTime());
rate.put("wechat_rate_value", settleConfig.getWechatRate());
rate.put("alipay_rate_value", settleConfig.getAlipayRate());
diff --git a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientSettleConfig.java b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientSettleConfig.java
index 86caa0b20..74663013d 100644
--- a/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientSettleConfig.java
+++ b/src/main/java/au/com/royalpay/payment/manage/gateway/beans/ClientSettleConfig.java
@@ -1,28 +1,34 @@
package au.com.royalpay.payment.manage.gateway.beans;
import au.com.royalpay.payment.core.exceptions.ParamInvalidException;
+import au.com.royalpay.payment.manage.system.core.impl.ClientContractServiceImpl;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
+import cn.yixblog.platform.http.HttpRequestGenerator;
+import cn.yixblog.platform.http.HttpRequestResult;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
+import org.apache.commons.lang3.time.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMethod;
+import java.io.IOException;
import java.lang.reflect.Field;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Data
public class ClientSettleConfig {
+ private Logger logger = LoggerFactory.getLogger(ClientContractServiceImpl.class);
+
@JSONField(name = "swift_code")
private String swiftCode;
@JSONField(name = "bsb_no")
private String bsbNo;
- private String bank;
- private String city;
- private String address;
- private String system;
- private String postcode;
- private String state;
- private String branch;
@JSONField(name = "account_no")
private String accountNo;
@JSONField(name = "account_name")
@@ -41,21 +47,19 @@ public class ClientSettleConfig {
private String activeTime;
@JSONField(name = "expire_time")
private String expireTime;
+ private JSONObject bankQueryInfo;
+ private Date activeTimeDate;
-
+ private static String[] WHITE_LIST = {"bankQueryInfo","activeTimeDate"};
private static Pattern ACCOUNT_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9 &]+$");
public void checkParamsInvalid() throws IllegalAccessException {
for (Field field : getClass().getDeclaredFields()) {
field.setAccessible(true);
- if (field.get(this) == null) {
+ if (field.get(this) == null && !Arrays.asList(WHITE_LIST).contains(field.getName())) {
throw new ParamInvalidException(field.getName(), "Required Param " + field.getName() +" not found");
}
}
- }
-
- public JSONObject insertBankInfo() {
- JSONObject bankInfo = new JSONObject();
if (swiftCode.length() > 12) {
throw new BadRequestException("PARAM_ERROR:Switft code must be less than 12 characters");
}
@@ -68,21 +72,46 @@ public class ClientSettleConfig {
if (accountName.length() > 50) {
throw new BadRequestException("PARAM_ERROR:Account Name must be less than 50 characters");
}
+
Matcher matcher = ACCOUNT_NAME_PATTERN.matcher(accountName);
if (!matcher.matches()) {
throw new BadRequestException("PARAM_ERROR:Invalid Account Name format");
}
+
+ bankQueryInfo = getBankInfo(bsbNo);
+ if (bankQueryInfo == null || bankQueryInfo.isEmpty() || !bankQueryInfo.getBooleanValue("valid")) {
+ throw new BadRequestException("PARAM_ERROR:BSB No is invalid");
+ }
+ try {
+ activeTimeDate = DateUtils.parseDate(activeTime, new String[]{"yyyy-MM-dd HH:mm:ss"});
+ } catch (ParseException e) {
+ throw new BadRequestException("PARAM_ERROR:Invalid ActiveTime format");
+ }
+ }
+
+ public JSONObject insertBankInfo() {
+ JSONObject bankInfo = new JSONObject();
bankInfo.put("swift_code", swiftCode);
bankInfo.put("bsb_no", bsbNo);
bankInfo.put("account_no", accountNo);
bankInfo.put("account_name", accountName);
- bankInfo.put("bank", bank);
- bankInfo.put("city", city);
- bankInfo.put("address", address);
- bankInfo.put("system", system);
- bankInfo.put("postcode", postcode);
- bankInfo.put("state", state);
- bankInfo.put("branch", branch);
+ bankInfo.putAll(bankQueryInfo);
return bankInfo;
}
+
+ private JSONObject getBankInfo(String bsb_no) {
+ // bd451cc3e3ad66c75165dc852507e8f0
+ // 收费 ab9379cfdab559509bbdcdd11923489f
+ String url = "https://api.bank.codes/au-bsb/json/ab9379cfdab559509bbdcdd11923489f/" + bsb_no;
+ JSONObject res = new JSONObject();
+ try {
+ HttpRequestResult result = new HttpRequestGenerator(url, RequestMethod.GET).execute();
+ if (result.isSuccess()) {
+ res = result.getResponseContentJSONObj();
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return res;
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/gateway/core/impls/GatewayMerchantApplyImpl.java b/src/main/java/au/com/royalpay/payment/manage/gateway/core/impls/GatewayMerchantApplyImpl.java
index 709eeae58..6310d3597 100644
--- a/src/main/java/au/com/royalpay/payment/manage/gateway/core/impls/GatewayMerchantApplyImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/gateway/core/impls/GatewayMerchantApplyImpl.java
@@ -100,7 +100,7 @@ public class GatewayMerchantApplyImpl implements GatewayMerchantApply {
JSONObject client = registerBean.insertClientInfo(clientManager.initMerchantCode(), manager.getString("display_name"), hasParentBoolean, parentClientId);
client.put("org_id", org.getString("org_id"));
clientMapper.save(client);
- clientConfigMapper.save(registerBean.insertClientConfigInfo(client.getIntValue("client_id"),client.getString("client_moniker")));
+ clientConfigMapper.save(registerBean.insertClientConfigInfo(client.getIntValue("client_id"), client.getString("client_moniker")));
sysClientLegalPersonMapper.save(registerBean.insertClientLegalInfo(client.getIntValue("client_id")));
permissionPartnerManagerImpl.permissionClientModuleSave(client.getIntValue("client_id"), client.getString("client_moniker"));
JSONObject clientBd = new JSONObject();
@@ -113,7 +113,7 @@ public class GatewayMerchantApplyImpl implements GatewayMerchantApply {
clientBd.put("proportion", 1);
clientBDMapper.saveBD(clientBd);
clientBankAccountMapper.save(registerBean.insertBankInfo(client.getIntValue("client_id")));
- //todo 合规文件待增加source_agree_file
+
ClientAuthFilesInfo clientAuthFilesInfo = registerBean.insertClientComplianceInfo();
clientManager.uploadAuthFiles(manager, client.getString("client_moniker"), clientAuthFilesInfo);
JSONObject rateConfig = registerBean.insertClientRateInfo(JSONObject.parseObject(sysConfigManager.getSysConfig().getString("sys_rates")));
@@ -123,6 +123,9 @@ public class GatewayMerchantApplyImpl implements GatewayMerchantApply {
result.put("credential_code", client.getString("credential_code"));
result.put("company_name", client.getString("company_name"));
result.put("short_name", client.getString("short_name"));
+ } catch (BadRequestException e) {
+ logger.error("gateway api register fail :{}", e.getMessage());
+ throw new BadRequestException("PARAM_ERROR:" + e.getMessage());
} catch (Exception e) {
logger.error("gateway api register fail :{}", e.getMessage());
throw new BadRequestException("PARAM_ERROR:Params length too long");
diff --git a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java
index 0724d80a0..8f77b9482 100644
--- a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java
+++ b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java
@@ -87,14 +87,7 @@ public class CityPartnerPrizeServiceImplTest {
}};
JSONObject settleConfig = new JSONObject() {{
put("swift_code", "2");
- put("bsb_no", "201");
- put("bank", "10001");
- put("city", "339");
- put("address", "4511");
- put("system", "sytem");
- put("postcode", "postcode");
- put("state", "state");
- put("branch", "branch");
+ put("bsb_no", "033385");
put("account_no", "21213131");
put("account_name", "dasdasdasd");
put("clean_days", "2");
@@ -102,7 +95,7 @@ public class CityPartnerPrizeServiceImplTest {
put("alipay_rate", "1.2");
put("alipay_online_rate", "1.2");
put("transaction_fee", "0");
- put("active_time", "2020-02-04 00:00:00");
+ put("active_time", "2020-02-06 00:00:00");
put("expire_time", "2021-02-06 00:00:00");
}};
@@ -118,7 +111,7 @@ public class CityPartnerPrizeServiceImplTest {
JSONObject params = new JSONObject() {{
- put("apply_id", "orgtestadmin4");
+ put("apply_id", "orgapply1");
put("notify_url", "http://127.0.0.1:9002/sys/partners/7CMV/qrcode");
put("company_info", companyInfo);
put("contact_info", contactInfo);
@@ -127,10 +120,11 @@ public class CityPartnerPrizeServiceImplTest {
put("settle_info", settleConfig);
put("compliance_file_info", complianceInfo);
}};
- String originUrl = "https://sandbox.royalpay.com.au/api/v1.0/org_gateway/partner/RE2ZLPEAZL/merchant/application";
+ String originUrl = "http://127.0.0.1:5000/api/v1.0/org_gateway/partner/AXLCEXDDMB/merchant/application";
String url = addSignUrl(originUrl, params, PRIKEY);
HttpRequestGenerator gen = new HttpRequestGenerator(url, RequestMethod.POST);
gen.setJSONEntity(params);
+ gen.setTimeout(10000);
HttpRequestResult result = gen.execute();
if (result.isSuccess()) {
System.out.println(result.getResponseContentJSONObj().toJSONString());
@@ -144,7 +138,7 @@ public class CityPartnerPrizeServiceImplTest {
@Test
public void queryMerchantStatus() throws Exception{
String partnerCode = "PHQ3";
- String originUrl = "https://sandbox.royalpay.com.au/api/v1.0/org_gateway/partner/RE2ZLPEAZL/merchant/" + partnerCode + "/status";
+ String originUrl = "http://127.0.0.1:5000/api/v1.0/org_gateway/partner/AXLCEXDDMB/merchant/" + partnerCode + "/status";
String url = addSignUrl(originUrl, null, PRIKEY);
HttpRequestGenerator gen = new HttpRequestGenerator(url, RequestMethod.GET);
HttpRequestResult result = gen.execute();
@@ -157,7 +151,7 @@ public class CityPartnerPrizeServiceImplTest {
@Test
public void updateFile() throws Exception{
- String originUrl = "https://sandbox.royalpay.com.au/api/v1.0/org_gateway/partner/RE2ZLPEAZL/attachment/files";
+ String originUrl = "http://127.0.0.1:5000/api/v1.0/org_gateway/partner/AXLCEXDDMB/attachment/files";
String url = addSignUrl(originUrl, null, PRIKEY);
File file = new File("/Users/luoyang/Downloads/banner_eshop.jpg");
InputStream stream = new FileInputStream(file);