|
|
@@ -1,9 +1,17 @@ |
|
|
package com.iformall.service.pay.alipay; |
|
|
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.io.UnsupportedEncodingException; |
|
|
import java.net.URLEncoder; |
|
|
import java.net.URLEncoder; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
@@ -28,10 +36,16 @@ import lombok.extern.slf4j.Slf4j; |
|
|
@Service |
|
|
@Service |
|
|
public class AliPayUtil { |
|
|
public class AliPayUtil { |
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
AliPayConfig payConfig; |
|
|
|
|
|
|
|
|
//@Autowired |
|
|
|
|
|
//AliPayConfig payConfig; |
|
|
|
|
|
|
|
|
private Config getConfig() { |
|
|
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(), |
|
|
return AliPayApi.getOptions(payConfig.getAppId(), payConfig.getAppPrivateKey(), payConfig.getAppPublicKeyCertPath(), |
|
|
payConfig.getAlipayCertPath(), payConfig.getAlipayRootCertPath()); |
|
|
payConfig.getAlipayCertPath(), payConfig.getAlipayRootCertPath()); |
|
|
} |
|
|
} |
|
|
@@ -78,13 +92,32 @@ public class AliPayUtil { |
|
|
|
|
|
|
|
|
//门店照片上传 |
|
|
//门店照片上传 |
|
|
public String merchantImageUpload(String appAuthToken,String imageName,byte[] file) { |
|
|
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 { |
|
|
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"); |
|
|
JSONObject result = getGenericResponse(response.getHttpBody(),"alipay_offline_material_image_upload_response"); |
|
|
|
|
|
if (f.exists()) { |
|
|
|
|
|
f.delete(); |
|
|
|
|
|
} |
|
|
if (null != result) { |
|
|
if (null != result) { |
|
|
return result.getString("image_id"); |
|
|
return result.getString("image_id"); |
|
|
} |
|
|
} |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
|
|
|
if (f.exists()) { |
|
|
|
|
|
f.delete(); |
|
|
|
|
|
} |
|
|
log.error("alipay merchantImageUpload error. ",e); |
|
|
log.error("alipay merchantImageUpload error. ",e); |
|
|
} |
|
|
} |
|
|
return null; |
|
|
return null; |
|
|
@@ -116,6 +149,7 @@ public class AliPayUtil { |
|
|
rule0.setRule_name("ASSIGN_FROM_REQUEST"); |
|
|
rule0.setRule_name("ASSIGN_FROM_REQUEST"); |
|
|
rule0.setRule_value("Balance"); |
|
|
rule0.setRule_value("Balance"); |
|
|
ruleList.add(rule0); |
|
|
ruleList.add(rule0); |
|
|
|
|
|
request.setField_rule_list(ruleList); |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
AlipayOpenApiGenericResponse response = AliPayApi.createMemberCardModel(getConfig(),appAuthToken, request); |
|
|
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 { |
|
|
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"); |
|
|
JSONObject result = getGenericResponse(response.getHttpBody(),"alipay_marketing_card_activateurl_apply_response"); |
|
|
if (null != result) { |
|
|
if (null != result) { |
|
|
return result.getString("apply_card_url"); |
|
|
return result.getString("apply_card_url"); |
|
|
@@ -161,7 +195,7 @@ public class AliPayUtil { |
|
|
//商圈智能积分授权(算法授权)URL |
|
|
//商圈智能积分授权(算法授权)URL |
|
|
public String getH5SmartDistrictMallVipPointsUrl(String appId,String callback,String param) { |
|
|
public String getH5SmartDistrictMallVipPointsUrl(String appId,String callback,String param) { |
|
|
try { |
|
|
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) { |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
log.error("alipay getH5MallVipPointsUrl error. ",e); |
|
|
log.error("alipay getH5MallVipPointsUrl error. ",e); |
|
|
} |
|
|
} |
|
|
@@ -182,17 +216,40 @@ public class AliPayUtil { |
|
|
return false; |
|
|
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) { |
|
|
public static void main(String[] args) { |
|
|
|
|
|
AliPayUtil util = new AliPayUtil(); |
|
|
// String token = getAppAuthToken("Pfbe94a5103a0414db99ce865204ee63"); |
|
|
// String token = getAppAuthToken("Pfbe94a5103a0414db99ce865204ee63"); |
|
|
// System.out.println(token); |
|
|
// 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")); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |