"拉卡拉进件支付代码"
This commit is contained in:
parent
20961894dc
commit
ecbdd3f0b1
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<assembly
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd
|
||||||
|
">
|
||||||
|
<id>release</id>
|
||||||
|
<formats>
|
||||||
|
<format>zip</format>
|
||||||
|
</formats>
|
||||||
|
<fileSets>
|
||||||
|
<fileSet>
|
||||||
|
<directory>src/assembly</directory>
|
||||||
|
<outputDirectory>.</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*.sh</include>
|
||||||
|
<include>*.bat</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<outputDirectory>.</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*.yml</include>
|
||||||
|
<!--<include>application.yml</include>-->
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
</fileSets>
|
||||||
|
|
||||||
|
<dependencySets>
|
||||||
|
<!-- 将scope为runtime的依赖包打包到lib目录下。 -->
|
||||||
|
<dependencySet>
|
||||||
|
<useProjectArtifact>true</useProjectArtifact>
|
||||||
|
<outputDirectory>libs</outputDirectory>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependencySet>
|
||||||
|
</dependencySets>
|
||||||
|
|
||||||
|
</assembly>
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@echo off
|
||||||
|
setLocal enableDelayedExpansion
|
||||||
|
set cp=.
|
||||||
|
FOR %%i IN ("%~dp0libs\*.jar") DO set cp=!cp!;%%~fsi
|
||||||
|
start "bidservice" java -cp %cp% Shell
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash --login
|
||||||
|
shopt -s expand_aliases
|
||||||
|
|
||||||
|
baseDir=$(cd "$(dirname "$0")"; pwd)
|
||||||
|
cp=.
|
||||||
|
for file in $baseDir/libs/*.jar
|
||||||
|
do
|
||||||
|
cp=$cp:$file
|
||||||
|
done
|
||||||
|
java -cp $cp com.goodcoupons.GoodCoupons >>stdout.out 2>&1 &
|
||||||
|
|
@ -25,6 +25,7 @@ import cn.pluss.platform.ryx.pay.RyxPayService;
|
||||||
import cn.pluss.platform.sxf.pay.SxfPayService;
|
import cn.pluss.platform.sxf.pay.SxfPayService;
|
||||||
import cn.pluss.platform.user.impl.GeneralPushUtil;
|
import cn.pluss.platform.user.impl.GeneralPushUtil;
|
||||||
import cn.pluss.platform.userApp.UserAppService;
|
import cn.pluss.platform.userApp.UserAppService;
|
||||||
|
import cn.pluss.platform.util.IpUtils;
|
||||||
import cn.pluss.platform.util.StringUtil;
|
import cn.pluss.platform.util.StringUtil;
|
||||||
import cn.pluss.platform.util.TokenUtil;
|
import cn.pluss.platform.util.TokenUtil;
|
||||||
import cn.pluss.platform.vo.MemberScanVO;
|
import cn.pluss.platform.vo.MemberScanVO;
|
||||||
|
|
@ -46,6 +47,7 @@ import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
@ -417,7 +419,7 @@ public class MerchantOrderController {
|
||||||
@ApiOperation(tags = {"页面-收款"}, value = "扫码支付", notes = "扫码支付", httpMethod = "POST")
|
@ApiOperation(tags = {"页面-收款"}, value = "扫码支付", notes = "扫码支付", httpMethod = "POST")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "MerchantOrderVo", value = "扫码支付需要传递的参数实例", paramType = "body", dataType = "MerchantOrderVo", required = true)})
|
@ApiImplicitParam(name = "MerchantOrderVo", value = "扫码支付需要传递的参数实例", paramType = "body", dataType = "MerchantOrderVo", required = true)})
|
||||||
public Result<Object> scanPay(@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
public Result<Object> scanPay(HttpServletRequest request, @RequestBody MerChantOrderDTO merchantOrderDTO) {
|
||||||
UserApp tokenUa = userAppService.queryUserAppByToken();
|
UserApp tokenUa = userAppService.queryUserAppByToken();
|
||||||
merchantOrderDTO.setMerchantCode(tokenUa.getMerchantCode());
|
merchantOrderDTO.setMerchantCode(tokenUa.getMerchantCode());
|
||||||
//校验金额
|
//校验金额
|
||||||
|
|
@ -425,7 +427,7 @@ public class MerchantOrderController {
|
||||||
MsgException.throwException("金额异常");
|
MsgException.throwException("金额异常");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return merchantOrderService.toActivePay(merchantOrderDTO);
|
return merchantOrderService.toActivePay(merchantOrderDTO, IpUtils.getIpAddr(request));
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return ResultGenerator.genFailResult(e.getMessage());
|
return ResultGenerator.genFailResult(e.getMessage());
|
||||||
|
|
@ -437,7 +439,7 @@ public class MerchantOrderController {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/posScanPay")
|
@PostMapping("/posScanPay")
|
||||||
public Result<Object> posScanPay(@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
public Result<Object> posScanPay(HttpServletRequest request,@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
||||||
//首先验签
|
//首先验签
|
||||||
verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken());
|
verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken());
|
||||||
//通过后查询商户信息
|
//通过后查询商户信息
|
||||||
|
|
@ -451,7 +453,7 @@ public class MerchantOrderController {
|
||||||
}
|
}
|
||||||
//进行支付操作
|
//进行支付操作
|
||||||
try {
|
try {
|
||||||
Result<Object> activePay = merchantOrderService.toActivePay(merchantOrderDTO);
|
Result<Object> activePay = merchantOrderService.toActivePay(merchantOrderDTO,IpUtils.getIpAddr(request));
|
||||||
String result = activePay.toString();
|
String result = activePay.toString();
|
||||||
JSONObject jsonData = JSONObject.parseObject(result);
|
JSONObject jsonData = JSONObject.parseObject(result);
|
||||||
Object orderNumber = jsonData.getJSONObject("data").get("orderNumber");
|
Object orderNumber = jsonData.getJSONObject("data").get("orderNumber");
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package cn.pluss.platform.controller.merchant.callback;
|
||||||
import cn.hutool.crypto.symmetric.DES;
|
import cn.hutool.crypto.symmetric.DES;
|
||||||
import cn.pluss.platform.channel.MerchantAuditService;
|
import cn.pluss.platform.channel.MerchantAuditService;
|
||||||
import cn.pluss.platform.channel.ys.YSAuditServiceV3;
|
import cn.pluss.platform.channel.ys.YSAuditServiceV3;
|
||||||
|
import cn.pluss.platform.entity.MerchantChannelStatus;
|
||||||
import cn.pluss.platform.entity.RyxAccessModel;
|
import cn.pluss.platform.entity.RyxAccessModel;
|
||||||
import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl;
|
import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl;
|
||||||
import cn.pluss.platform.ryx.RyxService;
|
import cn.pluss.platform.ryx.RyxService;
|
||||||
|
|
@ -151,4 +152,12 @@ public class AuditCallbackController {
|
||||||
public String lklCallBack(@RequestBody Map<String, Object> map) throws Exception {
|
public String lklCallBack(@RequestBody Map<String, Object> map) throws Exception {
|
||||||
return lklMerAuditService.merchantAuditCallback(map);
|
return lklMerAuditService.merchantAuditCallback(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("queryMerchantChannelStatus")
|
||||||
|
public MerchantChannelStatus queryMerchantChannelStatus(String customerNo, String externalCustomerNo ) throws Exception {
|
||||||
|
return lklMerAuditService.queryMerchantChannelStatus(customerNo, externalCustomerNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -611,12 +611,23 @@ public class DateUtils {
|
||||||
return Math.abs(hours);
|
return Math.abs(hours);
|
||||||
}
|
}
|
||||||
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");
|
private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
|
private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
|
|
||||||
public static String getSdfTimes() {
|
public static String getSdfTimes() {
|
||||||
return sdfTimes.format(new Date());
|
return sdfTimes.format(new Date());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Date convertDate(String date) {
|
||||||
|
try {
|
||||||
|
return sdf.parse(date);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws ParseException {
|
public static void main(String[] args) throws ParseException {
|
||||||
|
|
||||||
|
System.out.println(convertDate("20230603163342"));
|
||||||
//List<String> last6Months = getLast6Months();
|
//List<String> last6Months = getLast6Months();
|
||||||
// List<String> last6Months = new ArrayList<>();
|
// List<String> last6Months = new ArrayList<>();
|
||||||
// last6Months.add("2019-11");
|
// last6Months.add("2019-11");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
package cn.pluss.platform.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.Snowflake;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Exrickx
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class SnowFlakeUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 派号器workid:0~31
|
||||||
|
* 机房datacenterid:0~31
|
||||||
|
*/
|
||||||
|
private static Snowflake snowflake = IdUtil.createSnowflake(1, 1);
|
||||||
|
|
||||||
|
public static Long nextId() {
|
||||||
|
return snowflake.nextId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -162,7 +162,7 @@ express:
|
||||||
USERID: 1778214
|
USERID: 1778214
|
||||||
APIKEY: 63e75d64-e8fd-4dcc-93fa-17dc710cdf04
|
APIKEY: 63e75d64-e8fd-4dcc-93fa-17dc710cdf04
|
||||||
lkl:
|
lkl:
|
||||||
privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAK870Q31bo4bvLvZVRZmKWLibwOUP5Myh+AiX3o49f19EFLshyDegirGZTbTEVuKzAnZwJTojWBsTsYMzXgKKEtB3brFblP/xOYcJpUUXLVv0BYc0ruxbdo13YorU8jeHiBLfw0PyOq92v/xhlII0XYo6g57cXXsWpV5wF2r7VVlAgMBAAECgYAFDkSWUq30DgB7KlE7pQqYTpslrx8fHUFGqgc3ggbgNOhbKXWD8ReFVMBdKBLN9tUIiw6fh+QdqOekQYCjcCZAarcZ5c3VyKqmM6NJe4KZ7jQxtIhwa2UDYPW7yRyqu8CqktNDTCd2R/RBVcwd4wvhjO9ZJZF8s3qbuncicUzjgQJBANT8TCGQLU3UOlfLhI5epnuspSCh9JgO3TR3xtYg1Km29PJ8Wy6ZtCznf+odr/RM3MKFEd84/Mz/wIic44bo50ECQQDSn69ej8smC8/azzaBVSrZCyaxY/vyQJ+5sXsCo94aFU3w5SnHW4Rb8Ok+EVOlCHqCxbwElpPvLof8PI8vGqklAkAdtqEMYafgXsZQ70Sr9Ap34Isc9VtBR3mW00r7HpNspeigV7cE1k6roRRYXhHpHDwEKzpmEPY7x0ZeCL05Wg7BAkBoFSVSc3iOapPiqzdiHjY4X3xVePVON4U2/G+vVE8zUIfdnUFSFPWJgbmhRGqzSUdRTGmnUsn0DmiAy2RugJxJAkBGCmZzkXmCA844EjwdDllJFY0hhjNguqUJXnm90v245Fyx86ox0rFOMS0WoZY7/8r/AQx2VUsrAKDyxajtUbR2
|
privateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIcHuPuAbeKgueevtuy4RdMCH/xhLFKniVAhgZb2BfQiSDP0moBF2DiISdTq2A2KvEDol2DQBaAslDFAERkyTDIrZl9iB6xiGUmS/pZULy/k6Q6uED01JDeJLomxh6Cxk7QYlJO0tBpM4Xxahs9h7k0j55ZTV9HPZnLGVaUqyEF5AgMBAAECgYAmugRHvXHGiapH1JF2GvOLrRRXYddAbWRoYvOzxCO4/QwQOpsFJwL4U745HpGQcLXFN/ASiBbU9XQbG/DLdS182qAjvdZVJOA2e3H3LhpY3D8ec3webO+0nGk6e4oWGG1efJLM88Nb0FtQiQ0E6z17Paw5AGvxMVBPbL5SoQfq8QJBANHQmvFkAWlBL2XTLPUXaj+NAJzolE90ctAquxfDcTtfEXv0JitC5bwTg87uNl7n4PUTmtMDIkse+D5vQ2CIF78CQQCkwOIMzedKtWhOEbdGxiz1Y/jkuA8yF7HREeC7X2Av0z2Gi3yltoJd0s6zLn+6zowQp1O/5U6ifrYCIObWlTTHAkA0WOZ/eWL8vr2zmvdpgtkIWAaiH0j5deU7WJ3rNODoXjS/h0+KlZs5zGijVT2Nei7fFnAXW33P3j8zXJEj4XCDAkAcrG0rKVLNz9C9dZveN3NvqdyRge8zGqiZ6HCia7ED4dHdbr1c4ezCg4Px72/PhU8fPt/2j+Qlp8PpjuxeAE3VAkBqUiVV9XZptFEXa/77rgHP3SWrC3TcrrS5jtNTGfA4VISV95YXnZzWjYfpgs2WoxdAXjsrM5TB7L3V4um4o6Dp
|
||||||
appid: OP00000462 #接入方唯一编号
|
appid: OP00000462 #接入方唯一编号
|
||||||
mchSerialNo: 00dfba8194c41b84cf #证书序列号
|
mchSerialNo: 00dfba8194c41b84cf #证书序列号
|
||||||
merchantNo: 8221210594300JY #商户号
|
merchantNo: 8221210594300JY #商户号
|
||||||
|
|
@ -173,7 +173,7 @@ lkl:
|
||||||
certificatePath: D:\\project\\chaozhanggui\\pluss-common-bundle\\src\\main\\resources\\lakalaConf\\OP00000003_cert.cer
|
certificatePath: D:\\project\\chaozhanggui\\pluss-common-bundle\\src\\main\\resources\\lakalaConf\\OP00000003_cert.cer
|
||||||
returncatePath: D:\\project\\chaozhanggui\\pluss-common-bundle\\src\\main\\resources\\lakalaConf\\lkl-apigw-v2.cer
|
returncatePath: D:\\project\\chaozhanggui\\pluss-common-bundle\\src\\main\\resources\\lakalaConf\\lkl-apigw-v2.cer
|
||||||
callBackUrl: https://p40312246f.goho.co/api/auditCallback/tradeCallBack
|
callBackUrl: https://p40312246f.goho.co/api/auditCallback/tradeCallBack
|
||||||
pubKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvO9EN9W6OG7y72VUWZili4m8DlD+TMofgIl96OPX9fRBS7Icg3oIqxmU20xFbiswJ2cCU6I1gbE7GDM14CihLQd26xW5T/8TmHCaVFFy1b9AWHNK7sW3aNd2KK1PI3h4gS38ND8jqvdr/8YZSCNF2KOoOe3F17FqVecBdq+1VZQIDAQAB
|
pubKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCHB7j7gG3ioLnnr7bsuEXTAh/8YSxSp4lQIYGW9gX0Ikgz9JqARdg4iEnU6tgNirxA6Jdg0AWgLJQxQBEZMkwyK2ZfYgesYhlJkv6WVC8v5OkOrhA9NSQ3iS6JsYegsZO0GJSTtLQaTOF8WobPYe5NI+eWU1fRz2ZyxlWlKshBeQIDAQAB
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ public class AliScanCodeDeviceServiceImpl implements AliDeviceService {
|
||||||
dto.setDeviceNo(entity.getCode());
|
dto.setDeviceNo(entity.getCode());
|
||||||
dto.setRemark(entity.getRemark());
|
dto.setRemark(entity.getRemark());
|
||||||
try {
|
try {
|
||||||
Result<Object> mapResult = merchantOrderService.toActivePay(dto);
|
Result<Object> mapResult = merchantOrderService.toActivePay(dto,null);
|
||||||
Object data = mapResult.getData();
|
Object data = mapResult.getData();
|
||||||
if (ResultCode.TRANSUNKNOW.code() == mapResult.getCode()) {
|
if (ResultCode.TRANSUNKNOW.code() == mapResult.getCode()) {
|
||||||
return RespDeviceEntity.await(mapResult.getMessage(),((Map)data).get("orderNumber"));
|
return RespDeviceEntity.await(mapResult.getMessage(),((Map)data).get("orderNumber"));
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,14 @@ public class LakalaConfig {
|
||||||
private String apiUrl;
|
private String apiUrl;
|
||||||
private String privateKeyPath;
|
private String privateKeyPath;
|
||||||
private String certificatePath;
|
private String certificatePath;
|
||||||
|
private String returncatePath;
|
||||||
|
private String callBackUrl;
|
||||||
private String pubKey;
|
private String pubKey;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public void init(){
|
public void init(){
|
||||||
System.out.println("qqqqqqq");
|
System.out.println("qqqqqqq");
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.pluss.platform.klk.controller;
|
package cn.pluss.platform.klk.controller;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl;
|
import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl;
|
||||||
import cn.pluss.platform.klk.vo.TuoKeVo;
|
import cn.pluss.platform.klk.vo.TuoKeVo;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
@ -42,4 +43,10 @@ public class LaKaLaController {
|
||||||
public void callBackToke(@RequestBody Map<String,Object> map){
|
public void callBackToke(@RequestBody Map<String,Object> map){
|
||||||
laKalaInterface.tuoKeCallBack(map);
|
laKalaInterface.tuoKeCallBack(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping("/tradeCallBack")
|
||||||
|
public void tradeCallBack(@RequestBody Map<String,Object> map){
|
||||||
|
System.out.println("拉卡拉交易回调:"+ JSONUtil.toJsonStr(map));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,25 @@
|
||||||
package cn.pluss.platform.klk.service;
|
package cn.pluss.platform.klk.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.pluss.platform.api.ResultCode;
|
||||||
import cn.pluss.platform.dto.MemberScanPayDTO;
|
import cn.pluss.platform.dto.MemberScanPayDTO;
|
||||||
import cn.pluss.platform.dto.MerChantOrderDTO;
|
import cn.pluss.platform.dto.MerChantOrderDTO;
|
||||||
import cn.pluss.platform.entity.*;
|
import cn.pluss.platform.entity.*;
|
||||||
|
import cn.pluss.platform.exception.MsgException;
|
||||||
|
import cn.pluss.platform.klk.LakalaConfig;
|
||||||
|
import cn.pluss.platform.mapper.MerchantBackLklMapper;
|
||||||
import cn.pluss.platform.pay.PayService;
|
import cn.pluss.platform.pay.PayService;
|
||||||
|
import cn.pluss.platform.util.DateUtils;
|
||||||
|
import cn.pluss.platform.util.SnowFlakeUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@Service("lkLPayService")
|
@Service("lkLPayService")
|
||||||
|
|
@ -16,6 +27,16 @@ import java.util.Map;
|
||||||
public class LkLPayServiceImpl implements PayService {
|
public class LkLPayServiceImpl implements PayService {
|
||||||
@Resource
|
@Resource
|
||||||
LklPayService lklPayService;
|
LklPayService lklPayService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
MerchantBackLklMapper merchantBackLklMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
LakalaConfig lakalaConfig;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject tradePay(MerchantOrder order, MerchantChannelStatus channel, MerchantBaseInfo merchant) {
|
public JSONObject tradePay(MerchantOrder order, MerchantChannelStatus channel, MerchantBaseInfo merchant) {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -23,7 +44,93 @@ public class LkLPayServiceImpl implements PayService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject tradePay(MerChantOrderDTO merchantOrderDTO, MerchantOrder order) {
|
public JSONObject tradePay(MerChantOrderDTO merchantOrderDTO, MerchantOrder order) {
|
||||||
return null;
|
|
||||||
|
|
||||||
|
QueryWrapper<MerchantBackLkl> queryWrapper=new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("merchant_code",merchantOrderDTO.getMerchantCode());
|
||||||
|
queryWrapper.eq("channel","5");
|
||||||
|
queryWrapper.eq("user_no","20000101");
|
||||||
|
|
||||||
|
MerchantBackLkl merchantBackLkl=merchantBackLklMapper.selectOne(queryWrapper);
|
||||||
|
MsgException.checkNull(merchantBackLkl,"进件信息不存在");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
JSONObject obj = new JSONObject(6);
|
||||||
|
|
||||||
|
String req_time= DateUtils.getSdfTimes();
|
||||||
|
Long order_amt = new BigDecimal(order.getConsumeFee()).multiply(new BigDecimal(100)).longValue();
|
||||||
|
String out_trade_no= "LKL".concat(SnowFlakeUtil.nextId().toString());
|
||||||
|
|
||||||
|
|
||||||
|
// String body="{\n" +
|
||||||
|
// "\t\"req_data\": {\n" +
|
||||||
|
// "\t\t\"out_trade_no\": \""+out_trade_no+"\",\n" +
|
||||||
|
// "\t\t\"merchant_no\": \""+lakalaConfig.getMerchantNo()+"\",\n" +
|
||||||
|
// "\t\t\"term_no\": \""+lakalaConfig.getTermNo()+"\",\n" +
|
||||||
|
// "\t\t\"auth_code\": \""+merchantOrderDTO.getAuthCode()+"\",\n" +
|
||||||
|
// "\t\t\"total_amount\": \""+order_amt+"\",\n" +
|
||||||
|
// "\t\t\"notify_url\": \""+lakalaConfig.getCallBackUrl()+"\",\n" +
|
||||||
|
// "\t\t\"location_info\": \"{\"request_ip\":\""+order.getIp()+"\"}\"\n" +
|
||||||
|
// "\t},\n" +
|
||||||
|
// "\t\"version\": \"3.0\",\n" +
|
||||||
|
// "\t\"req_time\": \""+req_time+"\"\n" +
|
||||||
|
// "}";
|
||||||
|
|
||||||
|
|
||||||
|
String body="{\n" +
|
||||||
|
"\t\"req_data\": {\n" +
|
||||||
|
"\t\t\"merchant_no\": \""+lakalaConfig.getMerchantNo()+"\",\n" +
|
||||||
|
"\t\t\"term_no\": \""+lakalaConfig.getTermNo()+"\",\n" +
|
||||||
|
"\t\t\"out_trade_no\": \""+out_trade_no+"\",\n" +
|
||||||
|
"\t\t\"total_amount\": \""+order_amt+"\",\n" +
|
||||||
|
"\t\t\"subject\": \"测试\",\n" +
|
||||||
|
"\t\t\"acc_busi_fields\": {},\n" +
|
||||||
|
"\t\t\"notify_url\": \""+lakalaConfig.getCallBackUrl()+"\",\n" +
|
||||||
|
"\t\t\"location_info\": {\n" +
|
||||||
|
"\t\t\t\"request_ip\": \""+order.getIp()+"\"\n" +
|
||||||
|
"\t\t},\n" +
|
||||||
|
"\t\t\"auth_code\": \""+merchantOrderDTO.getAuthCode()+"\"\n" +
|
||||||
|
"\t},\n" +
|
||||||
|
"\t\"out_org_code\": \""+lakalaConfig.getAppid()+"\",\n" +
|
||||||
|
"\t\"version\": \"3.0\",\n" +
|
||||||
|
"\t\"req_time\": "+req_time+"\n" +
|
||||||
|
"}";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
String response=lklPayService.req(body,"api/v3/labs/trans/micropay");
|
||||||
|
if(ObjectUtil.isNotEmpty(response)){
|
||||||
|
JSONObject object= JSON.parseObject(response);
|
||||||
|
if(object.containsKey("code")&&"BBS10000".equals(object.get("code"))){
|
||||||
|
obj.put("code",ResultCode.TRANSUNKNOW.code());
|
||||||
|
obj.put("msg","用户支付中");
|
||||||
|
obj.put("channelOrderNo",object.getJSONObject("resp_data").get("trade_no"));
|
||||||
|
obj.put("transNo",object.getJSONObject("resp_data").get("log_no"));
|
||||||
|
obj.put("payStatus","1");
|
||||||
|
return obj;
|
||||||
|
}else if(object.containsKey("code")&&"BBS00000".equals(object.get("code"))){
|
||||||
|
obj.put("code",ResultCode.SUCCESS.code());
|
||||||
|
obj.put("msg","成功");
|
||||||
|
obj.put("channelOrderNo",object.getJSONObject("resp_data").get("trade_no"));
|
||||||
|
obj.put("transNo",object.getJSONObject("resp_data").get("log_no"));
|
||||||
|
obj.put("payStatus","1");
|
||||||
|
obj.put("payTime",DateUtils.convertDate(object.getJSONObject("resp_data").getString("trade_time")));
|
||||||
|
return obj;
|
||||||
|
}else {
|
||||||
|
obj.put("code",ResultCode.FAIL.code());
|
||||||
|
obj.put("msg",object.get("msg"));
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
obj.put("code",ResultCode.FAIL.code());
|
||||||
|
obj.put("msg","失败");
|
||||||
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -54,14 +161,14 @@ public class LkLPayServiceImpl implements PayService {
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> getUnionInfo(String userAuthCode, String paymentApp, String merchantId) throws Exception {
|
public Map<String, Object> getUnionInfo(String userAuthCode, String paymentApp, String merchantId) throws Exception {
|
||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
JSONObject reqData = new JSONObject(2);
|
// JSONObject reqData = new JSONObject(2);
|
||||||
Map<String, Object> stringObjectMap=lklPayService.authUserId(userAuthCode, paymentApp);
|
// Map<String, Object> stringObjectMap=lklPayService.authUserId(userAuthCode, paymentApp);
|
||||||
reqData.put("data",stringObjectMap.get("userId"));
|
// reqData.put("data",stringObjectMap.get("userId"));
|
||||||
reqData.put("userAuthCode",userAuthCode);
|
// reqData.put("userAuthCode",userAuthCode);
|
||||||
reqData.put("appUpIdentifier",paymentApp);
|
// reqData.put("appUpIdentifier",paymentApp);
|
||||||
result.put("data",reqData);
|
// result.put("data",reqData);
|
||||||
result.put("code","1");
|
// result.put("code","1");
|
||||||
result.put("msg","获取成功");
|
// result.put("msg","获取成功");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,21 @@
|
||||||
package cn.pluss.platform.klk.service;
|
package cn.pluss.platform.klk.service;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.pluss.platform.api.ResultCode;
|
||||||
|
import cn.pluss.platform.dto.MerChantOrderDTO;
|
||||||
|
import cn.pluss.platform.entity.MerchantBackLkl;
|
||||||
import cn.pluss.platform.entity.MerchantBaseInfo;
|
import cn.pluss.platform.entity.MerchantBaseInfo;
|
||||||
import cn.pluss.platform.entity.MerchantChannelStatus;
|
import cn.pluss.platform.entity.MerchantChannelStatus;
|
||||||
import cn.pluss.platform.entity.MerchantOrder;
|
import cn.pluss.platform.entity.MerchantOrder;
|
||||||
|
import cn.pluss.platform.exception.MsgException;
|
||||||
import cn.pluss.platform.klk.LakalaConfig;
|
import cn.pluss.platform.klk.LakalaConfig;
|
||||||
|
import cn.pluss.platform.mapper.MerchantBackLklMapper;
|
||||||
import cn.pluss.platform.util.DateUtils;
|
import cn.pluss.platform.util.DateUtils;
|
||||||
|
import cn.pluss.platform.util.SnowFlakeUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
|
@ -28,6 +37,7 @@ import javax.net.ssl.TrustManager;
|
||||||
import javax.net.ssl.X509TrustManager;
|
import javax.net.ssl.X509TrustManager;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.*;
|
import java.security.*;
|
||||||
import java.security.cert.*;
|
import java.security.cert.*;
|
||||||
|
|
@ -35,6 +45,7 @@ import java.security.spec.InvalidKeySpecException;
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -57,35 +68,23 @@ public class LklPayService {
|
||||||
private static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
private static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
|
||||||
private static final SecureRandom RANDOM = new SecureRandom();
|
private static final SecureRandom RANDOM = new SecureRandom();
|
||||||
private String appId = "OP00000354";
|
|
||||||
// private String appId="OP00000657";
|
|
||||||
private String mchSerialNo = "00dfba8194c41b84cf";
|
|
||||||
private String merchantNo = "8221210594300JY";
|
|
||||||
private String termNo = "A0073841";
|
|
||||||
// private String privateKeyPath="classpath:lakalaConf/OP00000003_private_key.pem";
|
|
||||||
private String privateKeyPath = "C:\\Users\\Administrator\\Desktop\\dr\\OP00000003_private_key.pem";
|
|
||||||
// private String cerPath="C:\\Users\\Administrator\\Desktop\\dr\\lkl-apigw-v1.cer";
|
|
||||||
private String cerPath = "C:\\Users\\Administrator\\Desktop\\dr\\OP00000003_cert.cer";
|
|
||||||
private String apiUrl = "https://test.wsmsd.cn/sit";
|
|
||||||
String apiPath = "/api/v2/saas/query/wx_openid_query";
|
|
||||||
|
|
||||||
// private String apiUrl="https://s2.lakala.com";
|
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
LakalaConfig lakalaConfig;
|
LakalaConfig lakalaConfig;
|
||||||
@Test
|
|
||||||
public void test1() {
|
|
||||||
LaKaLaVO laVO = new LaKaLaVO();
|
|
||||||
createOrder(laVO, "127.0.0.1");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
MerchantBackLklMapper merchantBackLklMapper;
|
||||||
|
|
||||||
public JSONObject tradePay(MerchantOrder order, MerchantChannelStatus channel, MerchantBaseInfo merchant){
|
public JSONObject tradePay(MerchantOrder order, MerchantChannelStatus channel, MerchantBaseInfo merchant){
|
||||||
|
|
||||||
String req_time= DateUtils.getSdfTimes();
|
String req_time= DateUtils.getSdfTimes();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String body="{\n" +
|
String body="{\n" +
|
||||||
" \"req_time\": \""+req_time+"\",\n" +
|
" \"req_time\": \""+req_time+"\",\n" +
|
||||||
" \"version\": \"3.0\",\n" +
|
" \"version\": \"3.0\",\n" +
|
||||||
|
|
@ -115,180 +114,80 @@ public class LklPayService {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Map<String,Object> tradePay(String amount,MerchantChannelStatus channel,String authCode,String ip,String paymentApp){
|
||||||
|
|
||||||
|
|
||||||
|
QueryWrapper<MerchantBackLkl> queryWrapper=new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("merchant_code",channel.getMerchantCode());
|
||||||
|
queryWrapper.eq("merchant_id",channel.getMerchantId());
|
||||||
|
queryWrapper.eq("channel","5");
|
||||||
|
queryWrapper.eq("user_no","22241007");
|
||||||
|
|
||||||
public String createOrder(LaKaLaVO laVO, String ip) {
|
MerchantBackLkl merchantBackLkl=merchantBackLklMapper.selectOne(queryWrapper);
|
||||||
//public String createOrder(String body,String apiPath,String ip) {
|
MsgException.checkNull(merchantBackLkl,"进件信息不存在");
|
||||||
// String apiPath = "/api/v2/mms/openApi/addMer";
|
|
||||||
// String apiPath = "/api/v3/labs/trans/preorder";
|
|
||||||
|
|
||||||
// String apiPath = "/api/v3/labs/relation/revoked";
|
|
||||||
// String apiPath = "/api/v2/mms/openApi/addMer";
|
|
||||||
//ordCode存在异议
|
|
||||||
// String body ="{ \n" +
|
|
||||||
// " \"reqData\":{ \n" +
|
|
||||||
// " \"version\":\"1.0\", \n" +
|
|
||||||
// " \"orderNo\":\"2021031215011012345678\", \n" +
|
|
||||||
// " \"posType\":\"SUPER_POS\", \n" +
|
|
||||||
// " \"orgCode\":\"1\", \n" +
|
|
||||||
// " \"merRegName\":\"开放平台商户进件注册名称\", \n" +
|
|
||||||
// " \"merBizName\":\"开放平台商户进件经营名称\", \n" +
|
|
||||||
// " \"merRegDistCode\":\"290012\", \n" +
|
|
||||||
// " \"merRegAddr\":\"五星路102号\", \n" +
|
|
||||||
// " \"mccCode\":\"7011\", \n" +
|
|
||||||
// " \"merBusiContent\":\"640\", \n" +
|
|
||||||
// " \"larName\":\"张三丰\", \n" +
|
|
||||||
// " \"larIdType\":\"01\", \n" +
|
|
||||||
// " \"larIdcard\":\"33088119690117459X\", \n" +
|
|
||||||
// " \"larIdcardExpDt\":\"2051-01-10\", \n" +
|
|
||||||
// " \"merContactMobile\":\"15878559969\", \n" +
|
|
||||||
// " \"merContactName\":\"张三丰\", \n" +
|
|
||||||
// " \"settlePeriod\":\"T+1\", \n" +
|
|
||||||
// " \"openningBankCode\":\"102100000030\", \n" +
|
|
||||||
// " \"openningBankName\":\"中国工商银行股份有限公司北京市分行营业部\", \n" +
|
|
||||||
// " \"clearingBankCode\":\"102100099996\", \n" +
|
|
||||||
// " \"acctNo\":\"6212260200102400000\", \n" +
|
|
||||||
// " \"acctName\":\"仲涛飘\", \n" +
|
|
||||||
// " \"acctTypeCode\":\"58\", \n" +
|
|
||||||
// " \"acctIdcard\":\"33088119690117459X\", \n" +
|
|
||||||
// " \"devSerialNo\":\"yp13293921932131\", \n" +
|
|
||||||
// " \"devTypeName\":\"V8\", \n" +
|
|
||||||
// " \"termVer\":\"1.0\", \n" +
|
|
||||||
// " \"salesStaff\":\"销售3356\", \n" +
|
|
||||||
// " \"retUrl\":\"http://10.177.93.135:8082/notify\", \n" +
|
|
||||||
// " \"feeData\":[\n" +
|
|
||||||
// " { \n" +
|
|
||||||
// " \"feeRateTypeCode\":\"300\", \n" +
|
|
||||||
// " \"feeRatePct\":\"0.38\", \n" +
|
|
||||||
// " \"feeUpperAmtPcnt\":\"20\", \n" +
|
|
||||||
// " \"feeLowerAmtPcnt\":\"10\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " { \n" +
|
|
||||||
// " \"feeRateTypeCode\":\"301\", \n" +
|
|
||||||
// " \"feeRatePct\":\"0.58\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " { \n" +
|
|
||||||
// " \"feeRateTypeCode\":\"302\", \n" +
|
|
||||||
// " \"feeRatePct\":\"0.48\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " { \n" +
|
|
||||||
// " \"feeRateTypeCode\":\"303\", \n" +
|
|
||||||
// " \"feeRatePct\":\"0.48\"\n" +
|
|
||||||
// " }\n" +
|
|
||||||
// " ], \n" +
|
|
||||||
// " \"fileData\":[\n" +
|
|
||||||
// " { \n" +
|
|
||||||
// " \"attType\":\"ID_CARD_FRONT\", \n" +
|
|
||||||
// " \"attFileId\":\"G1/M00/00/61/CrFdEl3IyceAVVd8AAA0ADuZsA0911.jpg\"\n" +
|
|
||||||
// " }\n" +
|
|
||||||
// " ]\n" +
|
|
||||||
// " }, \n" +
|
|
||||||
// " \"ver\":\"1.0.0\", \n" +
|
|
||||||
// " \"timestamp\":\"1541589957000\", \n" +
|
|
||||||
// " \"reqId\":\"baff59de4694438ca9089862253517a5\"\n" +
|
|
||||||
// "}";
|
|
||||||
Integer type = null;
|
|
||||||
String subAppid = "";
|
|
||||||
String subOpenid = "";
|
|
||||||
String body = "";
|
|
||||||
String orderNumber = "";
|
|
||||||
String consumeFee = "";
|
|
||||||
HttpServletRequest request = null;
|
|
||||||
|
|
||||||
body = "{ \n" +
|
String req_time= DateUtils.getSdfTimes();
|
||||||
" \"ver\": \"1.0.0\",\n" +
|
|
||||||
" \"timestamp\": \"1541589957000\",\n" +
|
|
||||||
" \"reqId\": \"ca9089862253517a5\",\n" +
|
Long order_amt = new BigDecimal(amount).multiply(new BigDecimal(100)).longValue();
|
||||||
" \"reqData\": {\n" +
|
String out_trade_no= "LKL".concat(SnowFlakeUtil.nextId().toString());
|
||||||
" \"mercId\": \"" + merchantNo + "\",\n" +
|
|
||||||
" \"termNo\": \"" + termNo + "\",\n" +
|
|
||||||
" \"authCode\": \"136519690623734145\",\n" +
|
String body="{\n" +
|
||||||
" \"tradeCode\":\"030304\"\n" +
|
"\t\"req_data\": {\n" +
|
||||||
" }\n" +
|
"\t\t\"out_trade_no\": \""+out_trade_no+"\",\n" +
|
||||||
|
"\t\t\"merchant_no\": \""+lakalaConfig.getMerchantNo()+"\",\n" +
|
||||||
|
"\t\t\"term_no\": \""+lakalaConfig.getTermNo()+"\",\n" +
|
||||||
|
"\t\t\"auth_code\": \""+authCode+"\",\n" +
|
||||||
|
"\t\t\"total_amount\": \""+order_amt+"\",\n" +
|
||||||
|
"\t\t\"notify_url\": \""+lakalaConfig.getCallBackUrl()+"\",\n" +
|
||||||
|
"\t\t\"location_info\": \"{\\\"request_ip\\\":\\\""+ip+"\\\",\\\"base_station\\\":\\\"陕西省西安市未央区\\\",\\\"location\\\":\\\"34.34727,108.94647\\\"}\"\n" +
|
||||||
|
"\t},\n" +
|
||||||
|
"\t\"version\": \"3.0\",\n" +
|
||||||
|
"\t\"req_time\": \""+req_time+"\"\n" +
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
|
|
||||||
// if (type==51||type==71){
|
String response=req(body,"api/v3/labs/trans/micropay");
|
||||||
//
|
if(ObjectUtil.isNotEmpty(response)){
|
||||||
// body="{\n" +
|
JSONObject object= JSON.parseObject(response);
|
||||||
// " \"out_org_code\":\""+appId+"\",\n" +
|
if(object.containsKey("code")&&"BBS10000".equals(object.get("code"))){
|
||||||
// " \"req_data\":{\n" +
|
Map<String,Object> result = new HashMap<>(2);
|
||||||
// " \"acc_busi_fields\":{\n" +
|
result.put("data", object.get("resp_data"));
|
||||||
// " \"detail\":\"{\\\"goods_detail\\\":[{\\\\\\\"goods_id\\\\\\\":\\\\\\\"100734033\\\\\\\",\\\\\\\"price\\\\\\\":\\\\\\\"50\\\\\\\",\\\\\\\"quantity\\\\\\\":\\\\\\\"1\\\\\\\"}]}\",\n" +
|
result.put("code", "1");
|
||||||
// " \"goods_tag\":\"ceshi\",\n" +
|
result.put("msg", "获取成功");
|
||||||
// " \"sub_appid\":\""+subAppid+"\",\n" +
|
return result;
|
||||||
// " \"user_id\":\""+subOpenid+"\"\n" +
|
|
||||||
// " },\n" +
|
}else {
|
||||||
// " \"account_type\":\"WECHAT\",\n" +
|
JSONObject reqData = new JSONObject(2);
|
||||||
// " \"location_info\":{\n" +
|
reqData.put("userAuthCode", authCode);
|
||||||
// " \"request_ip\":\""+IpUtils.getIpAddr(request)+"\"\n" +
|
reqData.put("paymentApp", paymentApp);
|
||||||
// " },\n" +
|
reqData.put("code", ResultCode.FAIL.code());
|
||||||
// " \"merchant_no\":\""+merchantNo+"\",\n" +
|
|
||||||
// " \"notify_url\":\"https://testca/notify\",\n" +
|
reqData.put("msg",object.get("msg"));
|
||||||
// " \"out_trade_no\":\""+orderNumber+"\",\n" +
|
|
||||||
// " \"term_no\":\""+ laVO.getTermNum()+"\",\n" +
|
return reqData;
|
||||||
// " \"total_amount\":\""+consumeFee+"\",\n" +
|
}
|
||||||
// " \"trans_type\":\""+type+"\"\n" +
|
}
|
||||||
// " },\n" +
|
JSONObject reqData = new JSONObject(2);
|
||||||
// " \"req_time\":\""+getNowDate()+"\",\n" +
|
reqData.put("code", ResultCode.FAIL.code());
|
||||||
// " \"version\":\"3.0\"\n" +
|
reqData.put("msg","失败");
|
||||||
// "}";
|
return reqData;
|
||||||
// }else if (type==41){
|
|
||||||
// body="{\n" +
|
|
||||||
// " \"out_org_code\":\""+appId+"\",\n" +
|
|
||||||
// " \"req_data\":{\n" +
|
|
||||||
// " \"acc_busi_fields\":{\n" +
|
|
||||||
// " \"detail\":\"{\\\"goods_detail\\\":[{\\\\\\\"goods_id\\\\\\\":\\\\\\\"100734033\\\\\\\",\\\\\\\"price\\\\\\\":\\\\\\\"50\\\\\\\",\\\\\\\"quantity\\\\\\\":\\\\\\\"1\\\\\\\"}]}\",\n" +
|
|
||||||
// " \"goods_tag\":\"ceshi\",\n" +
|
|
||||||
// " \"sub_appid\":\""+subAppid+"\",\n" +
|
|
||||||
// " \"user_id\":\""+subOpenid+"\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " \"account_type\":\"WECHAT\",\n" +
|
|
||||||
// " \"location_info\":{\n" +
|
|
||||||
// " \"request_ip\":\""+IpUtils.getIpAddr(request)+"\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " \"merchant_no\":\""+merchantNo+"\",\n" +
|
|
||||||
// " \"notify_url\":\"https://testca/notify\",\n" +
|
|
||||||
// " \"out_trade_no\":\""+orderNumber+"\",\n" +
|
|
||||||
// " \"term_no\":\""+ laVO.getTermNum()+"\",\n" +
|
|
||||||
// " \"total_amount\":\""+consumeFee+"\",\n" +
|
|
||||||
// " \"trans_type\":\""+type+"\"\n" +
|
|
||||||
// " },\n" +
|
|
||||||
// " \"req_time\":\""+getNowDate()+"\",\n" +
|
|
||||||
// " \"version\":\"3.0\"\n" +
|
|
||||||
// "}";
|
|
||||||
// }
|
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> authUserId(String authCode, String appUpIdentifier) {
|
|
||||||
String body = "{ \n" +
|
|
||||||
" \"ver\": \"1.0.0\",\n" +
|
|
||||||
" \"timestamp\": \"1541589957000\",\n" +
|
|
||||||
" \"reqId\": \"ca9089862253517a5\",\n" +
|
|
||||||
" \"reqData\": {\n" +
|
|
||||||
" \"mercId\": \"" + merchantNo + "\",\n" +
|
|
||||||
" \"termNo\": \"" + termNo + "\",\n" +
|
|
||||||
" \"authCode\": \"" + authCode + "\",\n" +
|
|
||||||
" \"tradeCode\":\"030304\",\n" +
|
|
||||||
" \"appUpIdentifier\":\"" + appUpIdentifier + "\"\n" +
|
|
||||||
" }\n" +
|
|
||||||
"}";
|
|
||||||
Map map = (Map) JSONArray.parse(req(body));
|
|
||||||
return (Map<String, Object>) JSONArray.parse(map.get("reqData").toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String req(String body) {
|
public String req(String body,String mothod) {
|
||||||
String encode = encode("client_id:client_secret".getBytes());
|
String encode = encode("client_id:client_secret".getBytes());
|
||||||
System.out.println("base64:" + encode);
|
System.out.println("base64:" + encode);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
String authorization = getAuthorization(body, appId, mchSerialNo, privateKeyPath);
|
String authorization = getAuthorization(body, lakalaConfig.getAppid(), lakalaConfig.getMchSerialNo(), lakalaConfig.getPrivateKeyPath());
|
||||||
HttpResponse lakalaResponse = post(apiUrl + apiPath, body, authorization, "utf-8");
|
HttpResponse lakalaResponse = post(lakalaConfig.getApiUrl() + mothod, body, authorization, "utf-8");
|
||||||
if (lakalaResponse.getStatusLine().getStatusCode() != 200) {
|
if (lakalaResponse.getStatusLine().getStatusCode() != 200) {
|
||||||
log.error("请求失败,statusCode:{},message:{}", lakalaResponse.getStatusLine(), IOUtils.toString(lakalaResponse.getEntity().getContent(), "utf-8"));
|
log.error("请求失败,statusCode:{},message:{}", lakalaResponse.getStatusLine(), IOUtils.toString(lakalaResponse.getEntity().getContent(), "utf-8"));
|
||||||
|
MsgException.throwException(IOUtils.toString(lakalaResponse.getEntity().getContent(), "utf-8"));
|
||||||
}
|
}
|
||||||
|
|
||||||
String appid = getHeadValue(lakalaResponse, "Lklapi-Appid");
|
String appid = getHeadValue(lakalaResponse, "Lklapi-Appid");
|
||||||
|
|
@ -301,10 +200,7 @@ public class LklPayService {
|
||||||
|
|
||||||
String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
|
String source = appid + "\n" + lklapiSerial + "\n" + timestamp + "\n" + nonce + "\n" + responseStr + "\n";
|
||||||
log.info("请求的数据为:{}", source);
|
log.info("请求的数据为:{}", source);
|
||||||
|
X509Certificate lklCertificate = loadCertificate(new FileInputStream(new File(lakalaConfig.getCertificatePath())));
|
||||||
// X509Certificate lklCertificate = loadCertificate(new FileInputStream(new File(privateKeyPath)));
|
|
||||||
X509Certificate lklCertificate = loadCertificate(new FileInputStream(new File(cerPath)));
|
|
||||||
|
|
||||||
boolean verify = verify(lklCertificate, source.getBytes("utf-8"), signature);
|
boolean verify = verify(lklCertificate, source.getBytes("utf-8"), signature);
|
||||||
|
|
||||||
if (verify) {
|
if (verify) {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package cn.pluss.platform.klk.service.impl;
|
package cn.pluss.platform.klk.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.pluss.platform.BankCardService;
|
import cn.pluss.platform.BankCardService;
|
||||||
import cn.pluss.platform.IdCardService;
|
import cn.pluss.platform.IdCardService;
|
||||||
import cn.pluss.platform.MerchantAuditRecordService;
|
import cn.pluss.platform.MerchantAuditRecordService;
|
||||||
|
|
@ -9,7 +10,9 @@ import cn.pluss.platform.dto.AccountDTO;
|
||||||
import cn.pluss.platform.entity.*;
|
import cn.pluss.platform.entity.*;
|
||||||
import cn.pluss.platform.exception.MsgException;
|
import cn.pluss.platform.exception.MsgException;
|
||||||
import cn.pluss.platform.klk.LaKaLaUtility;
|
import cn.pluss.platform.klk.LaKaLaUtility;
|
||||||
|
import cn.pluss.platform.klk.LakalaConfig;
|
||||||
import cn.pluss.platform.klk.service.*;
|
import cn.pluss.platform.klk.service.*;
|
||||||
|
import cn.pluss.platform.klk.util.RSAUtil;
|
||||||
import cn.pluss.platform.klk.vo.*;
|
import cn.pluss.platform.klk.vo.*;
|
||||||
|
|
||||||
import cn.pluss.platform.mapper.MerchantChannelStatusMapper;
|
import cn.pluss.platform.mapper.MerchantChannelStatusMapper;
|
||||||
|
|
@ -24,6 +27,8 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.tomcat.util.codec.binary.Base64;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.core.io.ByteArrayResource;
|
import org.springframework.core.io.ByteArrayResource;
|
||||||
|
|
@ -44,6 +49,7 @@ import java.net.URISyntaxException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class LaKalaInterfaceImpl implements LaKalaInterface {
|
public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
@Resource
|
@Resource
|
||||||
LklPayService lklPayService;
|
LklPayService lklPayService;
|
||||||
|
|
@ -88,10 +94,15 @@ public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
MccReflectService service;
|
MccReflectService service;
|
||||||
@Resource
|
@Resource
|
||||||
PlussMerchantLklService merchantLklService;
|
PlussMerchantLklService merchantLklService;
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
LakalaConfig lakalaConfig;
|
||||||
|
|
||||||
private static final String client_id = "chaozhanggui";
|
private static final String client_id = "chaozhanggui";
|
||||||
private static final String client_secret = "Y54Gqy6aLpxld3dp";
|
private static final String client_secret = "Y54Gqy6aLpxld3dp";
|
||||||
private static final String grant_type = "client_credentials";
|
private static final String grant_type = "client_credentials";
|
||||||
private static final String userNo = "22241007";
|
public static final String userNo = "22241007";
|
||||||
/**
|
/**
|
||||||
* 商户进件
|
* 商户进件
|
||||||
*/
|
*/
|
||||||
|
|
@ -244,16 +255,23 @@ public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(5,7));
|
startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(5,7));
|
||||||
startSb.append("-");
|
startSb.append("-");
|
||||||
startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(8,10));
|
startSb.append(merchantBaseInfo.getBussAuthStartTime().substring(8,10));
|
||||||
|
}else {
|
||||||
|
startSb.append(merchantBaseInfo.getBussAuthStartTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ObjectUtil.isEmpty(merchantBaseInfo.getBuslicType()) ||"长期".equals(merchantBaseInfo.getBuslicType())){
|
if(ObjectUtil.isEmpty(merchantBaseInfo.getBuslicType()) ||"长期".equals(merchantBaseInfo.getBuslicType())){
|
||||||
endSb.append("2099-12-31");
|
endSb.append("2099-12-31");
|
||||||
}else {
|
}else {
|
||||||
endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(0,4));
|
if(merchantBaseInfo.getBussAuthEndTime().contains("年")){
|
||||||
endSb.append("-");
|
endSb.append(merchantBaseInfo.getBussAuthEndTime().substring(0,4));
|
||||||
endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(5,7));
|
endSb.append("-");
|
||||||
endSb.append("-");
|
endSb.append(merchantBaseInfo.getBussAuthEndTime().substring(5,7));
|
||||||
endSb.append(merchantBaseInfo.getBussAuthStartTime().substring(8,10));
|
endSb.append("-");
|
||||||
|
endSb.append(merchantBaseInfo.getBussAuthEndTime().substring(8,10));
|
||||||
|
}else {
|
||||||
|
endSb.append(merchantBaseInfo.getBussAuthEndTime());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -317,7 +335,7 @@ public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
MsgException.checkNull(accountV4,"结算信息不存在");
|
MsgException.checkNull(accountV4,"结算信息不存在");
|
||||||
|
|
||||||
object1.put("accountNo", accountV4.getBankCard().getBankCardNo()); //结算人银行卡号
|
object1.put("accountNo", accountV4.getBankCard().getBankCardNo()); //结算人银行卡号
|
||||||
object1.put("accountName", accountV4.getBankCard().getBranchName()); //结算人账户名称
|
object1.put("accountName", accountV4.getBankCard().getBankHolder()); //结算人账户名称
|
||||||
object1.put("accountType", accountV4.getBankCard().getAccountType().equals("01")?"58":"57"); //结算账户类型 57 对公 58 对私
|
object1.put("accountType", accountV4.getBankCard().getAccountType().equals("01")?"58":"57"); //结算账户类型 57 对公 58 对私
|
||||||
// object1.put("accountIdType",tuoKeVo.getUserNo()); //结算⼈证件类型 为空同法⼈
|
// object1.put("accountIdType",tuoKeVo.getUserNo()); //结算⼈证件类型 为空同法⼈
|
||||||
object1.put("accountIdCard", accountV4.getIdcard().getCertNo()); //结算⼈证件号码
|
object1.put("accountIdCard", accountV4.getIdcard().getCertNo()); //结算⼈证件号码
|
||||||
|
|
@ -559,6 +577,46 @@ public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Map queryMerchat(String customerNo,String externalCustomerNo){
|
||||||
|
Map map = getToken();
|
||||||
|
try{
|
||||||
|
JSONObject object=new JSONObject();
|
||||||
|
if(ObjectUtil.isNotEmpty(customerNo)){
|
||||||
|
object.put("customerNo",customerNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ObjectUtil.isNotEmpty(externalCustomerNo)){
|
||||||
|
object.put("externalCustomerNo",externalCustomerNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject req=new JSONObject();
|
||||||
|
byte[] privateKey = Base64.decodeBase64(lakalaConfig.getPrivateKey());
|
||||||
|
byte[] bytes = RSAUtil.encryptByPrivateKey(object.toString().getBytes(), privateKey);
|
||||||
|
|
||||||
|
req.put("data", Base64.encodeBase64String(bytes));
|
||||||
|
|
||||||
|
log.info("请求参数:加密前:{},加密后:{}",object.toString(),req.toString());
|
||||||
|
String result = cn.hutool.http.HttpRequest.post("https://tkapi.lakala.com/htkmerchants/open/merchant/info")
|
||||||
|
.header("Authorization", "bearer " + map.get("access_token")).header("content-type", "application/json")
|
||||||
|
.body(req.toJSONString()).execute().body();
|
||||||
|
Map arry = (Map) JSONArray.parse(result);
|
||||||
|
log.info("返回参数:",JSONUtil.toJsonStr(arry));
|
||||||
|
return arry;
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 加密
|
// 加密
|
||||||
public static String getBase64() {
|
public static String getBase64() {
|
||||||
|
|
||||||
|
|
@ -869,10 +927,26 @@ public class LaKalaInterfaceImpl implements LaKalaInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// getToken();
|
|
||||||
|
|
||||||
LaKalaInterfaceImpl laKalaInterface = new LaKalaInterfaceImpl();
|
Map map = getToken();
|
||||||
laKalaInterface.getOrganCode("1");
|
String result="";
|
||||||
|
try{
|
||||||
|
JSONObject object=new JSONObject();
|
||||||
|
object.put("customerNo","123627687");
|
||||||
|
|
||||||
|
result = cn.hutool.http.HttpRequest.post("https://tkapi.lakala.com/htkmerchants/open/merchant/info")
|
||||||
|
.header("Authorization", "bearer " + map.get("access_token")).header("content-type", "application/json")
|
||||||
|
.body(object.toString()).execute().body();
|
||||||
|
Map arry = (Map) JSONArray.parse(result);
|
||||||
|
System.out.println(JSONUtil.toJsonStr(arry));
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// LaKalaInterfaceImpl laKalaInterface = new LaKalaInterfaceImpl();
|
||||||
|
// laKalaInterface.getOrganCode("1");
|
||||||
// try {
|
// try {
|
||||||
// laKalaInterface.laKaLaFileUpload1();
|
// laKalaInterface.laKaLaFileUpload1();
|
||||||
// } catch (IOException e) {
|
// } catch (IOException e) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package cn.pluss.platform.klk.service.impl;
|
||||||
|
|
||||||
|
import cn.pluss.platform.channel.BaseMchChannelRateNewService;
|
||||||
|
import cn.pluss.platform.entity.MerchantRateNew;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service("lklChangeRateNewService")
|
||||||
|
public class LklChangeRateNewServiceImpl extends BaseMchChannelRateNewService {
|
||||||
|
@Override
|
||||||
|
public void process(String userId, MerchantRateNew merchantRate) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getChannelId() {
|
||||||
|
return "5";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MerchantRateNew getDefaultRate() {
|
||||||
|
MerchantRateNew rateNew = new MerchantRateNew();
|
||||||
|
rateNew.setChannel(5);
|
||||||
|
rateNew.setWxRate(38);
|
||||||
|
rateNew.setAliRate(38);
|
||||||
|
rateNew.setBankRate(38);
|
||||||
|
rateNew.setBankRateLarge(38);
|
||||||
|
return rateNew;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
package cn.pluss.platform.klk.util;
|
||||||
|
|
||||||
|
import org.apache.tomcat.util.codec.binary.Base64;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.security.KeyFactory;
|
||||||
|
import java.security.PrivateKey;
|
||||||
|
import java.security.PublicKey;
|
||||||
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
|
|
||||||
|
public class RSAUtil {
|
||||||
|
public static final String KEY_ALGORITHM = "RSA";
|
||||||
|
private static final String PUBLIC_KEY = "RSAPublicKey";
|
||||||
|
private static final String PRIVATE_KEY = "RSAPrivateKey";
|
||||||
|
private static final int KEY_SIZE = 1024;
|
||||||
|
/**
|
||||||
|
* RSA
|
||||||
|
*/
|
||||||
|
private static final int MAX_ENCRYPT_BLOCK = 117;
|
||||||
|
/**
|
||||||
|
* RSA
|
||||||
|
*/
|
||||||
|
private static final int MAX_DECRYPT_BLOCK = 128;
|
||||||
|
public static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception {
|
||||||
|
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(key);
|
||||||
|
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
|
||||||
|
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
|
||||||
|
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
|
||||||
|
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
|
||||||
|
int inputLen = data.length;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
int offSet = 0;
|
||||||
|
byte[] cache;
|
||||||
|
int i = 0;
|
||||||
|
//
|
||||||
|
while (inputLen - offSet > 0) {
|
||||||
|
if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
|
||||||
|
cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
|
||||||
|
} else {
|
||||||
|
cache = cipher.doFinal(data, offSet, inputLen - offSet);
|
||||||
|
}
|
||||||
|
out.write(cache, 0, cache.length);
|
||||||
|
i++;
|
||||||
|
offSet = i * MAX_ENCRYPT_BLOCK;
|
||||||
|
}
|
||||||
|
byte[] encryptedData = out.toByteArray();
|
||||||
|
out.close();
|
||||||
|
return encryptedData;
|
||||||
|
}
|
||||||
|
public static byte[] decryptByPublicKey(byte[] data, byte[] key) throws Exception {
|
||||||
|
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(key);
|
||||||
|
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
|
||||||
|
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
|
||||||
|
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
|
||||||
|
cipher.init(Cipher.DECRYPT_MODE, publicKey);
|
||||||
|
int inputLen = data.length;
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
int offSet = 0;
|
||||||
|
byte[] cache;
|
||||||
|
int i = 0;
|
||||||
|
//
|
||||||
|
while (inputLen - offSet > 0) {
|
||||||
|
if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
|
||||||
|
cache = cipher.doFinal(data, offSet, MAX_DECRYPT_BLOCK);
|
||||||
|
} else {
|
||||||
|
cache = cipher.doFinal(data, offSet, inputLen - offSet);
|
||||||
|
}
|
||||||
|
out.write(cache, 0, cache.length);
|
||||||
|
i++;
|
||||||
|
offSet = i * MAX_DECRYPT_BLOCK;
|
||||||
|
}
|
||||||
|
byte[] dencryptedData = out.toByteArray();
|
||||||
|
out.close();
|
||||||
|
return dencryptedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
String req="{\"customerNo\":\"123627687\"}";
|
||||||
|
String pubKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCHB7j7gG3ioLnnr7bsuEXTAh/8YSxSp4lQIYGW9gX0Ikgz9JqARdg4iEnU6tgNirxA6Jdg0AWgLJQxQBEZMkwyK2ZfYgesYhlJkv6WVC8v5OkOrhA9NSQ3iS6JsYegsZO0GJSTtLQaTOF8WobPYe5NI+eWU1fRz2ZyxlWlKshBeQIDAQAB";
|
||||||
|
String priKey="MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIcHuPuAbeKgueevtuy4RdMCH/xhLFKniVAhgZb2BfQiSDP0moBF2DiISdTq2A2KvEDol2DQBaAslDFAERkyTDIrZl9iB6xiGUmS/pZULy/k6Q6uED01JDeJLomxh6Cxk7QYlJO0tBpM4Xxahs9h7k0j55ZTV9HPZnLGVaUqyEF5AgMBAAECgYAmugRHvXHGiapH1JF2GvOLrRRXYddAbWRoYvOzxCO4/QwQOpsFJwL4U745HpGQcLXFN/ASiBbU9XQbG/DLdS182qAjvdZVJOA2e3H3LhpY3D8ec3webO+0nGk6e4oWGG1efJLM88Nb0FtQiQ0E6z17Paw5AGvxMVBPbL5SoQfq8QJBANHQmvFkAWlBL2XTLPUXaj+NAJzolE90ctAquxfDcTtfEXv0JitC5bwTg87uNl7n4PUTmtMDIkse+D5vQ2CIF78CQQCkwOIMzedKtWhOEbdGxiz1Y/jkuA8yF7HREeC7X2Av0z2Gi3yltoJd0s6zLn+6zowQp1O/5U6ifrYCIObWlTTHAkA0WOZ/eWL8vr2zmvdpgtkIWAaiH0j5deU7WJ3rNODoXjS/h0+KlZs5zGijVT2Nei7fFnAXW33P3j8zXJEj4XCDAkAcrG0rKVLNz9C9dZveN3NvqdyRge8zGqiZ6HCia7ED4dHdbr1c4ezCg4Px72/PhU8fPt/2j+Qlp8PpjuxeAE3VAkBqUiVV9XZptFEXa/77rgHP3SWrC3TcrrS5jtNTGfA4VISV95YXnZzWjYfpgs2WoxdAXjsrM5TB7L3V4um4o6Dp";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
String data="c92t6Q4X6M4lcteFkZmSTxhfW/zz7w5+TYdMHVgLVzspQMJ33EyoR3k03RSVxqFKXlfWfpeunXb0ibaHqDS1eTWuXci6bzJTA+m3wTguj8eGev9paf05GzR1hWUrj7o4Aw1foUJfhPjCnGK4bWhO7QI1MBU4qKBmE9J25w7MzBAXHHW7yFACCZguOF/xIZdz+HeP9fQ8bqGPjtnwOePEUITx9n0g7ZwcH2/tgdGxkykHy8h/gFFZ4C4BzoI9xN6cD4ESzr0dYFS6NVANUwjc5Shmeh/sye1tZyIEZWHAVZyGR8s6L8iG0SecJwHxSnuMZvCqmVr0Z3EYhEoS8jp/DjUBt2WbXjqGDwIVoftD5WaO6CBQ2AfZAtCRCvJW3Z7G3AACQ687whDRhKIGWOZO8KXow6OLkT+XwWxOzewfFvcKX79JkPwPPzaxSSH7sNQ6nlxGKZBbwe9BIPkm8o63UHmL5JKBGNvi8iXJ59ZXjBlOeebcW0GpNziK0+ExyBaKPbRi1bEonZ1tUV72TZzazdb5kEWvC6ZgAGn2gDbqYdWMeyq0WyfYAf8NBRQFSjw45V4NJfbY8UffMzwErWb3fiqceKKfP3Ae/4JRNRXKjqT0WT6k3aJpe7bb9aKh7GZKUXloaVJBuYwN571Cf+Rvif75kHdVNxOZoH+gTniid6KEWLAjBQvFevd6yvVWqnwPrPiqxU6QQp0226oxizsT2dpeOG2qMSLyWJXqTO4/N5nmtim/r2Gz06johlPYn/o45sOw3XoJBMMN80966H2ZT+1i++4NwA1swamaOXbwzim9k8Y0e39DNrTjQTiYloGt0IO8V4OS6yhtNGeB1K9OF2zIbYyk6/4/hIhwn2h+bNdjHCWSx5Y2yJAG5HAlKpsf1SL0ZblLz2BfVszU3H6IFwbfLzcB2qN2XGTY6xwQXgrF5jBc8E5S1seMlKJWwpnioRXDO191UlhktMPe+ElY9YaR74xKNCqgRHDS99MhhYHow8BMp4bA5eefQJSWK8WXeAqX5cOniAxmWrKwf2KpDt2YDR+JKwoTQi18jPc5QTvtnmaDrhG9Vd2hchSaNYsbBSmoPTQHnpf98GLtJqaG+OREnMHU3PenIL8P8Y1VHUSmyTvAvFIp9U71l6vryQ2BjNfDzemr6T6FcWagqKVUm4wV4+WP0IoGv9yAvNmUALsRRcsunqIFaGtjSaSUXpnH9gvIIlcxWGtc5uv5XkiZzJb8Wim3nUGGrzOKvrDF2oRjSTkpjnqW05bnh/2pkJShgiF1LntNwgza8ukYSr2MgeeyHsI6ztpujtw3Xxb8OUFMxeA9MGzLCKuFPXiObx77H7LGKI+hPiCDizfk4ks3uRrOAQ211aURicqjhQvC9b7F5OJJwN9DGvql4pJ0FURhyyg90VbG2SjdfRuW22b+WqDxI3QwvLHQ9oDs3PI+wgYa8/j68prKw1ooCZ2VjyEk+zENbthYRo7Ckj1FWHsoeqXG2xY9rDmtBORL4Y+rPUhuX2OQVA5csO1jZJ1WkRp4edrUzOZFyzg2jQ9RlUHYWRVD3WFDLrOn+AwpyZS4ZATKJweEc4I/qOzYTydJy4fhV6lM44yyvghsBNfy5LzAL73gBU5bRmKlt3EGKnDT+LhG/WGnWAHGbeEvzikeKuXswFG+/fgN0qmKI9neTFzHnCc4SiRBijGKaookMSogv5IGQU2ZHI3536gQ4Ry+u7qmb2dqsb0d9YuQ3vzXoCsXwhT3yoMZvViWCbT7bcykJ8ofQJo32trojjg8iQ8mchsIgX8thNhTnHldlIeXbJjfSXqmtUmZYPo0LDgq64fDk+mvWtJgQ2ksfoDwVUIhjEYRnAa4i/bwvt9zYr68vv5GLxl1V1XWSA0fCp4PPRc4Yb6V2Xf1VDSOTnlcmliSx9SgGTT9SsQbIJ5i/uRKFy0AUllA2dsR6o4bPN7Ho0J00m/2oElsSqZmlFlSJcIbpMPjNWT+XSMgYvzeyTz+1rDnAYD0skVKmx/+zQgaFtOeetLkjII3ER4FoObXgdwnpU8aCtv77XZsHoJ1jtp3oSqwBhTHUohsy16DAkxUVRwN3nqDGbOLdxQn7U9Ytnh8oZRURIJTZW92MTP2pztrUfswgIs3xGXyigvYyKN3o7iSIaZNR6J3IZz47g188zN9mUwQ71OXus5tRMu4t7Ssq1/4frpmPKoQetgxGosf8SupSjoQqtw2Fz7TqYUNsqbi9F+/9oIQpKJH45Jh2GHA24/aKQvOtlpAXWOlQDPX2R0lrIrbPLU1tEL688kLgO5aE8o1y2fFrvT8bHZm/tjj2wBnrhr6EPsscl6kK9Kt8Ngz9xpFLpONFXWfpDfXwcyEmFNpGgNhOpvJTJU/rYpGtwZ71yrru5bXKcRXXMp7MLiHNiqOT5wjCekpk62nHerEN8mUJQ9i1jEP5rX+LdEYC0tZPppFPmsUQ4/7ozZDMQWuCcMG9SuVfEZILdl3Dcf93t4rL39FNCHI9EYwLSKlacrsnwhvOTFdDg01yUGwAmaTbftQcL6ZCcsO96cpPzVP4X7oAq88SbPEpXysrg1+t6rgxg28lUASxuabdIAbax98QAmyIRR4Pe0N/AH7Kt1r/Eyon7MJNF3UDfTVo5Gc5xT02exRxTA39/A89S/g7uz2ltGjD5OPe+xe1J/nUCaA+3EcOwUPESHhxGZlyXq0wJl2JGhcUFylrAwXqHL9HmUNFEVzCYz25sfaQOPUOzLtfuF4DQk6qcAA06uFzfZ58zUbV5psq74Rj2vq5FeXOrElqEMIh4R8GAA4YPOQXohq94k6YkKkBqT2NNalnJGiNJGy0ThWBaPktCruKlpIfoaiJN/1spYxnu0LSr+xbzk0SMo6/nmIkUzArSQelb1w24eMxg==";
|
||||||
|
|
||||||
|
byte[] privateKey = Base64.decodeBase64(priKey);
|
||||||
|
byte[] publicKey = Base64.decodeBase64(pubKey);
|
||||||
|
byte[] bytes = encryptByPrivateKey(req.getBytes(), privateKey);
|
||||||
|
String encrypt = Base64.encodeBase64String(bytes);
|
||||||
|
byte[] bytes1 = decryptByPublicKey(Base64.decodeBase64(data), publicKey);
|
||||||
|
|
||||||
|
// System.out.println("加密后的数据:======"+encrypt);
|
||||||
|
|
||||||
|
System.out.println("解密后的数据:====="+new String(bytes1));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -77,6 +77,9 @@ public class MerchantRateNewServiceImpl extends ServiceImpl<MerchantRateNewMappe
|
||||||
@Autowired @Lazy
|
@Autowired @Lazy
|
||||||
private MchChannelRateNewService ysChangeRateNewService;
|
private MchChannelRateNewService ysChangeRateNewService;
|
||||||
|
|
||||||
|
@Autowired @Lazy
|
||||||
|
private MchChannelRateNewService lklChangeRateNewService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgentService agentInfoService;
|
private AgentService agentInfoService;
|
||||||
|
|
||||||
|
|
@ -218,6 +221,9 @@ public class MerchantRateNewServiceImpl extends ServiceImpl<MerchantRateNewMappe
|
||||||
case 4:
|
case 4:
|
||||||
result = ysChangeRateService.getDefaultRate();
|
result = ysChangeRateService.getDefaultRate();
|
||||||
break;
|
break;
|
||||||
|
case 5:
|
||||||
|
result=lklChangeRateNewService.getDefaultRate();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
MsgException.throwException("通道异常!");
|
MsgException.throwException("通道异常!");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1404,6 +1404,7 @@ public class MerchantServiceImpl implements MerchantService {
|
||||||
unionInfo = ysPayOldService.getUnionInfo(userAuthCode, payMentApp,null);
|
unionInfo = ysPayOldService.getUnionInfo(userAuthCode, payMentApp,null);
|
||||||
}else if(channel.getChannel()==5){
|
}else if(channel.getChannel()==5){
|
||||||
//拉卡拉的被扫接口
|
//拉卡拉的被扫接口
|
||||||
|
lklPayService.tradePay(orderAmt,channel,auth_code,IpUtils.getIpAddr(request),payMentApp);
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
|
@ -1414,12 +1415,18 @@ public class MerchantServiceImpl implements MerchantService {
|
||||||
if ("1".equals(unionInfo.get("code"))) {
|
if ("1".equals(unionInfo.get("code"))) {
|
||||||
Object userIdData = unionInfo.get("data");
|
Object userIdData = unionInfo.get("data");
|
||||||
String userId = "";
|
String userId = "";
|
||||||
if(userIdData instanceof Map){
|
if(channel.getChannel()==5){
|
||||||
Map<String, String> data = (Map<String, String>) userIdData;
|
userId=userIdData.toString();
|
||||||
userId = data.get("data");
|
}else {
|
||||||
}else{
|
if(userIdData instanceof Map){
|
||||||
userId = userIdData.toString();
|
Map<String, String> data = (Map<String, String>) userIdData;
|
||||||
|
userId = data.get("data");
|
||||||
|
}else{
|
||||||
|
userId = userIdData.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
view.addObject("userId", userId);
|
view.addObject("userId", userId);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ public interface MerchantOrderService extends IService<MerchantOrder> {
|
||||||
* @param merchantOrderDTO ignored
|
* @param merchantOrderDTO ignored
|
||||||
* @return ignored
|
* @return ignored
|
||||||
*/
|
*/
|
||||||
Result<Object> toActivePay(MerChantOrderDTO merchantOrderDTO);
|
Result<Object> toActivePay(MerChantOrderDTO merchantOrderDTO,String ip);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主扫会员卡支付
|
* 主扫会员卡支付
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ import cn.pluss.platform.entitiy.SettleTypeEnum;
|
||||||
import cn.pluss.platform.entity.*;
|
import cn.pluss.platform.entity.*;
|
||||||
import cn.pluss.platform.enums.UserRoleEnum;
|
import cn.pluss.platform.enums.UserRoleEnum;
|
||||||
import cn.pluss.platform.exception.MsgException;
|
import cn.pluss.platform.exception.MsgException;
|
||||||
|
import cn.pluss.platform.klk.service.LkLPayServiceImpl;
|
||||||
|
import cn.pluss.platform.klk.service.LklPayService;
|
||||||
import cn.pluss.platform.mapper.*;
|
import cn.pluss.platform.mapper.*;
|
||||||
import cn.pluss.platform.memberOrder.MemberOrderService;
|
import cn.pluss.platform.memberOrder.MemberOrderService;
|
||||||
import cn.pluss.platform.merchant.MerchantCashPlaceService;
|
import cn.pluss.platform.merchant.MerchantCashPlaceService;
|
||||||
|
|
@ -128,6 +130,9 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
@Setter(onMethod_ = {@Autowired})
|
@Setter(onMethod_ = {@Autowired})
|
||||||
private RyxPayService ryxPayService;
|
private RyxPayService ryxPayService;
|
||||||
|
|
||||||
|
@Setter(onMethod_ = {@Autowired})
|
||||||
|
private LkLPayServiceImpl lkLPayServiceImpl;
|
||||||
|
|
||||||
@Setter(onMethod_ = {@Autowired, @Qualifier("ysPayOldService")})
|
@Setter(onMethod_ = {@Autowired, @Qualifier("ysPayOldService")})
|
||||||
private PayService ysPayOldService;
|
private PayService ysPayOldService;
|
||||||
|
|
||||||
|
|
@ -771,7 +776,7 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result<Object> toActivePay(MerChantOrderDTO dto) {
|
public Result<Object> toActivePay(MerChantOrderDTO dto,String ip) {
|
||||||
//校验参数
|
//校验参数
|
||||||
checkActivePayParamsMap(dto);
|
checkActivePayParamsMap(dto);
|
||||||
//组装订单参数
|
//组装订单参数
|
||||||
|
|
@ -787,6 +792,7 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
return ResultGenerator.genSuccessResult("支付成功", result);
|
return ResultGenerator.genSuccessResult("支付成功", result);
|
||||||
}else{
|
}else{
|
||||||
MerchantOrder order = getMerchantOrder(dto, dto.getConsumeFee(), "1","1");
|
MerchantOrder order = getMerchantOrder(dto, dto.getConsumeFee(), "1","1");
|
||||||
|
order.setIp(ip);
|
||||||
return activePay(order, dto);
|
return activePay(order, dto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -899,7 +905,10 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
} else if("4".equals(order.getAisleSwitch())){
|
} else if("4".equals(order.getAisleSwitch())){
|
||||||
JSONObject object = ysPayOldService.tradePay(dto, order);
|
JSONObject object = ysPayOldService.tradePay(dto, order);
|
||||||
return scanPay(object, order);
|
return scanPay(object, order);
|
||||||
}else{
|
}else if("5".equals(order.getAisleSwitch())){
|
||||||
|
JSONObject object=lkLPayServiceImpl.tradePay(dto,order);
|
||||||
|
return scanPay(object,order);
|
||||||
|
} else{
|
||||||
throw new MsgException("未知通道!");
|
throw new MsgException("未知通道!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1218,7 +1227,7 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
/**
|
/**
|
||||||
* merchantIncome:(添加收益记录). <br/>
|
* merchantIncome:(添加收益记录). <br/>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
* @since JDK 1.8
|
* @since JDK 1.8
|
||||||
*/
|
*/
|
||||||
|
|
@ -1417,6 +1426,11 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
merchantOrderDTO.setAisleSwitch("4");
|
merchantOrderDTO.setAisleSwitch("4");
|
||||||
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_WECHAT);
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_WECHAT);
|
||||||
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_WECHAT);
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_WECHAT);
|
||||||
|
}else if (channelStatus.getChannel()==5){
|
||||||
|
orderPrefix = "LKL_W_";
|
||||||
|
merchantOrderDTO.setAisleSwitch("5");
|
||||||
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_WECHAT);
|
||||||
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_WECHAT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "2":
|
case "2":
|
||||||
|
|
@ -1436,6 +1450,11 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
merchantOrderDTO.setAisleSwitch("4");
|
merchantOrderDTO.setAisleSwitch("4");
|
||||||
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_ALIPAY);
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_ALIPAY);
|
||||||
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_ALIPAY);
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_ALIPAY);
|
||||||
|
}else if (channelStatus.getChannel()==5){
|
||||||
|
orderPrefix = "LKL_W_";
|
||||||
|
merchantOrderDTO.setAisleSwitch("5");
|
||||||
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_WECHAT);
|
||||||
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_WECHAT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "6":
|
case "6":
|
||||||
|
|
@ -1454,6 +1473,11 @@ public class MerchantOrderServiceImpl extends ServiceImpl<MerchantOrderMapper, M
|
||||||
merchantOrderDTO.setAisleSwitch("4");
|
merchantOrderDTO.setAisleSwitch("4");
|
||||||
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_YSFPAY);
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_YSFPAY);
|
||||||
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_YSFPAY);
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_YSFPAY);
|
||||||
|
}else if (channelStatus.getChannel()==5){
|
||||||
|
orderPrefix = "LKL_W_";
|
||||||
|
merchantOrderDTO.setAisleSwitch("5");
|
||||||
|
merchantOrderDTO.setPayTypeCode(Constant.PAY_TYPE_WECHAT);
|
||||||
|
merchantOrderDTO.setPayTypeName(Constant.PAY_TYPE_NAME_WECHAT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -66,14 +66,6 @@ public interface MerchantProfitService extends IService<MerchantProfit> {
|
||||||
*/
|
*/
|
||||||
void batchInsert(Vector<MerchantProfit> profitList);
|
void batchInsert(Vector<MerchantProfit> profitList);
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建分润V2.0模式
|
|
||||||
* @date: 2022/1/21 15:14
|
|
||||||
* @param order:
|
|
||||||
* @param type
|
|
||||||
*/
|
|
||||||
void createOrderProfitV2(MerchantOrder order,String type);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计按条件分润信息
|
* 统计按条件分润信息
|
||||||
* @date: 2022/2/9 19:38
|
* @date: 2022/2/9 19:38
|
||||||
|
|
@ -82,6 +74,14 @@ public interface MerchantProfitService extends IService<MerchantProfit> {
|
||||||
*/
|
*/
|
||||||
Map<String, BigDecimal> getProfitAmtCount(MerchantProfit condition);
|
Map<String, BigDecimal> getProfitAmtCount(MerchantProfit condition);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建分润V2.0模式
|
||||||
|
* @date: 2022/1/21 15:14
|
||||||
|
* @param order:
|
||||||
|
* @param type
|
||||||
|
*/
|
||||||
|
void createOrderProfitV2(MerchantOrder order,String type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送收益消息
|
* 推送收益消息
|
||||||
* @param userApp
|
* @param userApp
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package cn.pluss.platform.sxf.audit;
|
package cn.pluss.platform.sxf.audit;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import cn.pluss.platform.entity.MerchantChannelStatus;
|
||||||
import cn.pluss.platform.klk.LaKaLaUtility;
|
import cn.pluss.platform.klk.LaKaLaUtility;
|
||||||
import cn.pluss.platform.klk.LakalaConfig;
|
import cn.pluss.platform.klk.LakalaConfig;
|
||||||
import cn.pluss.platform.task.LklMerAuditHandler;
|
import cn.pluss.platform.task.LklMerAuditHandler;
|
||||||
|
|
@ -54,4 +55,16 @@ public class LklMerAuditServiceImpl {
|
||||||
"\t\"msg\": \"失败\"\n" +
|
"\t\"msg\": \"失败\"\n" +
|
||||||
"}";
|
"}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public MerchantChannelStatus queryMerchantChannelStatus(String customerNo,String externalCustomerNo){
|
||||||
|
return lklMerAuditHandler.queryMerchatChannelstatus(customerNo, externalCustomerNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,16 @@ import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.pluss.platform.MerchantAuditRecordService;
|
import cn.pluss.platform.MerchantAuditRecordService;
|
||||||
import cn.pluss.platform.entity.*;
|
import cn.pluss.platform.entity.*;
|
||||||
import cn.pluss.platform.exception.MsgException;
|
import cn.pluss.platform.exception.MsgException;
|
||||||
|
import cn.pluss.platform.klk.LaKaLaUtility;
|
||||||
|
import cn.pluss.platform.klk.LakalaConfig;
|
||||||
|
import cn.pluss.platform.klk.service.LklPayService;
|
||||||
|
import cn.pluss.platform.klk.service.impl.LaKalaInterfaceImpl;
|
||||||
import cn.pluss.platform.mapper.*;
|
import cn.pluss.platform.mapper.*;
|
||||||
import cn.pluss.platform.merchant.MerchantBaseInfoService;
|
import cn.pluss.platform.merchant.MerchantBaseInfoService;
|
||||||
import cn.pluss.platform.merchant.MerchantCashPlaceService;
|
import cn.pluss.platform.merchant.MerchantCashPlaceService;
|
||||||
import cn.pluss.platform.util.IpUtils;
|
import cn.pluss.platform.util.IpUtils;
|
||||||
import cn.pluss.platform.util.LogExceptionUtils;
|
import cn.pluss.platform.util.LogExceptionUtils;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -21,9 +26,11 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -63,9 +70,16 @@ public class LklMerAuditHandler{
|
||||||
private final MerchantStoreMapper merchantStoreMapper;
|
private final MerchantStoreMapper merchantStoreMapper;
|
||||||
private final MerchantImageMapper merchantImageMapper;
|
private final MerchantImageMapper merchantImageMapper;
|
||||||
|
|
||||||
|
private final LaKalaInterfaceImpl laKalaInterface;
|
||||||
|
|
||||||
private final RestTemplate restTemplate;
|
private final RestTemplate restTemplate;
|
||||||
|
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private LakalaConfig lakalaConfig;
|
||||||
|
|
||||||
|
|
||||||
public void auditHandler(Map<String,Object> map) {
|
public void auditHandler(Map<String,Object> map) {
|
||||||
execute(map);
|
execute(map);
|
||||||
}
|
}
|
||||||
|
|
@ -73,6 +87,7 @@ public class LklMerAuditHandler{
|
||||||
|
|
||||||
public void execute(Map<String,Object> map) {
|
public void execute(Map<String,Object> map) {
|
||||||
|
|
||||||
|
|
||||||
if(ObjectUtil.isEmpty(map)||!map.containsKey("status")){
|
if(ObjectUtil.isEmpty(map)||!map.containsKey("status")){
|
||||||
log.error("回调数据为空");
|
log.error("回调数据为空");
|
||||||
return;
|
return;
|
||||||
|
|
@ -108,6 +123,36 @@ public class LklMerAuditHandler{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public MerchantChannelStatus queryMerchatChannelstatus(String customerNo,String externalCustomerNo ){
|
||||||
|
Map map= laKalaInterface.queryMerchat(customerNo, externalCustomerNo);
|
||||||
|
if(ObjectUtil.isEmpty(map)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(map.containsKey("code")&&"000000".equals(map.get("code").toString())&&map.containsKey("data")&&ObjectUtil.isNotEmpty(map.get("data"))){
|
||||||
|
String data = LaKaLaUtility.decrypt(lakalaConfig.getPubKey(),map.get("data").toString());
|
||||||
|
JSONObject object=JSONObject.parseObject(data);
|
||||||
|
Map<String,Object> reqMap=new HashMap<>();
|
||||||
|
|
||||||
|
reqMap.put("customerNo",object.getJSONObject("customer").getString("customerNo"));
|
||||||
|
reqMap.put("contractId","query".concat(object.getJSONObject("customer").getString("openTime")));
|
||||||
|
reqMap.put("userNo",LaKalaInterfaceImpl.userNo);
|
||||||
|
reqMap.put("externalCustomerNo",object.getJSONObject("customer").getString("externalCustomerNo"));
|
||||||
|
reqMap.put("termNos",object.getJSONObject("customer").getString("termNo"));
|
||||||
|
|
||||||
|
reqMap.put("agencyNo",object.getJSONObject("customer").getString("agencyNo"));
|
||||||
|
reqMap.put("activeNo",object.getJSONObject("customer").getString("activeNo"));
|
||||||
|
reqMap.put("coreTermIds",object.getJSONArray("terminalInfo").toString());
|
||||||
|
|
||||||
|
return auditCallback(reqMap);
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public MerchantChannelStatus auditCallback(Map<String,Object> map) {
|
public MerchantChannelStatus auditCallback(Map<String,Object> map) {
|
||||||
MerchantChannelStatus merchantChannelStatus = new MerchantChannelStatus()
|
MerchantChannelStatus merchantChannelStatus = new MerchantChannelStatus()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue