Sfoglia il codice sorgente

fix alipay

release_toaliyun_real
xiaohanzi 5 anni fa
parent
commit
d5bacd223c
3 ha cambiato i file con 76 aggiunte e 32 eliminazioni
  1. +1
    -1
      mallinkService/pom.xml
  2. +71
    -14
      mallinkService/src/main/java/com/iformall/service/pay/alipay/AliPayUtil.java
  3. +4
    -17
      mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java

+ 1
- 1
mallinkService/pom.xml Vedi File

@@ -39,7 +39,7 @@
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.0</version>
</dependency>
</dependency>
</dependencies>

</project>

+ 71
- 14
mallinkService/src/main/java/com/iformall/service/pay/alipay/AliPayUtil.java Vedi File

@@ -1,9 +1,17 @@
package com.iformall.service.pay.alipay;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -28,10 +36,16 @@ import lombok.extern.slf4j.Slf4j;
@Service
public class AliPayUtil {

@Autowired
AliPayConfig payConfig;
//@Autowired
//AliPayConfig payConfig;
private Config getConfig() {
AliPayConfig payConfig = new AliPayConfig();
payConfig.setAppId("2021002137663024");
payConfig.setAppPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUfymV5J73QQMG52PVIGUbowkloYCO4B7TQoKbrTZf2YeYsg/To/o4PiXPMNwEUfEUU8NYQ6WwNhCd2fa1ei8WFXJUf3bfgswtBk1aOmHLeY9yoXFxIKMTQ9RcobnmBzKQZlaAPMTSr7t1QtKZKPuc2gEHGRFYKO/ZuL8gIpnsVidVtmi52yd7hzao/pI3ThLA0lreg4L3rYP5ESQZRytxIPgUQ4KI11pZxFgbe+uy28AGDYIQscSIb+SWOHPYKLvOEqqepIZ8M18w/U0lZzpzepzi/V/llekvXJ6UEf1lzl7x/4UIA3WPN1B40+NzbD/OxEGTuM0UctOG6ZTd4Te9AgMBAAECggEAPYksnHbvARspu/SrRCh2fatkIPn6Ijrxyy3mnch7neCw9i/jqxpqmF/4nxFqO0gRlRDZBHyT7p+Y5zDpsW5+kLI2fJmNkzXKkmXoLBnBaOZo8WHBdtXFfjg/iltig9Y7t+cQtXd5QK2eCwuz5dA75FXa0ywqKdRdAGY0nYZ5LpwrHVU8RXheUDCJyhKNj2+W6lIaSKDxLZU3laO1oBrv1agcy7Crd5E2ndb8O3Enga+z7wSz2h7A1BasC/Yl/Ro0Y21wLCH3s/R6qA0Paq12+WEF+xdodM7SrP43CCTVFGbC1TfEOdanJfixop8QuYsIp7pHrL925+vP4eY9RfckgQKBgQDQqLdpDzzU7Ot/L9Vc/r8d4iwXXbX8+HwVFV4oBuausgFyv8eJJpfrI+IlEoB1ubJcPpJBFqfmeYTW6/v6ioFljJAlWfFvesUVt/HszBMIOsU0Bzt7ex6WlwKOagb0q0ZPA4T0OY0K0lg0loaaaR8ZTr4ivDymaGBtTBYhslpc7QKBgQC2MBznGEc5r2dhyENvdPOR20PnXQcevGnPdqSus8m0VmDcHE72RVcckcZtwczsb3NaLSqmjAcWTn51/VFmlvhB3F34FcFTPZGq6sj7fWK8HuFq7l7mu5OzYuVr73zy9ggsUuaw10IqvvwIVxszNAF0hiRnSGH3z27CoRmz3s+8EQKBgQCK3o7atBJ3X4rIJiypbL4DhIB1uJ+jUjk6yvLUTut+fufp1+tTw0S+cS5UIAEw2Lr1G4u5F/v8rwmTBJG6SC4gSLGyui6uVBYRA1BWmedcxchzfRDAeMt9y9kesUAZ3Fe5xIzbAeZ1ulKMBVZmM+pHrJlsgr0Wv0bV1xqvqITtbQKBgBIsIGXopQoa9dvqBtfyOW1eCprkS5aEQqWf9vM6Ga90QjsSU8n6xqKh48IE57TZtQ7UnIF6TCasc66/MsRh4KdpHLJnMR5lcMc0nhF/wz5ychehaTPol+X3wlyOyc7OPah2KG6ROhdbb3ZBggQMduyxiKYIsUTvmuOtAAxR+DSRAoGADtuDzGQDOJYWiO2uuP6FpA5IJaiwlSfu3xncJVfhO8SVr6VBJFg88igbIB3w6nk/sv7j9VTXqXre9HMvp1flxaaLsdxM4HcTSALS9q6t/ajaveqte6S5kAtWx0WW8C6PtgWXHbxcD7LXARSsKLoEl2JXXyUVS/m2l/RzHBQ8GJI=");
payConfig.setAppPublicKeyCertPath("C://appCertPublicKey_2021002137663024.crt");
payConfig.setAlipayCertPath("C://alipayCertPublicKey_RSA2.crt");
payConfig.setAlipayRootCertPath("C://alipayRootCert.crt");
return AliPayApi.getOptions(payConfig.getAppId(), payConfig.getAppPrivateKey(), payConfig.getAppPublicKeyCertPath(),
payConfig.getAlipayCertPath(), payConfig.getAlipayRootCertPath());
}
@@ -78,13 +92,32 @@ public class AliPayUtil {
//门店照片上传
public String merchantImageUpload(String appAuthToken,String imageName,byte[] file) {
String temfolder = "/alipaytempfile/"+UUID.randomUUID();
File tempfolerFile = new File(temfolder);
if (!tempfolerFile.exists()) {
tempfolerFile.mkdirs();
}
String temFilePath = temfolder+"/"+imageName;
File f = new File(temFilePath);
if (f.exists()) {
f.delete();
}
try {
AlipayOpenApiGenericResponse response = AliPayApi.uploadMerchantImage(getConfig(),appAuthToken,imageName, file);
FileOutputStream fos = new FileOutputStream(f);
fos.write(file);
fos.close();
AlipayOfflineMaterialImageUploadResponse response = AliPayApi.uploadMerchantImage(getConfig(),appAuthToken,imageName, temFilePath);
JSONObject result = getGenericResponse(response.getHttpBody(),"alipay_offline_material_image_upload_response");
if (f.exists()) {
f.delete();
}
if (null != result) {
return result.getString("image_id");
}
} catch (Exception e) {
if (f.exists()) {
f.delete();
}
log.error("alipay merchantImageUpload error. ",e);
}
return null;
@@ -116,6 +149,7 @@ public class AliPayUtil {
rule0.setRule_name("ASSIGN_FROM_REQUEST");
rule0.setRule_value("Balance");
ruleList.add(rule0);
request.setField_rule_list(ruleList);
try {
AlipayOpenApiGenericResponse response = AliPayApi.createMemberCardModel(getConfig(),appAuthToken, request);
@@ -145,9 +179,9 @@ public class AliPayUtil {
}
//获取商圈会员卡领卡投放链接
public String getSmartDistrictMemberCardUrl(String appAuthToken,String templateId,String callback,String param) {
public String getSmartDistrictMemberCardUrl(String appAuthToken,String templateId,String appCallback,String param) {
try {
AlipayOpenApiGenericResponse response = AliPayApi.getMemberCardUrl(getConfig(),appAuthToken, templateId, param, callback);
AlipayOpenApiGenericResponse response = AliPayApi.getMemberCardUrl(getConfig(),appAuthToken, templateId, param, appCallback);
JSONObject result = getGenericResponse(response.getHttpBody(),"alipay_marketing_card_activateurl_apply_response");
if (null != result) {
return result.getString("apply_card_url");
@@ -161,7 +195,7 @@ public class AliPayUtil {
//商圈智能积分授权(算法授权)URL
public String getH5SmartDistrictMallVipPointsUrl(String appId,String callback,String param) {
try {
return "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=mall_vip_points&redirect_uri="+URLEncoder.encode(callback,"utf-8")+"&state="+param;
return "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id="+appId+"&scope=mall_vip_points&redirect_uri="+URLEncoder.encode(callback,"utf-8")+"&state="+param;
} catch (UnsupportedEncodingException e) {
log.error("alipay getH5MallVipPointsUrl error. ",e);
}
@@ -182,17 +216,40 @@ public class AliPayUtil {
return false;
}
public static byte[] File2byte(File tradeFile){
byte[] buffer = null;
try
{
FileInputStream fis = new FileInputStream(tradeFile);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
{
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return buffer;
}
public static void main(String[] args) {
AliPayUtil util = new AliPayUtil();
// String token = getAppAuthToken("Pfbe94a5103a0414db99ce865204ee63");
// System.out.println(token);
//merchantImageUpload("202104BB2f6dfa9641894b0fa3fabe10564f8X63", "aa.jpg", file);
// try {
// AlipayOfflineMaterialImageUploadResponse response= AliPayApi.uploadMerchantImage(getConfig(), "202104BB9d4876a83ec74f3fbc0407e13c67dX63", "logo-img.png", "C://logo-img.png");
// System.out.println(JSON.toJSONString(response));
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//File file = new File("C://logo-img.png");
//System.out.println(util.merchantImageUpload("202104BB054c88e950ba4513854e4275ff71cF63", "aa.jpg", File2byte(file)));
//System.out.println(util.createSmartDistrictMemberCardModel("202104BB054c88e950ba4513854e4275ff71cF63", "会员卡", "OKJx3oOPTUOaINs0AQ_qMgAAACMAAQQD", "OKJx3oOPTUOaINs0AQ_qMgAAACMAAQQD"));
//System.out.println(util.setSmartDistrictMemberCardModelConfig("202104BB054c88e950ba4513854e4275ff71cF63", "20210417000000002702655000300637"));
//System.out.println(util.getSmartDistrictMemberCardUrl("202104BB054c88e950ba4513854e4275ff71cF63", "20210417000000002702655000300637", "https://ctest.malls.iformall.com/C/api/alipay/callback", "123"));
//System.out.println(util.getH5SmartDistrictMallVipPointsUrl("2021002139648762", "https://ctest.malls.iformall.com/C/api/alipay/callback", "123"));
System.out.println(util.smartDistrictTopicSubscribe("202104BB054c88e950ba4513854e4275ff71cF63"));
}
}

+ 4
- 17
mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java Vedi File

@@ -13,6 +13,7 @@ import com.alipay.easysdk.base.oauth.models.AlipaySystemOauthTokenResponse;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.alipay.easysdk.util.generic.models.AlipayOpenApiGenericResponse;
import com.iformall.common.IdWorker;
import com.iformall.service.pay.alipay.api.entity.memberCardModel.AlipayMemberCardModelColumn;
import com.iformall.service.pay.alipay.api.entity.memberCardModel.AlipayMemberCardModelFieldRule;
import com.iformall.service.pay.alipay.api.entity.memberCardModel.AlipayMemberCardModelRequest;
@@ -107,22 +108,6 @@ public class AliPayApi {
return response;
}
public static AlipayOpenApiGenericResponse uploadMerchantImage(Config config,String appAuthToken,String imageName,byte[] file) throws Exception {
Factory.setOptions(config);
//设置系统参数(OpenAPI中非biz_content里的参数)
Map<String, String> textParams = new HashMap<String, String>();
textParams.put("app_auth_token", appAuthToken);
//设置业务参数(OpenAPI中biz_content里的参数)
Map<String, Object> bizParams = new HashMap<String, Object>();
bizParams.put("image_type","jpg");
bizParams.put("image_name",imageName);
bizParams.put("image_content",file);
AlipayOpenApiGenericResponse response = Factory.Util.Generic().agent(appAuthToken)
.execute("alipay.offline.material.image.upload", textParams, bizParams);
return response;
}
/**
* https://opendocs.alipay.com/apis/api_5/alipay.marketing.card.template.create
* 会员卡模板创建
@@ -136,7 +121,8 @@ public class AliPayApi {

//设置业务参数(OpenAPI中biz_content里的参数)
Map<String, Object> bizParams = new HashMap<String, Object>();
bizParams.put("request_id", UUID.randomUUID().toString());
IdWorker idWorker = IdWorker.get();
bizParams.put("request_id", String.valueOf(idWorker.nextId()));
bizParams.put("card_type", modelRequest.getCard_type());
bizParams.put("biz_no_suffix_len",modelRequest.getBiz_no_suffix_len());
bizParams.put("write_off_type", modelRequest.getWrite_off_type());
@@ -189,6 +175,7 @@ public class AliPayApi {
/**
* https://opendocs.alipay.com/apis/api_5/alipay.marketing.card.activateurl.apply
* 获取会员卡领卡投放链接
* @param callback为子应用回调地址,非ISV应用。 必须跟子应用的后台回调弟子配置一致。
*/
public static AlipayOpenApiGenericResponse getMemberCardUrl(Config config,String appAuthToken,String templateId,String exparam,String callback) throws Exception {
Factory.setOptions(config);


Caricamento…
Annulla
Salva