Commit a107b998 authored by 黎博's avatar 黎博

新增电商购物流程方法

parent 03e9ccd0
package cn.qg.qaplatform.controller.zdata.yxm;
import cn.qg.qaplatform.config.SwitchDataSource;
import cn.qg.qaplatform.mapper.zdata.KdspMapper;
import cn.qg.qaplatform.utils.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@CrossOrigin
@RestController
@RequestMapping("/kdsp")
public class KdspController {
@Autowired
KdspMapper kdspMapper;
@GetMapping("/sku/list")
public JsonResult getSkuList(String namespace, Integer skuSource, Double salePriceLimit) {
SwitchDataSource.dataSourceSwitch(namespace, "kdsp");
return JsonResult.success(kdspMapper.getSelfSupportSkuNoList(skuSource, salePriceLimit));
}
}
......@@ -158,4 +158,4 @@ public class RSA {
System.out.println(publicKey);
}
}
}
\ No newline at end of file
package cn.qg.qaplatform.encrypt.yxm;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class DESUtils {
private static final String DES = "DES";
private static final String PADDING = "DES/ECB/PKCS5Padding";
private static byte[] encrypt(byte[] src, byte[] key) throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey secretKey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(PADDING);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
return cipher.doFinal(src);
}
private static byte[] decrypt(byte[] src, byte[] key) throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey secretKey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(PADDING);
cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);
return cipher.doFinal(src);
}
private static String byte2hex(byte[] b) {
String hs = "";
String temp = "";
for (int n = 0; n < b.length; n++) {
temp = (Integer.toHexString(b[n] & 0XFF));
if (temp.length() == 1) {
hs = hs + "0" + temp;
} else {
hs = hs + temp;
}
}
return hs.toUpperCase();
}
private static byte[] hex2byte(byte[] b) {
if ((b.length % 2) != 0) {
throw new IllegalArgumentException("length not even");
}
byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += 2) {
String item = new String(b, n, 2);
b2[n / 2] = (byte) Integer.parseInt(item, 16);
}
return b2;
}
/**
* 解密
* @param src
* @param key
* @return
*/
public static String decrypt(String src, String key) {
String decryptStr = "";
try {
byte[] decrypt = decrypt(hex2byte(src.getBytes()), key.getBytes());
decryptStr = new String(decrypt);
} catch (Exception e) {
e.printStackTrace();
}
return decryptStr;
}
/**
* 加密
* @param src
* @param key
* @return
*/
public static String encrypt(String src, String key) {
byte[] bytes = null;
String encryptStr = "";
try {
bytes = encrypt(src.getBytes(), key.getBytes());
} catch (Exception ex) {
ex.printStackTrace();
}
if (bytes != null) {
encryptStr = byte2hex(bytes);
}
return encryptStr;
}
// public static void main(String[] args) {
// String pwd = "123123123";
// String str = encrypt(pwd, "VCC_DFDO&WEK1E0I2S3");
// String str1 = decrypt(str, "VCC_DFDO&WEK1E0I2S3");
// System.out.println(str + "_" + str1);
// }
}
package cn.qg.qaplatform.mapper.zdata;
import java.util.List;
import java.util.Map;
public interface KdspMapper {
List<Map> getSelfSupportSkuNoList(Integer skuSource, Double salePriceLimit);
}
......@@ -2,11 +2,14 @@ package cn.qg.qaplatform.process;
import cn.qg.qaplatform.encrypt.kdsp.AESUtil;
import cn.qg.qaplatform.encrypt.kdsp.RSA;
import cn.qg.qaplatform.encrypt.yxm.DESUtils;
import cn.qg.qaplatform.utils.HttpClientUtils;
import cn.qg.qaplatform.utils.JsonResult;
import cn.qg.qaplatform.vo.EncryptRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jayway.jsonpath.JsonPath;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
......@@ -20,14 +23,57 @@ import java.util.*;
@Slf4j
public class Purchase {
/**
* kdsp 配置的私钥及 ios端对应的公钥
* 以_kdsp 结尾的存在于kdsp 端,以_ios结尾的存在于ios端
*/
static String private_key_ios_101_kdsp = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIZ/jCc0lcdcznjCybFPCGmI9oCnbvMzdCyta7X4Y4ygIOYAQ5vaNiPI2HAEh5X15jR/Cgr4x9YHLBuifKnJezWPmX+ZOYVFDwhlj7FkXS3TVyiuegykomdyg2LCpz06eyLAY+rMiz+ItqUGiemmqFZKfSD328VLaqCvRac5aWotAgMBAAECgYA8E1Kt3F4ee4S6Cf9/FFcklInOc3sqZEw6/IdE85q7oHaxZWLNhY1zNG4AsvVA9WILBsecmPzhy7hW66AVUqqWXA8jLIg/J3UyIRQo1sH9cX+3iERhNZluxXzxcX/UXrVQihyEFWZbehtpXFfPq1F7XzkTKy8qSodRLO79F8Tc/QJBAOF2vZ4Ah8GhiZP/KMYX7Q1fY5x/zTKmnNs1fJGDoRmgcF47Inzf2Ovjo+do/QdCf+Bzki6WG0AOpIHKksuw5r8CQQCYtttPfP8FKRxumcczNmkaKDWjrKElwRcGef5OuNBb7Crso9gUY+sL9/4kQHfmBfCS6KVbAA56RSdeSWFYZDYTAkA58pbRoTlDHw2JKC+Gmmem5Dlp478NoZz3Ckw16irht0aqMXCvv6i1GBDsTSObVhAf1BRiPNpMIHdPlI0eJR1pAkA7Oge6P0cEcFpHhrpb4UlHzLpo3QWuh8FvUJbRXxnn3KMVHcIqvkmlXauh0aLugfU4dKPUtCPpRbKr/ZeUWWEjAkAN5D5hH16RwrR6KN8W7t0gnlwOECPD8KbBQeWSja9r8C/yWMmr4RsWirBoDSYu4IG8jnrNcmYk8l1eAWmNyJWe";
static String public_key_ios_101_ios = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGf4wnNJXHXM54wsmxTwhpiPaAp27zM3QsrWu1+GOMoCDmAEOb2jYjyNhwBIeV9eY0fwoK+MfWBywbonypyXs1j5l/mTmFRQ8IZY+xZF0t01cornoMpKJncoNiwqc9OnsiwGPqzIs/iLalBonppqhWSn0g99vFS2qgr0WnOWlqLQIDAQAB";
/**
* ios端配置的私钥 及 kdsp 端对应的公钥
* 以_kdsp 结尾的存在于kdsp 端,以_ios结尾的存在于ios端
*/
static String private_key_ios_101_ios = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAINPX+KdtJJYHHgLrurdJOK4mAGeP/RST69ATX1Ir4YBasxmIL7XMRtgJHjwrUZv7v3c4M/RQSSwUXQP5NLE7ns4uZUm/JZoG1zgmq43IqyuwTLlitwYn221DWToehmKp9uC1WhK84EfkCDtinqLA7Rslh9FrlKkVHyus2eONPm7AgMBAAECgYB43wzthqwcdj0mh+Ko0Y5NoQxTmP9YAJjXQoLSC6F+4jkUFAKaiW3rvDF2nl1yVEETsEnFIuMrSZ6BDsxc8+htb458A/kMXdyNvE1eaSnYd5Y0kPX+IyaX6+fTHfGF7SvEs4gHKJFW+G1UQ0veDTeUlNGQVwj5eVnAj+UhWuKWSQJBAN0SFsi/jnc5moqH7F/SNUKNtSCOhRaz/RjEdTjHHWpCYmK8RP+cfHJp4Cb7P/jG0XEFFQSS5FIjQn6ujAfiSH8CQQCYDqFjWxhViONtjnuovqBIKGxppk5SA22leSa53Bads26HKpsIHsFQvr3fXMe2BEUsGFYN20mlouQP7BHn1NDFAkBpJ0KJKHyWf2LgA/lONsm4p3kBTGlHvENmNYRghm2abosn1c+oGgIj1fKV+Cqcpc1XyggOTeSmoTju0w2ublb3AkAOt4PJQPzW8nvIk7zGNUUAFuF/TDhSWcCX/mTQIkwSEVbGQEpm+8sMDJoF703pAPrM7MIPb0Tughh+rgOBo6hdAkEAz7Q1UnZSwr2+2sgKUnMxUVCPTt/ImyWXukU8Uys8hT3i8XFex7dTaAd8XG3Zc77amaXvIBqxo5I6jKbzJCZUwA==";
static String public_key_ios_101_kdsp = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDT1/inbSSWBx4C67q3STiuJgBnj/0Uk+vQE19SK+GAWrMZiC+1zEbYCR48K1Gb+793ODP0UEksFF0D+TSxO57OLmVJvyWaBtc4JquNyKsrsEy5YrcGJ9ttQ1k6HoZiqfbgtVoSvOBH5Ag7Yp6iwO0bJYfRa5SpFR8rrNnjjT5uwIDAQAB";
static String deviceId = "D69C97EC-AC7F-4C5D-AC14-50933E990795";
/**
* 模拟IOS 端加密
*/
public static EncryptRequest encryptOrderReq4IOS(String orderSubmitFormStr) throws Exception {
String randomKey = AESUtil.getRandomKey();
String orderSubmitReqAesEncrypt = AESUtil.encryptToBase64(orderSubmitFormStr, randomKey);
String encryptKeyRsaEncrypt = RSA.encryptToBase64(randomKey, public_key_ios_101_ios);
String appId = "101";
String nonce = UUID.randomUUID().toString();
String timeStamp = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
String content = nonce + appId + timeStamp + orderSubmitFormStr;
String sign = RSA.sign(content, private_key_ios_101_ios);
EncryptRequest request = new EncryptRequest();
request.setAppId(appId);
request.setNonce(nonce);
request.setBody(orderSubmitReqAesEncrypt);
request.setEncryptKey(encryptKeyRsaEncrypt);
request.setSign(sign);
request.setTimestamp(timeStamp);
return request;
}
/**
* 登录
* @param namespace 环境
* @param phoneNo 手机号
* @param deviceId 设备id
* @return
*/
public static String loginApp(String namespace, String phoneNo, String deviceId) {
public static String loginApp(String namespace, String phoneNo) {
String url = "http://sappbackend-" + namespace + ".liangkebang.net/auth/fast-login";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
......@@ -62,9 +108,16 @@ public class Purchase {
if (addressIdList.size() == 0) {
return addAddress(namespace, token);
}
log.info("获取地址信息:" + response);
return JsonPath.read(response, "$.data.addrReceiverList[0].addrReceiverId");
}
/**
* 新增地址
* @param namespace 环境
* @param token
* @return
*/
public static Integer addAddress(String namespace, String token) {
String url = "http://talos-" + namespace + ".liangkebang.net/api/kdsp/addr/receiver/add_edit";
Map<String, Object> headers = new HashMap<>();
......@@ -81,6 +134,7 @@ public class Purchase {
params.put("receiverPhoneNo", "18311069063");
params.put("addrDefault", "1");
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("新增地址:" + response);
return JsonPath.read(response, "$.data.addrReceiverId");
}
......@@ -90,10 +144,9 @@ public class Purchase {
* @param token 用户token
* @param skuNo sku no
* @param addrReceiverId 地址id
* @param deviceId 设备id
* @return
*/
public static Map<String, Object> confirmOrder(String namespace, String token, String skuNo, Integer addrReceiverId, String deviceId) {
public static Map<String, Object> confirmOrder(String namespace, String token, String skuNo, Integer addrReceiverId) {
String url = "http://talos-" + namespace + ".liangkebang.net/api/kdsp/shop-cart/order-confirm/page/v2";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
......@@ -116,6 +169,7 @@ public class Purchase {
params.put("addrReceiverId", addrReceiverId);
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("确认订单返回结果:" + response);
// 构造确认订单参数
Map<String, Object> result = new HashMap<>();
result.put("totalFreightFee", JsonPath.read(response, "$.data.calcFeeInfo.totalFreightFee").toString());
result.put("totalFee", JsonPath.read(response, "$.data.calcFeeInfo.totalPayFee").toString());
......@@ -138,33 +192,9 @@ public class Purchase {
* @throws Exception
*/
public static String submitOrder(String namespace, String token, Map<String, Object> params) throws Exception {
System.out.println("提交订单参数:" + JSON.toJSONString(params));
String requestStr = JSON.toJSONString(params);
log.info("确认订单加密前的数据:" + requestStr);
String url = "http://talos-" + namespace + ".liangkebang.net/api/kdsp/order-info/e/submit";
// String url = "http://192.168.28.41/api/kdsp/order-info/e/submit";
EncryptRequest encryptRequest = new EncryptRequest();
//加密过程
String appId = "101";
// String APP_PRIMARY_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIZ/jCc0lcdcznjCybFPCGmI9oCnbvMzdCyta7X4Y4ygIOYAQ5vaNiPI2HAEh5X15jR/Cgr4x9YHLBuifKnJezWPmX+ZOYVFDwhlj7FkXS3TVyiuegykomdyg2LCpz06eyLAY+rMiz+ItqUGiemmqFZKfSD328VLaqCvRac5aWotAgMBAAECgYA8E1Kt3F4ee4S6Cf9/FFcklInOc3sqZEw6/IdE85q7oHaxZWLNhY1zNG4AsvVA9WILBsecmPzhy7hW66AVUqqWXA8jLIg/J3UyIRQo1sH9cX+3iERhNZluxXzxcX/UXrVQihyEFWZbehtpXFfPq1F7XzkTKy8qSodRLO79F8Tc/QJBAOF2vZ4Ah8GhiZP/KMYX7Q1fY5x/zTKmnNs1fJGDoRmgcF47Inzf2Ovjo+do/QdCf+Bzki6WG0AOpIHKksuw5r8CQQCYtttPfP8FKRxumcczNmkaKDWjrKElwRcGef5OuNBb7Crso9gUY+sL9/4kQHfmBfCS6KVbAA56RSdeSWFYZDYTAkA58pbRoTlDHw2JKC+Gmmem5Dlp478NoZz3Ckw16irht0aqMXCvv6i1GBDsTSObVhAf1BRiPNpMIHdPlI0eJR1pAkA7Oge6P0cEcFpHhrpb4UlHzLpo3QWuh8FvUJbRXxnn3KMVHcIqvkmlXauh0aLugfU4dKPUtCPpRbKr/ZeUWWEjAkAN5D5hH16RwrR6KN8W7t0gnlwOECPD8KbBQeWSja9r8C/yWMmr4RsWirBoDSYu4IG8jnrNcmYk8l1eAWmNyJWe";
String APP_PRIMARY_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAINPX+KdtJJYHHgLrurdJOK4mAGeP/RST69ATX1Ir4YBasxmIL7XMRtgJHjwrUZv7v3c4M/RQSSwUXQP5NLE7ns4uZUm/JZoG1zgmq43IqyuwTLlitwYn221DWToehmKp9uC1WhK84EfkCDtinqLA7Rslh9FrlKkVHyus2eONPm7AgMBAAECgYB43wzthqwcdj0mh+Ko0Y5NoQxTmP9YAJjXQoLSC6F+4jkUFAKaiW3rvDF2nl1yVEETsEnFIuMrSZ6BDsxc8+htb458A/kMXdyNvE1eaSnYd5Y0kPX+IyaX6+fTHfGF7SvEs4gHKJFW+G1UQ0veDTeUlNGQVwj5eVnAj+UhWuKWSQJBAN0SFsi/jnc5moqH7F/SNUKNtSCOhRaz/RjEdTjHHWpCYmK8RP+cfHJp4Cb7P/jG0XEFFQSS5FIjQn6ujAfiSH8CQQCYDqFjWxhViONtjnuovqBIKGxppk5SA22leSa53Bads26HKpsIHsFQvr3fXMe2BEUsGFYN20mlouQP7BHn1NDFAkBpJ0KJKHyWf2LgA/lONsm4p3kBTGlHvENmNYRghm2abosn1c+oGgIj1fKV+Cqcpc1XyggOTeSmoTju0w2ublb3AkAOt4PJQPzW8nvIk7zGNUUAFuF/TDhSWcCX/mTQIkwSEVbGQEpm+8sMDJoF703pAPrM7MIPb0Tughh+rgOBo6hdAkEAz7Q1UnZSwr2+2sgKUnMxUVCPTt/ImyWXukU8Uys8hT3i8XFex7dTaAd8XG3Zc77amaXvIBqxo5I6jKbzJCZUwA==";
String SERVER_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGf4wnNJXHXM54wsmxTwhpiPaAp27zM3QsrWu1+GOMoCDmAEOb2jYjyNhwBIeV9eY0fwoK+MfWBywbonypyXs1j5l/mTmFRQ8IZY+xZF0t01cornoMpKJncoNiwqc9OnsiwGPqzIs/iLalBonppqhWSn0g99vFS2qgr0WnOWlqLQIDAQAB";
String nonce = UUID.randomUUID().toString();
String timeStamp = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
//生成AES key
String randomKey = AESUtil.getRandomKey();
//使用AES key对业务数据进行加密
String encodeBody = AESUtil.encryptToBase64(JSON.toJSONString(params), randomKey);
String body = appId + nonce + timeStamp + encodeBody;
//使用私钥进行签名
String sign = RSA.sign(body, APP_PRIMARY_KEY);
//使用服务端公钥对AES key进行加密
String encryptKey = RSA.encryptToBase64(randomKey, SERVER_PUBLIC_KEY);
encryptRequest.setAppId(appId);
encryptRequest.setEncryptKey(encryptKey);
encryptRequest.setBody(encodeBody);
encryptRequest.setSign(sign);
encryptRequest.setNonce(nonce);
encryptRequest.setTimestamp(timeStamp);
Map<String, Object> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
......@@ -175,18 +205,149 @@ public class Purchase {
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(encryptRequest), headers);
log.info("加密结果: " + JSON.toJSONString(encryptRequest));
EncryptRequest request = encryptOrderReq4IOS(requestStr);
log.info("确认订单加密后的数据:" + JSON.toJSONString(request));
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(request), headers);
log.info("提交订单返回结果:" + response);
return null;
return JsonPath.read(response, "$.data.orderNo");
}
public static String queryPayStatus(String namespace, String token, String orderNo) {
String url = "http://talos-" + namespace + ".liangkebang.net/open/checkout/pay_status/query";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
params.put("orderNo", orderNo);
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("支付状态返回:" + response);
return JsonPath.read(response, "$.data.payStatus");
}
public static void openCheckout(String namespace, String token, String orderNo) {
String url = "http://talos-" + namespace + ".liangkebang.net/open/checkout";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
params.put("orderNo", orderNo);
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("/open/checkOut返回响应:" + response);
}
public static void payReissueContract(String namespace, String token) {
String url = "http://talos-" + namespace + ".liangkebang.net/open/checkout/payReissueContract";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
List<String> templateIdList = new ArrayList<>();
templateIdList.add("412");
templateIdList.add("494");
templateIdList.add("495");
params.put("templateIdList", templateIdList);
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("合同签署返回结果:" + response);
}
public static String checkoutPrePay(String namespace, String token, String orderNo) {
String url = "http://talos-" +namespace + ".liangkebang.net/open/checkout/prepay";
Map<String, Object> headers = new HashMap<>();
Map<String, Object> params = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
params.put("orderNo", orderNo);
params.put("payMethod", 1);
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("预支付返回结果:" + response);
return JsonPath.read(response, "$.data.flowOrderNo");
}
public static String vccAccountSalt(String namespace, String token) throws URISyntaxException {
String url = "http://talos-" + namespace + ".liangkebang.net/vcc/account/salt";
Map<String, Object> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
JSONObject response = HttpClientUtils.doGetReturnJson(url, null, headers);
log.info("vcc加盐返回结果:" + response);
return JsonPath.read(response, "$.data.payPwdSalt");
}
public static Integer checkoutPay(String namespace, String token, String orderNo, String flowOrderNo, String payPwdSalt) {
String url = "http://talos-" + namespace + ".liangkebang.net/open/checkout/pay";
Map<String, Object> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("x-user-terminal", "IOS");
headers.put("x-auth-token", token);
headers.put("scDeviceId", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
headers.put("vccChannel", 214);
headers.put("version", "7.9.00");
headers.put("appName", "xinyongqianbao");
Map<String, Object> params = new HashMap<>();
params.put("orderNo", orderNo);
params.put("flowOrderNo", flowOrderNo);
params.put("password", DESUtils.encrypt("123456", payPwdSalt));
JSONObject response = HttpClientUtils.doPostJson(url, JSON.toJSONString(params), headers);
log.info("支付返回结果:" + response);
return JsonPath.read(response, "$.data.creditPayInfo.creditPayStatus");
}
public static void main(String[] args) throws Exception {
String namespace = "vcc2";
String token = loginApp(namespace, "18300002000", "D69C97EC-AC7F-4C5D-AC14-50933E990795");
String namespace = "test1";
String token = loginApp(namespace, "18300002000");
Integer addressId = getAddressList(namespace, token);
Map<String, Object> submitParams = confirmOrder(namespace, token, "26423184333313", addressId, "D69C97EC-AC7F-4C5D-AC14-50933E990795");
submitOrder(namespace, token, submitParams);
Map<String, Object> submitParams = confirmOrder(namespace, token, "26423184333313", addressId);
String orderNo = submitOrder(namespace, token, submitParams);
String payStatus = queryPayStatus(namespace, token, orderNo);
openCheckout(namespace, token, orderNo);
payReissueContract(namespace, token);
String flowOrderNo = checkoutPrePay(namespace, token, orderNo);
String payPwdSalt = vccAccountSalt(namespace, token);
Integer creditPayStatus = checkoutPay(namespace, token, orderNo, flowOrderNo, payPwdSalt);
}
}
package cn.qg.qaplatform.service.zdata.yxm;
public interface PurchaseService {
boolean quotaPurchase(String namespace, String phoneNo);
}
package cn.qg.qaplatform.service.zdata.yxm.impl;
import cn.qg.qaplatform.service.zdata.yxm.PurchaseService;
import org.springframework.stereotype.Service;
/**
* @author libo
* 2021-08-04
*/
@Service
public class PurchaseServiceImpl implements PurchaseService {
/**
* 电商额度购买全流程
* @param namespace 环境
* @param phoneNo 手机号
* @return
*/
@Override
public boolean quotaPurchase(String namespace, String phoneNo) {
return false;
}
}
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.qg.qaplatform.mapper.zdata.KdspMapper">
<select id="getSelfSupportSkuNoList" resultType="java.util.Map">
SELECT
*
FROM t_sku_info
<where>
stock > 0
<if test="skuSource != null and skuSource != ''">
AND `sku_source` = #{skuSource}
</if>
<if test="salePriceLimit != null and salePriceLimit != ''">
AND `sale_price` &lt;= #{salePriceLimit}
</if>
</where>
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment