From e173e25dcfac680f5255695de7b0ac31ce37717f Mon Sep 17 00:00:00 2001 From: "taylor.dang" Date: Tue, 3 Dec 2019 14:01:06 +0800 Subject: [PATCH] =?UTF-8?q?[Y]=20R=20service=20=E5=8A=A0=E5=AF=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../core/impls/RetailRSvcServiceImpl.java | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index d8d5c4c3d..c8b6882fa 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 manage - 1.3.0 + 1.3.1 UTF-8 1.4.0 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 06238fea9..6ad758ca6 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 @@ -38,16 +38,26 @@ public class RetailRSvcServiceImpl implements RetailRSvcService { throw new BadRequestException("this channel config is wrong"); } RSvcMchBean svcMchBean = clientManager.findSvcMchByAccountId(device.getString("account_id")); - String pubKeyEncCredentialCode = SignUtils.encData(svcMchBean.getCredentialCode(), svcInfo.getString("channel_pub_key")); String aesKeyStr = Base64.encodeBase64String(AESCrypt.randomKey().getEncoded()); Key key = AESCrypt.fromKeyString(Base64.decodeBase64(aesKeyStr)); - String decCredentialCode = Base64.encodeBase64String(AESCrypt.encrypt(pubKeyEncCredentialCode.getBytes(StandardCharsets.UTF_8), key)); JSONObject result = (JSONObject) JSON.toJSON(svcMchBean); result.put("sign_type", "RSA2"); - result.put("enc_data", decCredentialCode); + result.put("enc_data", new JSONObject(true) { + { + put("credentialCode", encData(svcMchBean.getCredentialCode(), key, svcInfo.getString("channel_pub_key"))); + put("payHost", encData(svcMchBean.getPayHost(), key, svcInfo.getString("channel_pub_key"))); + put("partnerCode", encData(svcMchBean.getPartnerCode(), key, svcInfo.getString("channel_pub_key"))); + put("merchantNumber", encData(svcMchBean.getMerchantNumber(), key, svcInfo.getString("channel_pub_key"))); + } + }); result.put("nonce_str", aesKeyStr); result.put("timestamp", System.currentTimeMillis()); result.put("sign", SignUtils.buildSign(result.toJSONString(), svcInfo.getString("platform_pri_key"))); return result; } + + private String encData(String data, Key key, String publicKey) { + String pubKeyEncData = SignUtils.encData(data, publicKey); + return org.apache.commons.codec.binary.Base64.encodeBase64String(AESCrypt.encrypt(pubKeyEncData.getBytes(StandardCharsets.UTF_8), key)); + } }