diff --git a/pom.xml b/pom.xml
index 2934cc261..d66c495f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
au.com.royalpay.payment
payment-parent
- 2.2.31
+ 2.3.0
4.0.0
manage
diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java
index f93d9ace8..cc2c54d13 100644
--- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java
+++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java
@@ -1,7 +1,9 @@
package au.com.royalpay.payment.manage.merchants.core;
+import au.com.royalpay.payment.channels.alipay.beans.plus.ApsMerchantApplication;
import au.com.royalpay.payment.channels.rpaypaymentsvc.runtime.request.entities.RPayMerchantEntity;
import au.com.royalpay.payment.core.beans.ChannelMerchantInfo;
+import au.com.royalpay.payment.core.beans.MerchantApplicationResult;
import au.com.royalpay.payment.core.exceptions.EmailException;
import au.com.royalpay.payment.manage.appclient.beans.AppClientBean;
import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean;
@@ -604,4 +606,11 @@ public interface ClientManager {
void selectBillCodeVersion(JSONObject manager, String clientMoniker, String version);
+
+ MerchantApplicationResult alipayPlusRegisterMerchant(String clientMoniker, ApsMerchantApplication apsMerchantApplication, JSONObject manager);//alipayplus 注册商户
+
+ String queryAlipayPlusOnlineStatus(boolean isOffline,String clientMoniker, JSONObject manager);
+
+ String queryAlipayPlusOfflineStatus(String clientMoniker, JSONObject manager);
+
}
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 209f609dc..396955860 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
@@ -1,9 +1,12 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
+import au.com.royalpay.payment.channels.alipay.beans.plus.AlipayPlusRegisterResult;
+import au.com.royalpay.payment.channels.alipay.beans.plus.ApsMerchantApplication;
import au.com.royalpay.payment.channels.alipay.config.AlipayConfig;
import au.com.royalpay.payment.channels.alipay.config.AlipayEnvironment;
import au.com.royalpay.payment.channels.alipay.runtime.AlipayOnlineApi;
import au.com.royalpay.payment.channels.alipay.runtime.AlipayRetailApi;
+import au.com.royalpay.payment.channels.alipay.runtime.alipayplus.AlipayApsMerchantRegister;
import au.com.royalpay.payment.channels.alipay.runtime.entity.AlipayMerchantEntity;
import au.com.royalpay.payment.channels.rpay.runtime.beans.SubRpayMerchantInfo;
import au.com.royalpay.payment.channels.rpay.runtime.impls.RPayMerchantRegister;
@@ -113,6 +116,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
+import com.alipay.global.api.model.aps.ProductCodeType;
import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
@@ -7066,6 +7070,57 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
clientInfoCacheSupport.clearClientCache(client.getIntValue("client_id"));
}
+ /**
+ * alipayplus(aps) 注册商户
+ * @param clientMoniker
+ * @param apsMerchantApplication
+ * @param manager
+ * @return
+ */
+ @Override
+ public MerchantApplicationResult alipayPlusRegisterMerchant(String clientMoniker, ApsMerchantApplication apsMerchantApplication, JSONObject manager) {
+ logger.info("====>getWebsiteType:"+apsMerchantApplication.getWebsiteType());
+ logger.info("====>getProductCodes:"+apsMerchantApplication.getProductCodes().toString());
+ boolean offline = apsMerchantApplication.getProductCodes().stream().allMatch(s->s.equalsIgnoreCase(ProductCodeType.IN_STORE_PAYMENT.toString()));
+ logger.info("====>offline:"+offline);
+ if(offline){
+ //todo 测试需要 先都改成线上,上线此处需要改成线下
+ apsMerchantApplication.setPid( AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid());
+ }else{
+ apsMerchantApplication.setPid( AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid());
+ }
+ apsMerchantApplication.setRegion("AU");
+
+ JSONObject client= sysClientMapper.findClientByMoniker(clientMoniker);
+ AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found"));
+
+ MerchantApplicationResult result=alipayApsMerchantRegister.apply(client,apsMerchantApplication,manager);
+ return result;
+ }
+
+ @Override
+ public String queryAlipayPlusOnlineStatus(boolean isRetail,String clientMoniker, JSONObject manager) {
+ JSONObject client= sysClientMapper.findClientByMoniker(clientMoniker);
+ client.put("isRetail",isRetail);
+ String pid="";
+ if(isRetail){
+ //todo 测试需要 先都改成线上,上线此处需要改成线下
+ pid= AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid();
+ }else{
+ pid= AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid();
+
+ }
+ client.put("pid",pid);
+ AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found"));
+ AlipayPlusRegisterResult alipayPlusRegisterResult= alipayApsMerchantRegister.findMerchant(client);
+ return alipayPlusRegisterResult.getRawResponse();
+ }
+
+ @Override
+ public String queryAlipayPlusOfflineStatus(String clientMoniker, JSONObject manager) {
+ return null;
+ }
+
private void exportLetterOfferPDF(String clientMoniker, JSONObject manage) {
JSONObject info = convertClientLetterOfferInfo(clientMoniker);
String pdfPath = this.getClass().getClassLoader().getResource("").getPath() + "/templates/pdf/letter_of_offer.pdf";
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 4d9179838..a299e427d 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
@@ -1,7 +1,9 @@
package au.com.royalpay.payment.manage.merchants.web;
+import au.com.royalpay.payment.channels.alipay.beans.plus.ApsMerchantApplication;
import au.com.royalpay.payment.channels.rpaypaymentsvc.runtime.request.entities.RPayMerchantEntity;
import au.com.royalpay.payment.core.beans.ChannelMerchantInfo;
+import au.com.royalpay.payment.core.beans.MerchantApplicationResult;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.manage.dev.core.MerchantLocationService;
import au.com.royalpay.payment.manage.merchants.beans.*;
@@ -1057,4 +1059,27 @@ public class PartnerManageController {
clientManager.modifyUPayProfile(manager, clientMoniker, pass.getString("key"), pass.getBooleanValue("allow"));
}
+ /**
+ * alipayplus 商户注册
+ * @param clientMoniker
+ * @param manager
+ * @return
+ */
+ @ManagerMapping(value = "/{clientMoniker}/apply_alipayplus", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
+ public MerchantApplicationResult applyAlipayPlusMerchant(@PathVariable String clientMoniker, @RequestBody ApsMerchantApplication apsMerchantApplication, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ return clientManager.alipayPlusRegisterMerchant(clientMoniker,apsMerchantApplication,manager);
+ }
+
+ @ManagerMapping(value = "/{clientMoniker}/query/alipay_aps_online", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
+ public JSONObject queryAlipayApsOnlineStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ JSONObject result = new JSONObject();
+ result.put("response_str", clientManager.queryAlipayPlusOnlineStatus(false,clientMoniker, manager));
+ return result;
+ }
+ @ManagerMapping(value = "/{clientMoniker}/query/alipay_aps_retail", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
+ public JSONObject queryAlipayApsOfflineStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ JSONObject result = new JSONObject();
+ result.put("response_str", clientManager.queryAlipayPlusOnlineStatus(true,clientMoniker, manager));
+ return result;
+ }
}
diff --git a/src/main/resources/application-alipay.yml b/src/main/resources/application-alipay.yml
index a9ddd3791..254bb4235 100644
--- a/src/main/resources/application-alipay.yml
+++ b/src/main/resources/application-alipay.yml
@@ -2,16 +2,75 @@ app:
alipay:
host: https://mapi-hk.alipay.com/gateway.do
merchants:
- online:
- key: hmwjrganlzb4aqgggdgdlod7l3lsjkn6
+ - key: hmwjrganlzb4aqgggdgdlod7l3lsjkn6
pid: 2088821643021586
+ pid-type: ONLINE
+ biz-type: ONLINE
private-key: classpath:data/crypt/alipay_private.pem
public-key: classpath:data/crypt/alipay_public.pem
sftp-password: XNBB3S
sftp-username: openvisePTY
- retail:
- key: jb5mt4vhtlzg1xlc0k967sib7v81sba6
+ - key: jb5mt4vhtlzg1xlc0k967sib7v81sba6
pid: 2088721525235246
+ pid-type: RETAIL
+ biz-type: RETAIL
sftp-password: XNBB3S
sftp-username: openvisePTY
+ - pid: SANDBOX_5Y2Z6G2Y6CD006426
+ bill-pid: ''
+ pid-type: CONNECT
+ biz-type: RETAIL
+ api-prefix: /ams
+ private-key-string: |-
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7Q56Mi0ESd7lIImLl/qvoHry8M1pg6qMyzzsMsHe6kMMculI7B7G2/fGpSS2JC46jZrVRb/fYf1NLehhAh1MK51md/7dEgqjkowtXIjhEQTPXwTWWkxtnb/l+KoqWtBrkOfMIef+O6QbqvveneLlCq9wMnvKNsj0p9GtUKxYUyxY8Nwuc2tf2wG2zKuh0JoRMLMRMayr7WdhAy4jatJS5pDjJqoIxyhD6X7fPleoeJgzyYSZAPgnH01TSO5ePFQZ/7SxDRC8+D5rAnefsridaabmeBQG2QWf4Gz7qPuavnZfwKzkjptj390+D0PAR3f3JCvYXTrRRUGKdVpiuuFAbAgMBAAECggEBAJrmxUjWi9494Kq1nv9HGWYpvs8i33jZvmNyHhNSCcfupSanTQv9QljvWK5ClQMO509sz0FtECQqtnjxpwwBpISZeH0EoNFwD0sJP4E1EjwLf1nSPYSvbPS0IDnn8LnWg4QUF2AEoovRYGJf0zXZ2801ohFijZr+PC/vObTm6x4IsVasse+urTpAKb1XBnkOF2eKFTM4JdRHFSl4Uk0npdPtULUEvACpsORrBVjJz1dWjIkvHeOrqv5rKR1bxuRlhiDcVoDb7oDD3KIqR93YljOI0mdXLm2DuboGEpj0yKZYU+RaPWxMOErRT99UIAAVpPDVjGKZdt95K6BrWoqxq7kCgYEA5bzUMCM6/0jLt/kmuwkOF+zckz4DLtWFlosGrf658of9PQIvjkZbun3TcpJ2aQ8g7k2qFAUvwc5Uy5G0lW+uCIRA7zcKd2Rz4Rb4Q8qgI+9bIOuDjmvg36zOvqg3xuepoYq/2jcFGR+cBFGpbEu0VWESW3vytDsMosDp4xYkvt0CgYEA0KvSnx9ZqNHINQJCTgLd+mWbEv4lTSDXwi/OBtS8O7tTQRw73OkpOXobXv/vhTV4KimPOWTFFSEZcY7Rl0eyFV7rQD+gIioTCpt4m/ez/zImCv11tQWBqa/GoqZ0d0P9HPgmVjMh8Be0CVTEzGgXeOD2mcP+0WJCns/Js2s2j1cCgYEAk6EOMYjSJq4eyzA+JT6iYdmBvNTCstvfJmhceH8R+rpMj2HSMXkhBOxKbnuTv9tK7BfYTVkv4Ti34MDW7JiBm1NxbsdN4H8av/BExTt2QOFVDAiL13+XV+TyTi5G+Xhw1zAULSPiEMzxMw1O9BqJ3butUkCKLCst6YBSS+0027kCgYEAn+BFiyzV4QZ5wkNs0aBYupRGcBLQOXvEUz+VNp6faZRogSZEp0jtEOCBQBQPS5xf6M3Wsj6G0V1+xQaLhsCjrMQAskUNR5+83w+nJLhv7EJb62euW3dQlNXb9ppZ+VbaAuwNU1Xx1qYShmOwNHw8H50c00rbXUlPiaXh/9lRABkCgYBC9cIcIEutg3hmOlGrRVSSNnuYVO2MuLAIK1KnQftpZHZ+euuCnhPaoC3ZOtenWoBwgS6qV4Mpxq30qcc/mUouErpqUcrNxawlVgWjTSwNd6rT2MBg1lcOxpqsR9ZWolBp4nHvnbLxhI+2KiXpRV9Y8Gbkw1jI8/tMYcSEJsOfEA==
+ public-key-string: |-
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqME6KAPZcMlFuy19J+RAj34PaS6iuyjINzQvdjR808IeVQAcLdUULMEgCTSQLshC606GFoGkN5nOouoMCZQmPv9hbZSWcDHMrPNNVYuAqwk0N80FSnASNPtlucoqzVjAaqgXD88hqjODCIS/b9LWrprCA3q3aAfVQu3eQLoFM1nn9EdznCp0uVClHgLtwj1rMRkjN+4CSwOW66/RNzsgnDJMkrTlRDeJCrbdXAs0Q3MWQEQv2z1fd34U1yyY2StkHbfKAVp2cCzhSl26K3LcCooDv9VDSv3BDH58sBQ8TIprIW0EsDA4jbLXEDEKXIjqIOaC/+x8jXyRpci17ZvRowIDAQAB
+ pid-host: https://open-sea.alipay.com
+ - pid: SANDBOX_5Y2Z6G2Y6CD006410
+ bill-pid: ''
+ pid-type: APS
+ biz-type: RETAIL
+ api-prefix: /aps
+ private-key-string: |-
+ MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7Q56Mi0ESd7lIImLl/qvoHry8M1pg6qMyzzsMsHe6kMMculI7B7G2/fGpSS2JC46jZrVRb/fYf1NLehhAh1MK51md/7dEgqjkowtXIjhEQTPXwTWWkxtnb/l+KoqWtBrkOfMIef+O6QbqvveneLlCq9wMnvKNsj0p9GtUKxYUyxY8Nwuc2tf2wG2zKuh0JoRMLMRMayr7WdhAy4jatJS5pDjJqoIxyhD6X7fPleoeJgzyYSZAPgnH01TSO5ePFQZ/7SxDRC8+D5rAnefsridaabmeBQG2QWf4Gz7qPuavnZfwKzkjptj390+D0PAR3f3JCvYXTrRRUGKdVpiuuFAbAgMBAAECggEBAJrmxUjWi9494Kq1nv9HGWYpvs8i33jZvmNyHhNSCcfupSanTQv9QljvWK5ClQMO509sz0FtECQqtnjxpwwBpISZeH0EoNFwD0sJP4E1EjwLf1nSPYSvbPS0IDnn8LnWg4QUF2AEoovRYGJf0zXZ2801ohFijZr+PC/vObTm6x4IsVasse+urTpAKb1XBnkOF2eKFTM4JdRHFSl4Uk0npdPtULUEvACpsORrBVjJz1dWjIkvHeOrqv5rKR1bxuRlhiDcVoDb7oDD3KIqR93YljOI0mdXLm2DuboGEpj0yKZYU+RaPWxMOErRT99UIAAVpPDVjGKZdt95K6BrWoqxq7kCgYEA5bzUMCM6/0jLt/kmuwkOF+zckz4DLtWFlosGrf658of9PQIvjkZbun3TcpJ2aQ8g7k2qFAUvwc5Uy5G0lW+uCIRA7zcKd2Rz4Rb4Q8qgI+9bIOuDjmvg36zOvqg3xuepoYq/2jcFGR+cBFGpbEu0VWESW3vytDsMosDp4xYkvt0CgYEA0KvSnx9ZqNHINQJCTgLd+mWbEv4lTSDXwi/OBtS8O7tTQRw73OkpOXobXv/vhTV4KimPOWTFFSEZcY7Rl0eyFV7rQD+gIioTCpt4m/ez/zImCv11tQWBqa/GoqZ0d0P9HPgmVjMh8Be0CVTEzGgXeOD2mcP+0WJCns/Js2s2j1cCgYEAk6EOMYjSJq4eyzA+JT6iYdmBvNTCstvfJmhceH8R+rpMj2HSMXkhBOxKbnuTv9tK7BfYTVkv4Ti34MDW7JiBm1NxbsdN4H8av/BExTt2QOFVDAiL13+XV+TyTi5G+Xhw1zAULSPiEMzxMw1O9BqJ3butUkCKLCst6YBSS+0027kCgYEAn+BFiyzV4QZ5wkNs0aBYupRGcBLQOXvEUz+VNp6faZRogSZEp0jtEOCBQBQPS5xf6M3Wsj6G0V1+xQaLhsCjrMQAskUNR5+83w+nJLhv7EJb62euW3dQlNXb9ppZ+VbaAuwNU1Xx1qYShmOwNHw8H50c00rbXUlPiaXh/9lRABkCgYBC9cIcIEutg3hmOlGrRVSSNnuYVO2MuLAIK1KnQftpZHZ+euuCnhPaoC3ZOtenWoBwgS6qV4Mpxq30qcc/mUouErpqUcrNxawlVgWjTSwNd6rT2MBg1lcOxpqsR9ZWolBp4nHvnbLxhI+2KiXpRV9Y8Gbkw1jI8/tMYcSEJsOfEA==
+ public-key-string: |-
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqME6KAPZcMlFuy19J+RAj34PaS6iuyjINzQvdjR808IeVQAcLdUULMEgCTSQLshC606GFoGkN5nOouoMCZQmPv9hbZSWcDHMrPNNVYuAqwk0N80FSnASNPtlucoqzVjAaqgXD88hqjODCIS/b9LWrprCA3q3aAfVQu3eQLoFM1nn9EdznCp0uVClHgLtwj1rMRkjN+4CSwOW66/RNzsgnDJMkrTlRDeJCrbdXAs0Q3MWQEQv2z1fd34U1yyY2StkHbfKAVp2cCzhSl26K3LcCooDv9VDSv3BDH58sBQ8TIprIW0EsDA4jbLXEDEKXIjqIOaC/+x8jXyRpci17ZvRowIDAQAB
+ pid-host: https://open-sea.alipay.com
+ enabled: true
+ - pid: SANDBOX_5Y372Y2YBKQN02382
+ bill-pid: ''
+ pid-type: APS
+ biz-type: ONLINE
+ api-prefix: /aps
+ private-key-string: |-
+ MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDWXsXs+dZPb/cd
+ BSmffOCjjoXLBQmAtrr9etHQBRUARP2jROppMYlvpfHkBvDlSs8mkz5dNeFF9L0z
+ QblRWxgW2658nq6u833CjPgTROsLEQZIrJuGCWwQuNslv8ACoKW/FippMDLnDUfk
+ /41TfzIiMhVrAUuy7P14pa/O8fIrDXMU/G1jknhPfvpLqkPfAB9N2Bf/F61XZsNN
+ 3Xco8X/wW8EdGaw1NdS2hjNvAvuxlcVexqPwXoECJgPQNip/9G/a+8NmKn7hLL1V
+ 8eXyC2J5pBMGq+H52Z2Su/jTyK9h5Qs9j42rQaBp06PHxfK4PhziIVaskLSqNO+j
+ IrONpumzAgMBAAECggEAEepHtj9G5sqfp0A4M0j3aRPPIKFiIuyige6SvETAdY5O
+ eCeZQ4NNThRbO8hMt4zh9QJXMuj+057ZdQAoIaFwSPDBC08joCFfQDQRw2J+FiWt
+ FcO/F5uP+XHJdsUooc+VKnwKvVG231Jf0MZ+pBy8Ltlqqs+n6OMfZ8bJA416xJgq
+ 35tfzKA1orpXtMk8YF7RrCnUlAxYWG5t30kqS/i7k0XtnaG26f0x/TllA+bT8G0I
+ Sv6JHlJYUh7GwjRmvt9DWnCIWCfr0HnIfDG28Hj1ZrIgpCULiM9/0JHB0DYj7xWn
+ kIYnN8M+aPi0uc10GPKpf6Z9d6BfKlTjkwjSSBADGQKBgQD9lPqEBUuYQYrG+mqJ
+ 3eQQ/ydt7LJ+q9k2Nv0v0yxp2VeZfGHy3IpJzL3tg38+YXY+BpUa30QjyEjD+TCz
+ +9Q/DR/d0chR+2+ZKB69RA39GjLNvebS6IogAzZi0+a4h48iB+4o9E39vJNZEfZt
+ ICa+QYBdfJuJ/hYfmmeVafTixwKBgQDYahML6Oj14qw+8ymEXToPwdYRs7+bikiw
+ BKU3t5jj+74kYGMBA5i1AdYA9pl7QZaLUPToPOyfG+YWzWKes1VrAq55h3h44S1S
+ REBK7pct9EmeXBajAmYJf+4smamWgmNvfOB1f6K4Bvz/wr/eSiOAXBtt2OMKe1H/
+ kr0E85XVtQKBgCftYDCPYOK9VyuTXFkO3g0rD7tILKazSkU2DVGNb43PEfLx2b5S
+ qVeLbFBMhyl8URDdGncbtm/n5kUtJFUCjt3KpDzZ/i+iZmT4Izbr00QJ7vvkLccB
+ pFX8C4EuGkLt3USfeQlrxifwnEbHBEUUbeVBDQQrTZZBspwRRMQK5esbAoGAT7bi
+ xSRJiyivYZCX3lWoqV0wyNx424YYOB297cQG4RM9epC2Zw04FpRSi5BKAIisNyze
+ yRyH3COeoQ+OH/7Wm9AlDEbGLWBkHUVemTtBHIA7DcXF4M1lYGJrDKqdOP9WOR66
+ Xw1gloCceGj3251bblB/GfslxhqenZEjZsuCiXECgYAYSe9ZS2pK06NG/0qqEK2t
+ LktRAEZLMZNKoCfTZ73Tv/3RbIKOTih/0u1esAz8ZNDba1rCY/Yk7tEnn7TdBmh6
+ tZ2ioys08F2bZingLcTGes1s86/ideNGeoKT2e+071dD/AfdTqchaFRZdYlyPrF7
+ Geg8LExk9alI9NEyoD7cKA==
+ public-key-string: |-
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkuBPpcDeFpO12FUgi4UGHWCJ6OdPp0GVvYFUSJzJ+KNUodFpmgw306rNA+0Q5Bn/mw9aaqGCCmZYPpF4TnzGqQcLrAFABW+tpUfGj3WwNndhLyCBnqvp740iufsCaLvzlZyQplL8CBQ4AQPdIVa4YlCiX+AxJNq+kXsNvgUKK0iDLujYE6XzgjOCSq03tFfY3ry58DoEvf86WmS+fP7zAl77kmDf1CmJa5V06aviUlzmuyo/p8m3fUucB1Fv3WNF7qRpNPkMuL6jjHenb9LzWr1tieRTd7mZxOd9KOq75CJiX4XiTHhWbvd2pW/NIkDPZ9dAJPSK57mrh+e7zgT2pQIDAQAB
+ pid-host: https://open-sea.alipayplus.com
+ enabled: true
sftp-host: sftp.alipay.com
diff --git a/src/main/ui/static/config/platformrevenue/templates/platform_settle_logs.html b/src/main/ui/static/config/platformrevenue/templates/platform_settle_logs.html
index b13f607be..8ce8f87e2 100644
--- a/src/main/ui/static/config/platformrevenue/templates/platform_settle_logs.html
+++ b/src/main/ui/static/config/platformrevenue/templates/platform_settle_logs.html
@@ -338,4 +338,76 @@
+
+
+
+
+
No Data
+
+
+
+ Date Start
+ Date End
+ Settle Date
+ Pay Fee
+ Refund Fee
+ Net Fee
+ Poundage
+ Settlement Fee
+ Unsettled
+ Validation
+
+
+
+
+
+
+
+
+
+ {{log.net_fee}}
+ (System:{{log.sys_net_fee}})
+ (System:{{log.sys_net_fee}})
+
+ {{log.surcharge}}
+ (System:{{log.sys_surcharge}})
+ (System:{{log.sys_surcharge}})
+
+ {{log.settlement_fee}}
+ (System:{{log.sys_settlement_fee}})
+ (System:{{log.sys_settlement_fee}})
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js
index 4e63e0fb4..2f6369ab1 100644
--- a/src/main/ui/static/payment/partner/partner-manage.js
+++ b/src/main/ui/static/payment/partner/partner-manage.js
@@ -6385,6 +6385,67 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.loadSubMerchantInfos()
})
}
+
+ $scope.applyAlipayPlusRetailMerchantId = function () {
+ $uibModal
+ .open({
+ templateUrl: '/static/payment/partner/templates/apply_alipayplus_sub_merchant_id.html',
+ controller: 'applyAlipayPlusSubMerchantIdCtrl',
+ resolve: {
+ subMerchantInfo: function () {
+ return $scope.partner
+ },
+ online: false,
+ },
+ })
+ .result.then(function () {
+ $scope.loadSubMerchantInfos()
+ })
+ }
+ $scope.applyAlipayPlusOnlineMerchantId = function () {
+ $uibModal
+ .open({
+ templateUrl: '/static/payment/partner/templates/apply_alipayplus_sub_merchant_id.html',
+ controller: 'applyAlipayPlusSubMerchantIdCtrl',
+ resolve: {
+ subMerchantInfo: function () {
+ return $scope.partner
+ },
+ online: true,
+ },
+ })
+ .result.then(function () {
+ $scope.loadSubMerchantInfos()
+ })
+ }
+ $scope.queryAlipayPlusApsOnline = function () {
+ $http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipay_aps_online').then(
+ function (resp) {
+ commonDialog.alert({
+ title: 'AlipayPlus Online Apply Status',
+ content: resp.data.response_str,
+ type: 'info',
+ })
+ },
+ function (resp) {
+ commonDialog.alert({ title: 'Error', content: '查询失败:' + resp.data.message, type: 'error' })
+ }
+ )
+ };
+ $scope.queryAlipayPlusApsRetail = function () {
+ $http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipay_aps_retail').then(
+ function (resp) {
+ commonDialog.alert({
+ title: 'AlipayPlus Retail Apply Status',
+ content: resp.data.response_str,
+ type: 'info',
+ })
+ },
+ function (resp) {
+ commonDialog.alert({ title: 'Error', content: '查询失败:' + resp.data.message, type: 'error' })
+ }
+ )
+ };
// 刷新Wechat Sub Merchant Id
$scope.queryWechatSubMerchantIdStatus = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/get_merchant_ids/' + $scope.partnerInfo.sub_merchant_id + '/status').then(
@@ -6973,7 +7034,134 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
},
])
- app.controller('updateApplyWxSubMerchantIdCtrl', [
+ /**
+ * 申请alipayplus
+ */
+ app.controller('applyAlipayPlusSubMerchantIdCtrl', [
+ '$scope',
+ '$http',
+ '$uibModal',
+ '$state',
+ 'subMerchantInfo',
+ '$filter',
+ 'commonDialog',
+ 'online',
+ function ($scope, $http, $uibModal, $state, subMerchantInfo, $filter, commonDialog,online) {
+ $scope.subMerchantInfo = angular.copy(subMerchantInfo)
+ $scope.subMerchantInfo.online=online;
+ $scope.subMerchantInfo.merchantDisplayName = $scope.subMerchantInfo.short_name;
+ $scope.subMerchantInfo.registrationAddress= $scope.subMerchantInfo.address;
+
+ // if ($scope.subMerchantInfo.client_pay_type) {
+ // if ($scope.subMerchantInfo.client_pay_type.indexOf('1') >= 0 && $scope.subMerchantInfo.client_pay_type.indexOf('2') >= 0) {
+ // $scope.subMerchantInfo.payment_type_online = true;
+ // $scope.subMerchantInfo.business_type_offline = true;
+ // } else if ($scope.subMerchantInfo.client_pay_type.indexOf('1') >= 0) {
+ // $scope.subMerchantInfo.business_type_offline = true
+ // } else if ($scope.subMerchantInfo.client_pay_type.indexOf('2') >= 0) {
+ // $scope.subMerchantInfo.business_type_agreement = true
+ // }
+ // } else {
+ // $scope.subMerchantInfo.payment_type_online = true;
+ // $scope.subMerchantInfo.business_type_offline = true;
+ // }
+ if($scope.subMerchantInfo.online) {
+ $scope.title = "AlipayPlus-aps(Online)Registration";
+ }else{
+ $scope.title = "AlipayPlus-aps(Retail)Registration";
+ }
+ $scope.subMerchantInfo.websiteType = 'WEB';
+ $scope.subMerchantInfo.website= $scope.subMerchantInfo.company_website;
+ $scope.subMerchantInfo.legalName = $scope.subMerchantInfo.company_name;
+ $scope.subMerchantInfo.registrationType='OTHER_IDENTIFICATION_NO'
+ if ($scope.subMerchantInfo.business_structure) {
+ $scope.subMerchantInfo.businessType = $scope.subMerchantInfo.business_structure != 'Registered body(Sole Trader)' ? 'ENTERPRISE' : 'INDIVIDUAL'
+ }
+ $scope.subMerchantInfo.shareholderName= $scope.subMerchantInfo.representativeInfo.representative_person;
+ $scope.subMerchantInfo.representativeName= $scope.subMerchantInfo.representativeInfo.representative_person;
+ $scope.subMerchantInfo.storeAddress= $scope.subMerchantInfo.address;
+ $scope.subMerchantInfo.registrationNo= $scope. subMerchantInfo.acn ? $scope.subMerchantInfo.acn : $scope.subMerchantInfo.abn;
+ $scope.subMerchantInfo.storeMCC=$scope.subMerchantInfo.alipayindustry;
+ $scope.subMerchantInfo.storeName=$scope.subMerchantInfo.store_name;
+
+ $scope.alipayMccCategory = {}
+ $scope.loadAlipayCategory = function () {
+ $http.get('/static/data/alipayMcc.json').then(function (resp) {
+ $scope.alipayMccCategory = resp.data
+ })
+ }
+ $scope.loadAlipayCategory()
+
+ $scope.onAlipayMccSelect = function (selectedItem) {
+ $scope.subMerchantInfo.alipay_category = selectedItem.label
+ $scope.subMerchantInfo.alipayindustry = selectedItem.mccCode
+ }
+ $scope.onAlipayStoreMccSelect = function (selectedItem) {
+ $scope.subMerchantInfo.storeMCC_category = selectedItem.label
+ $scope.subMerchantInfo.storeMCC = selectedItem.mccCode
+ }
+ $scope.saveAlipayApply = function (form) {
+ $scope.errmsg = null
+ if (form.$invalid) {
+ angular.forEach(form, function (item, key) {
+ if (key.indexOf('$') < 0) {
+ item.$dirty = true
+ }
+ })
+ return;
+ }
+ var params = {
+ websiteType: $scope.subMerchantInfo.websiteType,
+ merchantDisplayName: $scope.subMerchantInfo.merchantDisplayName,
+ merchantMCC: $scope.subMerchantInfo.alipayindustry,
+ legalName: $scope.subMerchantInfo.legalName,
+ registrationType: $scope.subMerchantInfo.registrationType,
+ registrationNo: $scope.subMerchantInfo.registrationNo,
+ businessType: $scope.subMerchantInfo.businessType,
+ shareholderName: $scope.subMerchantInfo.shareholderName,
+ shareholderId: $scope.subMerchantInfo.shareholderId,
+ representativeName: $scope.subMerchantInfo.representativeName,
+ representativeId: $scope.subMerchantInfo.representativeId,
+ storeName: $scope.subMerchantInfo.storeName,
+ storeMCC: $scope.subMerchantInfo.storeMCC,
+ storeAddress: $scope.subMerchantInfo.storeAddress,
+ registrationAddress: $scope.subMerchantInfo.registrationAddress,
+ }
+ params.productCodes=[];
+ if($scope.subMerchantInfo.online){
+ params.productCodes.push('CASHIER_PAYMENT');
+ }else{
+ params.productCodes.push('IN_STORE_PAYMENT');
+ }
+ params.websites=[]
+ if($scope.subMerchantInfo.online){
+ params.websites.push($scope.subMerchantInfo.website);
+ }
+
+ $http.post('/sys/partners/' + $scope.subMerchantInfo.client_moniker + '/apply_alipayplus', params).then(
+ function (resp) {
+ if(resp.data.success) {
+ commonDialog.alert({ title: 'Success', content: "注册成功!", type: 'success' })
+ }else{
+ commonDialog.alert({title: 'Error', content: "注册失败!", type: 'error'})
+ }
+
+ $scope.$close()
+ },
+ function (resp) {
+ $scope.flag = false
+ commonDialog.alert({ title: 'Error', content: resp.data.message, type: 'error' })
+ }
+ )
+
+ };
+
+
+ },
+ ])
+
+
+ app.controller('updateApplyWxSubMerchantIdCtrl', [
'$scope',
'$http',
'$uibModal',
diff --git a/src/main/ui/static/payment/partner/templates/apply_alipayplus_sub_merchant_id.html b/src/main/ui/static/payment/partner/templates/apply_alipayplus_sub_merchant_id.html
new file mode 100644
index 000000000..41b8a3cfa
--- /dev/null
+++ b/src/main/ui/static/payment/partner/templates/apply_alipayplus_sub_merchant_id.html
@@ -0,0 +1,284 @@
+
\ No newline at end of file
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 439260e97..02bc04812 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
@@ -232,6 +232,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ AlipayPlus(Retail) :
+ none
+
+
+
+
+
+
+ Apply
+
+
+ Result
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AlipayPlus(Online) :
+ none
+
+
+
+
+
+
+ Apply
+
+
+ Result
+
+
+
+
+
+
+
+
+
+