diff --git a/pom.xml b/pom.xml index cfb6e206d..c394163c9 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,10 @@ au.com.royalpay.payment rpay-core + + au.com.royalpay.payment + yeepay-core + com.github.stuxuhai jpinyin @@ -204,4 +208,4 @@ - \ No newline at end of file + diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java index 5ad52e954..0ab5fa1ae 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/ChannelsAnalysisServiceImpl.java @@ -30,6 +30,8 @@ public class ChannelsAnalysisServiceImpl implements ChannelsAnalysisService { listChannel.add(putParam(params,"AlipayOnline")); listChannel.add(putParam(params,"jd")); listChannel.add(putParam(params,"hf")); + listChannel.add(putParam(params,"Rpay")); + listChannel.add(putParam(params,"Yeepay")); return listChannel; } @@ -40,7 +42,7 @@ public class ChannelsAnalysisServiceImpl implements ChannelsAnalysisService { } List list = new ArrayList<>(); Map analysisMap = new TreeMap<>(); - String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline","hf", "Rpay"}; + String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline","hf", "Rpay","Yeepay"}; for (String channel:channels){ analysisChannelCustomers(params, analysisMap, channel); } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java index c63347edc..9ef8e1afb 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java @@ -556,7 +556,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT } } private JSONObject getTodayChannelCount(JSONObject params){ - String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline","hf", "Rpay"}; + String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline","hf", "Rpay","Yeepay"}; JSONObject resp = new JSONObject(); for(String channel:channels) { params.put("channel", channel); diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java index f682cf30a..4c69e53fc 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java @@ -1378,6 +1378,10 @@ public class RetailAppServiceImp implements RetailAppService { if (Hf.containsKey("channel")) { channels.add(Hf); } + JSONObject Yeepay = getChannel(clientId, now, "Yeepay"); + if (Yeepay.containsKey("channel")) { + channels.add(Yeepay); + } res.put("channels", channels); return res; } diff --git a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java index 5aecb73bf..0ac43fd05 100644 --- a/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java +++ b/src/main/java/au/com/royalpay/payment/manage/apps/events/listeners/AfterPaymentFinishListener.java @@ -28,29 +28,36 @@ public class AfterPaymentFinishListener implements ApplicationListener listRpaySubMerchantIdApplys(JSONObject manager, String clientMoniker); + List listYeepaySubMerchantIdApplys(JSONObject manager, String clientMoniker); + String subMerchantApplication(String clientMoniker, SubMerchantIdApply subMerchantApply,JSONObject manager); List listMerchantIds(String clientMoniker,JSONObject manager); @@ -332,13 +337,22 @@ public interface ClientManager { String getShortLink(String client_moniker); + String getGatewayShortLink(String client_moniker,String channel); + @Transactional void switchHfLink(JSONObject manager, String clientMoniker,boolean allow); + @Transactional + void switchGatewayLink(JSONObject manager, String clientMoniker,String channel,boolean allow); + void sendHfEmailNotice(JSONObject order); + void sendGatewayEmailNotice(JSONObject order); + void subRpayMerchantApplication(String clientMoniker,JSONObject merchantInfo, JSONObject manager); + void subYeepayMerchantApplication(String clientMoniker,JSONObject merchantInfo, JSONObject manager); + void updateAllPartnerPassword(String clientMoniker, List emails); void postponeClientRate(Date now, Date yearTomorrow, String expireDate, JSONObject client); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index 40042d8cc..093767660 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -7,6 +7,8 @@ import au.com.royalpay.payment.channels.wechat.config.WechatPayEnvironment; import au.com.royalpay.payment.channels.wechat.runtime.MpPaymentApi; import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient; import au.com.royalpay.payment.channels.wechat.runtime.beans.SubMerchantInfo; +import au.com.royalpay.payment.channels.yeepay.mappers.YeePayClientConfigMapper; +import au.com.royalpay.payment.channels.yeepay.runtime.YeePayClient; import au.com.royalpay.payment.core.PaymentChannelApi; import au.com.royalpay.payment.core.exceptions.EmailException; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; @@ -120,6 +122,7 @@ import com.github.miemiedev.mybatis.paginator.domain.Order; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageList; +import com.yeepay.yop.sdk.service.kj.model.SubmerchantRegisterResult; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.RandomStringUtils; @@ -243,6 +246,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid @Resource private RpayApi rpayApi; + @Resource + private YeePayClient yeePayClient; + + @Resource + private YeePayClientConfigMapper yeePayClientConfigMapper; + @Resource private ManagerMapper managerMapper; @Resource @@ -432,6 +441,10 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid String hfQrcodeUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/" + client.getString("client_moniker") + "/jump/app"); client.put("hfQrcodeUrl", QRCodeUtils.qrcodeImageCode(hfQrcodeUrl, 250, true)); } + if (client.getString("yeepay_pay_url") != null) { + String yeepayQrcodeUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/yeepay/partners/" + client.getString("client_moniker") + "/jump/app"); + client.put("yeepayQrcodeUrl", QRCodeUtils.qrcodeImageCode(yeepayQrcodeUrl, 250, true)); + } return client; } @@ -795,6 +808,25 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid clientInfoCacheSupport.clearClientCache(clientId); } + @Transactional + @Override + public void updateClientYeepayPaymentConfig(JSONObject manager, String clientMoniker, JSONObject yeepaySubMerchantInfo) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + if(client.getString("yeepay_sub_merchant_id").equals(yeepaySubMerchantInfo.getString("yeepay_sub_merchant_id"))){ + throw new BadRequestException("The sub merchant Id is in use"); + } + JSONObject yeepayConfigValid =yeePayClientConfigMapper.findMerchantConfig(client.getIntValue("client_id")); + yeePayClientConfigMapper.updateSubMerchantIdValid(yeepayConfigValid.getString("yeepay_config_id"),0); + JSONObject yeepayConfig = yeePayClientConfigMapper.findMerchantConfigBySub(yeepaySubMerchantInfo.getString("yeepay_sub_merchant_id")); + yeePayClientConfigMapper.updateSubMerchantIdValid(yeepayConfig.getString("yeepay_config_id"),1); + client.put("yeepay_sub_merchant_id",yeepaySubMerchantInfo.getString("yeepay_sub_merchant_id")); + clientMapper.update(client); + } + @Override public void updateAliSubMerchantId(JSONObject manager, String clientMoniker, JSONObject aliSubMerchantInfo) { JSONObject client = getClientInfoByMoniker(clientMoniker); @@ -1220,6 +1252,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid if (channel.equals("hf") && !allow && client.getBoolean("enable_hf_email_notice")) { clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_hf_email_notice", allow)); } + if (channel.equals("yeepay") && !allow && client.getBoolean("enable_yeepay_email_notice")) { + clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_yeepay_email_notice", allow)); + } clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_" + channel.toLowerCase(), allow)); logger.info(manager.getString("display_name") + "(" + manager.getString("manager_id") + ") switched client " + clientMoniker + " channel " @@ -1591,6 +1626,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid checkAddRate(config, "jd", "jd_rate_value", org, "min_jd_rate"); checkAddRate(config, "hf", "hf_rate_value", org, "min_hf_rate"); checkAddRate(config, "Rpay", "Rpay_rate_value", org, "min_Rpay_rate"); + checkAddRate(config, "Yeepay", "yeepay_rate_value", org, "min_yeepay_rate"); configNewClientRate(config, clientId, "Wechat", "wechat_rate_value", org, "min_wechat_rate"); configNewClientRate(config, clientId, "Alipay", "alipay_rate_value", org, "min_alipay_rate"); @@ -1599,6 +1635,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid configNewClientRate(config, clientId, "jd", "jd_rate_value", org, "min_jd_rate"); configNewClientRate(config, clientId, "hf", "hf_rate_value", org, "min_hf_rate"); configNewClientRate(config, clientId, "Rpay", "Rpay_rate_value", org, "min_Rpay_rate"); + configNewClientRate(config, clientId, "Yeepay", "yeepay_rate_value", org, "min_yeepay_rate"); //todo 暂不更新Rpay+ 费率信息 rpayApi.modifySurchargeConfig(client); @@ -3572,6 +3609,20 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return null; } + @Override + public List listYeepaySubMerchantIdApplys(JSONObject manager, String clientMoniker) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + List applices = yeePayClientConfigMapper.findAllMerchantConfig(client.getInteger("client_id")); + if (!applices.isEmpty()) { + return applices; + } + return null; + } + @Override @CacheEvict(value = ":all_sub_merchant_id_applices:", key = "#clientMoniker") public String subMerchantApplication(String clientMoniker, SubMerchantIdApply subMerchantApply, JSONObject manager) { @@ -3635,6 +3686,39 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } } + + @Override + @Transactional + public void subYeepayMerchantApplication(String clientMoniker, JSONObject merchantInfo, JSONObject manager) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + List yeepayClientConfigs = yeePayClientConfigMapper.findAllMerchantConfig(client.getIntValue("client_id")); + if(yeepayClientConfigs!=null){ + for(JSONObject yeepayClientConfig:yeepayClientConfigs){ + if(yeepayClientConfig.getIntValue("is_valid")==1){ + yeePayClientConfigMapper.updateSubMerchantIdValid(yeepayClientConfig.getString("yeepay_config_id"),0); + } + } + } + merchantInfo.put("create_time",new Date()); + merchantInfo.put("operator",manager.getString("display_name")); + merchantInfo.put("client_id",client.getIntValue("client_id")); + merchantInfo.put("vouchers",merchantInfo.getJSONObject("vouchers").toJSONString()); + yeePayClientConfigMapper.saveMerchantConfig(merchantInfo); + JSONObject yeepayConfig = yeePayClientConfigMapper.findMerchantConfig(client.getIntValue("client_id")); + SubmerchantRegisterResult result = yeePayClient.registerMerchant(client,yeepayConfig); + if(result.getStatus().equals("FAILED")){ + throw new BadRequestException(result.getErrorMsg()); + } + yeepayConfig.put("sub_merchant_id",result.getSubMerchantId()); + yeePayClientConfigMapper.updateSubMerchantId(yeepayConfig.getString("yeepay_config_id"),result.getMerchantId(),result.getSubMerchantId()); + client.put("yeepay_sub_merchant_id",result.getSubMerchantId()); + clientMapper.update(client); + } + @Override public List listMerchantIds(String clientMoniker, JSONObject manager) { JSONObject client = getClientInfoByMoniker(clientMoniker); @@ -3878,6 +3962,30 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } + @Override + public void switchGatewayLink(JSONObject manager, String clientMoniker,String channel, boolean allow) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + + if (allow) { + if (StringUtils.isEmpty(client.getString(channel+"_pay_url"))) { + String channel_pay_url = getGatewayShortLink(clientMoniker,channel.toLowerCase()); + client.put(channel+"_pay_url", channel_pay_url); + JSONObject clientConfig = new JSONObject(); + clientConfig.put(channel+"_pay_url", channel_pay_url); + clientConfig.put("client_id", client.getIntValue("client_id")); + clientConfigMapper.update(clientConfig); + clientMapper.update(client); + } + } + clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_"+channel+"_link", allow)); + clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_"+channel, allow)); + + } + @Override public void sendHfEmailNotice(JSONObject order) { JSONObject client = clientMapper.findClient(order.getIntValue("client_id")); @@ -3917,6 +4025,55 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid }).start(); } + @Override + public void sendGatewayEmailNotice(JSONObject order) { + JSONObject client = clientMapper.findClient(order.getIntValue("client_id")); + JSONObject clientConfig = clientConfigMapper.find(order.getIntValue("client_id")); + if (client == null || clientConfig == null) { + return; + } + if (client.getString("contact_email") == null || + !clientConfig.getBoolean("enable_"+order.getString("channel").toLowerCase()+"_email_notice")) { + return; + } + Context ctx = new Context(); + ctx.setVariable("img_url", PlatformEnvironment.getEnv().concatUrl("/static/images/royalpay_logo.png")); + ctx.setVariable("name", client.getString("contact_person")); + ctx.setVariable("order_id", order.getString("order_id")); + ctx.setVariable("amount", order.getString("total_amount")); + ctx.setVariable("currency", order.getString("currency")); + ctx.setVariable("channel", getOrderChannel(order.getString("channel"))); + String create_time = ""; + if (client.getString("timezone") != null) { + create_time = DateFormatUtils.format(order.getDate("create_time"), + "yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone(client.getString("timezone"))); + } else { + create_time = DateFormatUtils.format(order.getDate("create_time"), "yyyy-MM-dd HH:mm:ss"); + } + ctx.setVariable("time", create_time); + final String content = thymeleaf.process( "mail/gateway_email_notice", ctx); + final String mailTo = client.getString("contact_email"); + if (StringUtils.isEmpty(mailTo)) { + throw new EmailException("Client Contact Email is invalid"); + } + new Thread(() -> { + try { + mailService.sendEmail("你刚刚有一笔到账信息", mailTo, "", content); + } catch (Exception ignored) { + logger.error("邮件发送失败", ignored); + } + }).start(); + } + + private String getOrderChannel(String channel){ + switch(channel){ + case "hf": + return "汇付"; + case "Yeepay": + return "易宝支付"; + } + return ""; + } @Override public void updateAllPartnerPassword(String clientMoniker, List emails) { JSONObject client = getClientInfoByMoniker(clientMoniker); @@ -3946,6 +4103,13 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return api.registerShortUrl(longUrl); } + @Override + public String getGatewayShortLink(String clientMoniker, String channel) { + String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/"+channel+"/partners/" + clientMoniker + "/jump/pc"); + MpWechatApi api = mpWechatApiProvider.getNewPaymentApi(); + return api.registerShortUrl(longUrl); + } + private void isRiskyMerchant(JSONObject client, JSONObject bankAccount) { JSONObject needCheckParams = new JSONObject(); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java index 52d4c1681..fee7980d0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java @@ -178,6 +178,11 @@ public class PartnerManageController { clientManager.updateClientRpayPaymentConfig(manager, clientMoniker, rpaySubMerchantInfo); } + @ManagerMapping(value = "/{clientMoniker}/yeepay_payment_config", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER}) + public void updatePartnerYeepayPaymentConfig(@PathVariable String clientMoniker, @RequestBody JSONObject yeepaySubMerchantInfo, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.updateClientYeepayPaymentConfig(manager, clientMoniker, yeepaySubMerchantInfo); + } + @ManagerMapping(value = "/{clientMoniker}/ali_sub_merchant_id", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR}) public void updateAliSubMerchantId(@PathVariable String clientMoniker, @RequestBody JSONObject aliSubMerchantInfo, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { clientManager.updateAliSubMerchantId(manager, clientMoniker, aliSubMerchantInfo); @@ -546,6 +551,11 @@ public class PartnerManageController { return clientManager.listRpaySubMerchantIdApplys(manager, clientMoniker); } + @ManagerMapping(value = "/{clientMoniker}/list_yeepay_sub_applices", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) + public List listYeepaySubMerchantIdApplys(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + return clientManager.listYeepaySubMerchantIdApplys(manager, clientMoniker); + } + @ManagerMapping(value = "/{clientMoniker}/sub_apply", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) public String subMerchantApplication(@PathVariable String clientMoniker, @RequestBody SubMerchantIdApply subMerchantIdApply, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { return clientManager.subMerchantApplication(clientMoniker,subMerchantIdApply,manager); @@ -580,11 +590,26 @@ public class PartnerManageController { clientManager.switchPermission(manager, clientMoniker, "enable_hf_email_notice", pass.getBooleanValue("allow")); } + @ManagerMapping(value = "/{clientMoniker}/{channel}", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR}) + public void switchGateWayLinkPermission(@PathVariable String clientMoniker, @PathVariable String channel,@RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.switchGatewayLink(manager, clientMoniker, channel,pass.getBooleanValue("allow")); + } + + @ManagerMapping(value = "/{clientMoniker}/{channel}/email_notice", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER}) + public void switchGatewayEmailNotice(@PathVariable String clientMoniker, @PathVariable String channel,@RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.switchPermission(manager, clientMoniker,"enable_"+channel+"_email_notice", pass.getBooleanValue("allow")); + } + @ManagerMapping(value = "/{clientMoniker}/registRpaySubMerchantId", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) public void subRpayMerchantApplication(@PathVariable String clientMoniker,@RequestBody JSONObject merchantInfo,@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { clientManager.subRpayMerchantApplication(clientMoniker, merchantInfo,manager); } + @ManagerMapping(value = "/{clientMoniker}/registYeepaySubMerchantId", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) + public void subYeepayMerchantApplication(@PathVariable String clientMoniker,@RequestBody JSONObject merchantInfo,@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.subYeepayMerchantApplication(clientMoniker, merchantInfo,manager); + } + @RequestMapping(value = "/compliance", method = RequestMethod.GET) @RequireManager(role = { ManagerRole.OPERATOR}) public JSONObject lisPartnersByCompliance(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, PartnerQuery query) { diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java index 47269e2c8..772911b27 100644 --- a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java +++ b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java @@ -29,6 +29,7 @@ public class OrgInfo { private Double alipayonline_rate_value; private Double jd_rate_value; private Double hf_rate_value; + private Double yeepay_rate_value; private int is_valid; private String search_text; private int page = 1; @@ -42,6 +43,7 @@ public class OrgInfo { private Double min_jd_rate; private Double min_alipayonline_rate; private Double min_hf_rate; + private Double min_yeepay_rate; private String state; private String senior_parent_org_id; @@ -323,4 +325,20 @@ public class OrgInfo { public void setSenior_parent_org_id(String senior_parent_org_id) { this.senior_parent_org_id = senior_parent_org_id; } + + public Double getYeepay_rate_value() { + return yeepay_rate_value; + } + + public void setYeepay_rate_value(Double yeepay_rate_value) { + this.yeepay_rate_value = yeepay_rate_value; + } + + public Double getMin_yeepay_rate() { + return min_yeepay_rate; + } + + public void setMin_yeepay_rate(Double min_yeepay_rate) { + this.min_yeepay_rate = min_yeepay_rate; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java index 9e126ffd5..243bd6083 100644 --- a/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java @@ -233,7 +233,7 @@ public class OrgManagerImpl implements OrgManager { JSONArray rate1 = new JSONArray(); JSONArray rate2 = new JSONArray(); if(orgObject.getString("commission_type").equals(json.getString("commission_type"))){ - String[] rates = new String[]{"alipay_rate_value","wechat_rate_value","bestpay_rate_value","alipayonline_rate_value","jd_rate_value"}; + String[] rates = new String[]{"alipay_rate_value","wechat_rate_value","bestpay_rate_value","alipayonline_rate_value","jd_rate_value","yeepay_rate_value"}; for (String rateName: rates ){ if(StringUtils.isEmpty(orgObject.getString(rateName))){ rate1.add(rateName); diff --git a/src/main/java/au/com/royalpay/payment/manage/support/attachment/web/AttachmentController.java b/src/main/java/au/com/royalpay/payment/manage/support/attachment/web/AttachmentController.java index bccc665f9..9382f9e1d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/support/attachment/web/AttachmentController.java +++ b/src/main/java/au/com/royalpay/payment/manage/support/attachment/web/AttachmentController.java @@ -1,9 +1,11 @@ package au.com.royalpay.payment.manage.support.attachment.web; +import au.com.royalpay.payment.channels.yeepay.runtime.YeePayClient; import au.com.royalpay.payment.manage.permission.manager.RequireManager; import au.com.royalpay.payment.manage.permission.manager.RequirePartner; import au.com.royalpay.payment.tools.connections.attachment.core.AttachmentClient; import com.alibaba.fastjson.JSONObject; +import com.yeepay.yop.sdk.service.kj.model.FileUploadResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -20,6 +22,8 @@ import java.io.IOException; public class AttachmentController { @Resource private AttachmentClient attachmentClient; + @Resource + private YeePayClient yeePayClient; @RequestMapping(value = "/files", method = RequestMethod.POST) @RequirePartner @@ -27,6 +31,14 @@ public class AttachmentController { public JSONObject uploadImage(@RequestParam MultipartFile file) throws IOException { return attachmentClient.uploadFile(file,false); } + + @RequestMapping(value = "/yeepayFiles", method = RequestMethod.POST) + @RequirePartner + @RequireManager + public FileUploadResult uploadYeepayImage(@RequestParam MultipartFile file) throws IOException { + return yeePayClient.uploadFile(file.getOriginalFilename(),"VOUCHER",file.getInputStream()); + } + @RequestMapping(value = "/riskFiles", method = RequestMethod.POST) public JSONObject uploadRiskImage(@RequestParam MultipartFile file) throws IOException { return attachmentClient.uploadFile(file,false); diff --git a/src/main/resources/application-yeepay.properties b/src/main/resources/application-yeepay.properties new file mode 100644 index 000000000..badb2632e --- /dev/null +++ b/src/main/resources/application-yeepay.properties @@ -0,0 +1,15 @@ +app.yeepay.merchant-id= +app.yeepay.app-key=cbp_120180219 +app.yeepay.aes-secret-key= +app.yeepay.public-key.store-type=string +app.yeepay.public-key.cert-type=RSA2048 +app.yeepay.public-key.value=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6p0XWjscY+gsyqKRhw9MeLsEmhFdBRhT2emOck/F1Omw38ZWhJxh9kDfs5HzFJMrVozgU+SJFDONxs8UB0wMILKRmqfLcfClG9MyCNuJkkfm0HFQv1hRGdOvZPXj3Bckuwa7FrEXBRYUhK7vJ40afumspthmse6bs6mZxNn/mALZ2X07uznOrrc2rk41Y2HftduxZw6T4EmtWuN2x4CZ8gwSyPAW5ZzZJLQ6tZDojBK4GZTAGhnn3bg5bBsBlw2+FLkCQBuDsJVsFPiGh/b6K/+zGTvWyUcu+LUj2MejYQELDO3i2vQXVDk7lVi2/TcUYefvIcssnzsfCfjaorxsuwIDAQAB +app.yeepay.public-key.password= +app.yeepay.private-key.store-type=string +app.yeepay.private-key.cert-type=RSA2048 +app.yeepay.private-key.value=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCdaxJm3b5bvPZHvvXDfJ4NUiG7yISRYgUfiQycVKCJZ2jL+Y29Hmcnc1hPMZjVbJYPkhaIp+f92j7qf5P/qo+Ru4DyY3HhzsJAZMMWVlWeaEG+nZsyN06XC7NiUrFMLUAyqtaYRPDBKHKss54at16rQO7UoqXVqhKZyWdBgRbX0J3X0z82LEh11u8Izi/mUH42NY6ttkDsxBzXeNcT81RHrm9A/R/6AzzykFAPxGVdjjmbYnrk/WUwLDaKdf1RvDF/kWSCmbzQSX/D24UcDekd50TJHaqhjvBVFwLtiFWAO7xudEDhByfj22YOZuhuddyhJygkUI996IKtl+UFIfI1AgMBAAECggEATWTgBj0NIxNTTlDfib4SAuCXfziFnOjBNhDuZ0ngJ830oxxNiGaTNr0p9L2gs4WQfZVIiOVsVM1hU29n9zIHJhI2wnUL/4Xk0T35AFlv/NKrSCk6rUSt2etBxZx8WMSCpKaDnRd/+qeFQc2JdP8khzQEd/yDZfoY7Q0tO/JYpb++XMFYBRpLINYwH8xteTAeRGp1A5+UwvPMJelNeBlPqMqTAPruh/yLUvYg1/rJjkOUi0yOUyKhs+NJDOXdBcrSXswdJyMMITYQ9dhpWFz4/imklHDKk29+Oy5uEGB1OQvTW469Cm2b2suAyvI4oE1pAFb6dGz6uE9fwzJljM1+IQKBgQDshMwyOC3BmXOo54o92cUwYR0TJg0KHQAbJLirQxlX4ILUGxxEFsv2TdVzushYS/1K8zecz9VQnch19mo+qyxfdq/FNXe1DDXolnu2AoYVvqpeCXumjmz4v2dlBW2TTFvmUpy0QK2QImgBW1/sjI88OgiJHdyqaqR0ASMLB1mGWQKBgQCqYl82MSqUqRl2yTiW+h9lymlgXWl5qFx/J3YGMURz3Xq5qzK4swEYfHfmkofNNpTXwIbDjGGq/ipZZLmyLfS68PRnquJEwCyFX3cgXUKg8380nDPdUQxsLpvMupUuKjyNhN4twpy2A/Ti53UC7vx5J+Z/mVjE3QgaURIAEBSHPQKBgQCOI0x3za0p0KdiVSuN+gZ4CZSoglCJyF3c8heMzLk5R3I4N8an4K9YaPQjJZfrAFfLKBk+wuPmG7xxr9Gvsbzr7e657GTxR9JJ4c2c1y1vefL2qmpF8QfqAVUIr9dnExeTdgg4hzoHCbZJQnmGNf6KajHg/TI0s/v6vwgpQ5R4mQKBgDI3Kd574RPNPp7+sPn2H5jNbf8jqLldQF2NUMCEdqs7RDdCWIGM6C7CSEghOXrmsjlgGZe6YPKXU/3irMPxvWX3K+D9wRAIH1bzitV0BvYOrZfgzXxVrbaYifxtpRflBNGkriKIb81JHzxcgOTrcGd4tfs3Q61Jg2DWMdro4lP1AoGBAOJ8JLkbrODRvHp9fCy9cOiF0LD/fZBW49l6xQbx7lLtzbwa/nk672hFhzfy565j4ejywykVIOWmoMS5RqWXB07rbyF0OZrfEcLPArfXZ4iE6T9OZ2UJLK0gdUWz4oYWBRK7NQd5qEMOiUFy8YOGgT+dESVYwN2irwLikuET0S9a +app.yeepay.private-key.password= +app.yeepay.http-client.connect-timeout=30000 +app.yeepay.http-client.read-timeout=30000 +app.yeepay.http-client.max-conn-total=200 +app.yeepay.http-client.max-conn-per-route=0 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index f1575e412..09513a4d3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ server.port=5000 -spring.profiles.active=dev,alipay,bestpay,jd,wechat,rpay +spring.profiles.active=dev,alipay,bestpay,jd,wechat,rpay,yeepay env.company=RoyalPay @@ -131,4 +131,4 @@ settle.abafile.bank.ANZ.bank=ANZ settle.abafile.bank.ANZ.apca=514624 settle.abafile.bank.ANZ.bsb=013006 settle.abafile.bank.ANZ.account-no=837022519 -settle.abafile.bank.ANZ.account-name=Tunnel Show Pty Ltd \ No newline at end of file +settle.abafile.bank.ANZ.account-name=Tunnel Show Pty Ltd diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml index 253dcc017..e5b705835 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml @@ -318,7 +318,9 @@ ifnull(sum(CASE WHEN s.channel = 'hf' THEN s.total ELSE 0 END),0) hfamount, ifnull(sum(CASE WHEN s.channel = 'hf' THEN s.orders ELSE 0 END),0) hf_order_count, ifnull(sum(CASE WHEN s.channel = 'Rpay' THEN s.total ELSE 0 END),0) rpayamount, - ifnull(sum(CASE WHEN s.channel = 'Rpay' THEN s.orders ELSE 0 END),0) rpay_order_count + ifnull(sum(CASE WHEN s.channel = 'Rpay' THEN s.orders ELSE 0 END),0) rpay_order_count, + ifnull(sum(CASE WHEN s.channel = 'Yeepay' THEN s.total ELSE 0 END),0) yeepayamount, + ifnull(sum(CASE WHEN s.channel = 'Yeepay' THEN s.orders ELSE 0 END),0) yeepay_order_count FROM statistics_customer_order s LEFT JOIN sys_clients c ON c.client_id = s.client_id and c.is_valid=1 ]]> @@ -564,4 +566,4 @@ - \ No newline at end of file + diff --git a/src/main/resources/templates/mail/gateway_email_notice.html b/src/main/resources/templates/mail/gateway_email_notice.html new file mode 100644 index 000000000..e2bbfbff9 --- /dev/null +++ b/src/main/resources/templates/mail/gateway_email_notice.html @@ -0,0 +1,32 @@ + + + + + + +
+
+
+ +
+
+

您好,

+

您有一笔收款信息如下:

+
+

RoyalPay到账提醒:

+
    +
  • 支付渠道:
  • +
  • 订单编号:
  • +
  • 收款金额: 
  • +
  • 到账时间:
  • +
+
+ 此致
+ RoyalPay +
+
+ +
+ + + diff --git a/src/main/ui/static/analysis/channels_analysis.js b/src/main/ui/static/analysis/channels_analysis.js index c9153a7db..2ebcd186f 100644 --- a/src/main/ui/static/analysis/channels_analysis.js +++ b/src/main/ui/static/analysis/channels_analysis.js @@ -158,7 +158,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额","HF Pay交易金额"], + data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额","HF Pay交易金额","Yeepay交易金额"], bottom: 0, height: '15%', width: '80%', @@ -170,7 +170,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -242,6 +242,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.total'} + }, + { + basic: { + name: 'Yeepay交易金额', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.total'} } ] }; @@ -252,7 +263,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单","HF Pay交易订单"], + data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单","HF Pay交易订单","Yeepay交易订单"], bottom: 0, height: '15%', width: '80%', @@ -264,7 +275,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -336,7 +347,18 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.orders'} - } + }, + { + basic: { + name: 'Yeepay交易订单', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.orders'} + }, ] }; var channels_single_amount_chart = { @@ -345,7 +367,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' trigger: 'axis' }, legend: { - data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价","HF Pay交易客单价"], + data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价","HF Pay交易客单价","Yeepay交易客单价"], bottom: 0, }, yAxis: [ @@ -354,7 +376,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' type: 'value' } ], - color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"] + color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33","#66ff00"] }, xAxis: { basic: {type: 'category', boundaryGap: false}, @@ -426,6 +448,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', ' yAxisIndex: 0 }, column: {key: 'hf.single_amount'} + }, + { + basic: { + name: 'Yeepay交易客单价', + type: 'line', + label: {normal: {show: true}}, + showAllSymbols: true, + showSymbol: true, + yAxisIndex: 0 + }, + column: {key: 'Yeepay.single_amount'} } ] }; diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index feeaaeb19..e8ceabfb6 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -545,8 +545,10 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func return '/static/images/hf_sign_lg.png'; case 'Rpay': return '/static/images/rpayplus_sign_lg.png'; + case 'Yeepay': + return '/static/images/yeepay_sign_lg.png'; } } }); return app; -}); \ No newline at end of file +}); diff --git a/src/main/ui/static/analysis/templates/customer_analysis.html b/src/main/ui/static/analysis/templates/customer_analysis.html index 099aba25f..72c40413d 100644 --- a/src/main/ui/static/analysis/templates/customer_analysis.html +++ b/src/main/ui/static/analysis/templates/customer_analysis.html @@ -203,6 +203,8 @@ uib-tooltip="HF Pay" ng-if="order.channel=='hf'"/> + {{order.order_id}} {{order.short_name}}(HF Pay | RPay + + ng-click="params.channel='RPAY';doAnalysis(1)">RPay + | + Yeepay

@@ -148,4 +150,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/partner_customers_orders.html b/src/main/ui/static/analysis/templates/partner_customers_orders.html index 25b7e3865..88436a1f0 100644 --- a/src/main/ui/static/analysis/templates/partner_customers_orders.html +++ b/src/main/ui/static/analysis/templates/partner_customers_orders.html @@ -101,6 +101,10 @@ ng-click="params.channel='jd';doAnalysis(1)">JD Pay | HF Pay + RPay + | + Yeepay

@@ -133,4 +137,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/partner_trans_analysis.html b/src/main/ui/static/analysis/templates/partner_trans_analysis.html index b282d5943..4af659a20 100644 --- a/src/main/ui/static/analysis/templates/partner_trans_analysis.html +++ b/src/main/ui/static/analysis/templates/partner_trans_analysis.html @@ -100,7 +100,9 @@ JD Pay | HF Pay + ng-click="params.channel='hf';doAnalysis(1)">HF Pay | + Yeepay

@@ -133,4 +135,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/analysis/templates/trans_analysis.html b/src/main/ui/static/analysis/templates/trans_analysis.html index f1ab22f81..f80936201 100644 --- a/src/main/ui/static/analysis/templates/trans_analysis.html +++ b/src/main/ui/static/analysis/templates/trans_analysis.html @@ -99,7 +99,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';doAnalysis(1)">RPay + | + Yeepay

@@ -209,6 +211,15 @@ +
+
+
Yeepay
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Paying Surcharge
diff --git a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html index 854e13fb7..5385003d5 100644 --- a/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html +++ b/src/main/ui/static/payment/partner/templates/partner_bankaccounts.html @@ -172,6 +172,7 @@
  • JDpay
  • HFpay
  • Rpay+
  • +
  • Yeepay
  • @@ -212,4 +213,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/partner/templates/partner_new_rate.html b/src/main/ui/static/payment/partner/templates/partner_new_rate.html index 6b6872b29..189a97ab1 100644 --- a/src/main/ui/static/payment/partner/templates/partner_new_rate.html +++ b/src/main/ui/static/payment/partner/templates/partner_new_rate.html @@ -160,6 +160,30 @@ +
    + +
    +
    + +
    %
    +
    +
    +
    + No more than 2.2% +
    +
    + No less than 0.6% +
    +
    + Required Field +
    +
    + +
    +
    +
    @@ -214,4 +238,4 @@ \ No newline at end of file +
    diff --git a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html index 630f9d6ab..da618eaeb 100644 --- a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html +++ b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html @@ -31,7 +31,9 @@ Partial Refund | Full Refund + ng-click="params.status='FULL_REFUNDED';loadTradeLogs(1)">Full Refund | + Yeepay

    @@ -87,7 +89,9 @@ HFpay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -188,6 +192,7 @@ + {{trade.order_id}} @@ -371,4 +375,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html index 30380e9a6..3640a2c4b 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_settlement_dialog.html @@ -45,6 +45,11 @@ +
  • + + + +
  • @@ -251,4 +256,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html index b69d79e45..c27eedccf 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html @@ -95,9 +95,11 @@ JD Pay | HF Pay + ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay | RPay+ + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay+ | + Yeepay

    @@ -325,6 +327,7 @@ + {{trade.order_id}}
    @@ -232,4 +237,4 @@ last-text="»">
    Total Records:{{pagination.totalCount}};Total Pages:{{pagination.totalPages}}
    - \ No newline at end of file + diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html index 804ab968b..3cdc89959 100644 --- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html @@ -56,6 +56,14 @@

    +
    + +
    +

    + {{paymentInfo.yeepay_sub_merchant_id||'初始化'}} +

    +
    +
    @@ -209,6 +217,12 @@
    +
    + +
    + +
    +
    @@ -354,6 +368,29 @@ +
    +
    + + +
    +
    + + +
    +   仅支持微信客户端扫描 +
    +
    +
    + +
    + +
    +
    diff --git a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html index 8deec83d1..52b6da3ee 100644 --- a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html +++ b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html @@ -149,4 +149,65 @@ - \ No newline at end of file + +
    +
    +
    +
    +
    +
    +

    + Yeepay Sub Merchant Id : {{partner.yeepay_sub_merchant_id}} + +

    + +
    +
    +
    +
    +

    List of Sub Merchant Id

    +
    +
    +
      +
    • + Sub Merchant Id + (当前使用){{id_apply.sub_merchant_id}} +
    • +
    • + Apply Time + +
    • +
    • + Business Content + {{id_apply.business_content | yeepayBusinessContent}} +
    • +
    • + Business Category + {{id_apply.industry | yeepayIndustry}} +
    • +
    • + Operator + +
    • +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/src/main/ui/static/payment/tradelog/templates/balance_report.html b/src/main/ui/static/payment/tradelog/templates/balance_report.html index c6acfce95..91feaa526 100644 --- a/src/main/ui/static/payment/tradelog/templates/balance_report.html +++ b/src/main/ui/static/payment/tradelog/templates/balance_report.html @@ -97,7 +97,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -298,6 +300,8 @@ uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/> + {{trade.order_id2}}
    @@ -386,4 +389,4 @@ - \ No newline at end of file + diff --git a/src/main/ui/static/payment/tradelog/templates/trade_logs.html b/src/main/ui/static/payment/tradelog/templates/trade_logs.html index b4a3173f4..baa6712bd 100644 --- a/src/main/ui/static/payment/tradelog/templates/trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/trade_logs.html @@ -135,7 +135,9 @@ HF Pay | RPay + + ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay + | + Yeepay

    @@ -355,6 +357,8 @@ uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/> + {{trade.order_id}}
    @@ -405,4 +409,4 @@ - \ No newline at end of file +