支付宝支付接口
This commit is contained in:
parent
a21d135156
commit
5783656f0c
@ -93,16 +93,6 @@ public class AjaxResult extends HashMap<String, Object>
|
|||||||
return AjaxResult.success("操作成功", data);
|
return AjaxResult.success("操作成功", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回成功消息
|
|
||||||
*
|
|
||||||
* @param msg 返回内容
|
|
||||||
* @return 成功消息
|
|
||||||
*/
|
|
||||||
public static AjaxResult success(String msg)
|
|
||||||
{
|
|
||||||
return AjaxResult.success(msg, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回成功消息
|
* 返回成功消息
|
||||||
|
|||||||
@ -270,8 +270,9 @@
|
|||||||
and ra.rate_id = (
|
and ra.rate_id = (
|
||||||
select rate_id from xhpc_rate_time
|
select rate_id from xhpc_rate_time
|
||||||
where charging_station_id = cs.charging_station_id
|
where charging_station_id = cs.charging_station_id
|
||||||
|
and cs.rate_model_id = rate_model_id
|
||||||
and start_time <= #{date}
|
and start_time <= #{date}
|
||||||
and end_time >= #{date}
|
and replace(end_time, '00:00:00', '24:00:00') >= #{date}
|
||||||
and status = 0
|
and status = 0
|
||||||
and del_flag = 0)) money,
|
and del_flag = 0)) money,
|
||||||
(select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,cs.service_facilities ) and code
|
(select GROUP_CONCAT(dict_value) from xhpc_dict_biz where FIND_IN_SET(dict_key,cs.service_facilities ) and code
|
||||||
|
|||||||
@ -22,10 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.Calendar;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 历史订单
|
* 历史订单
|
||||||
@ -292,6 +289,11 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
Long terminalId = xhpc.getTerminalId();
|
Long terminalId = xhpc.getTerminalId();
|
||||||
Long historyOrderId = xhpc.getHistoryOrderId();
|
Long historyOrderId = xhpc.getHistoryOrderId();
|
||||||
Date data = Calendar.getInstance().getTime();
|
Date data = Calendar.getInstance().getTime();
|
||||||
|
|
||||||
|
//小时多少度电
|
||||||
|
BigDecimal v = new BigDecimal((endTime.getTime() - startTime.getTime())).divide(new BigDecimal(60000),2,RoundingMode.HALF_UP);
|
||||||
|
BigDecimal multiply = v.divide(xhpc.getChargingDegree(),2,RoundingMode.HALF_UP);
|
||||||
|
|
||||||
//1时间没有跨天
|
//1时间没有跨天
|
||||||
DateTime parse = DateUtil.parse(DateUtil.format(startTime, "yyyy-MM-dd"), "yyyy-MM-dd");
|
DateTime parse = DateUtil.parse(DateUtil.format(startTime, "yyyy-MM-dd"), "yyyy-MM-dd");
|
||||||
DateTime parse1 = DateUtil.parse(DateUtil.format(endTime, "yyyy-MM-dd"), "yyyy-MM-dd");
|
DateTime parse1 = DateUtil.parse(DateUtil.format(endTime, "yyyy-MM-dd"), "yyyy-MM-dd");
|
||||||
@ -306,10 +308,10 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval();
|
XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval();
|
||||||
xhpcSt.setStatus(endHour+1);
|
xhpcSt.setStatus(endHour+1);
|
||||||
xhpcSt.setChargingDegree(xhpc.getChargingDegree());
|
xhpcSt.setChargingDegree(xhpc.getChargingDegree());
|
||||||
xhpcSt.setChargingTime(new BigDecimal(xhpc.getChargingTimeNumber()/3600).setScale(2, RoundingMode.HALF_UP));
|
xhpcSt.setChargingTime(new BigDecimal(xhpc.getChargingTimeNumber()).divide(new BigDecimal(3600),2, RoundingMode.HALF_UP));
|
||||||
xhpcSt.setChargingNumber(1);
|
xhpcSt.setChargingNumber(1);
|
||||||
xhpcSt.setPowerPrice(xhpc.getActPowerPrice());
|
xhpcSt.setPowerPrice(xhpc.getPowerPriceTotal());
|
||||||
xhpcSt.setServicePrice(xhpc.getActServicePrice());
|
xhpcSt.setServicePrice(xhpc.getServicePriceTotal());
|
||||||
xhpcSt.setTotalPrice(xhpc.getTotalPrice());
|
xhpcSt.setTotalPrice(xhpc.getTotalPrice());
|
||||||
xhpcSt.setPromotionDiscount(xhpc.getPromotionDiscount());
|
xhpcSt.setPromotionDiscount(xhpc.getPromotionDiscount());
|
||||||
xhpcSt.setActPrice(xhpc.getActPrice());
|
xhpcSt.setActPrice(xhpc.getActPrice());
|
||||||
@ -329,24 +331,33 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
if(xhpc.getSource()==1){
|
if(xhpc.getSource()==1){
|
||||||
xhpcSt.setInternetUserId(xhpc.getUserId());
|
xhpcSt.setInternetUserId(xhpc.getUserId());
|
||||||
}
|
}
|
||||||
|
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), DateUtil.formatTime(endTime), rateModelId);
|
||||||
|
Map<String, Object> map = reatTimeList.get(0);
|
||||||
|
xhpcSt.setElecPriceEvcs(new BigDecimal(map.get("powerFee").toString()));
|
||||||
|
xhpcSt.setServicePriceEvcs(new BigDecimal(map.get("serviceFee").toString()));
|
||||||
|
xhpcSt.setStartTimeEvcs(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss"));
|
||||||
|
xhpcSt.setEndTimeEvcs(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss"));
|
||||||
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
||||||
}else {
|
}else {
|
||||||
//跨时段
|
//跨时段
|
||||||
//总共时段 endHour+1-startHour
|
//总共时段 endHour+1-startHour
|
||||||
addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour);
|
String yyyyMMdd = DateUtil.format(startTime, "yyyy-MM-dd");
|
||||||
|
addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
//跨天
|
//跨天
|
||||||
Date updateTime2= DateUtil.parse(parse+" 23:59:59");
|
Date updateTime2= DateUtil.parse(parse+" 23:59:59");
|
||||||
int startHour = DateUtil.hour(startTime, true);
|
int startHour = DateUtil.hour(startTime, true);
|
||||||
int endHour = DateUtil.hour(updateTime2, true);
|
int endHour = DateUtil.hour(updateTime2, true);
|
||||||
addInterval(xhpc, startTime, updateTime2, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour);
|
String yyyyMMdd = DateUtil.format(startTime, "yyyy-MM-dd");
|
||||||
|
addInterval(xhpc, startTime, updateTime2, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply);
|
||||||
//明天
|
//明天
|
||||||
DateTime tomorrow = DateUtil.offsetDay(startTime,1);
|
DateTime tomorrow = DateUtil.offsetDay(startTime,1);
|
||||||
Date startTime3 =DateUtil.beginOfDay(tomorrow);
|
Date startTime3 =DateUtil.beginOfDay(tomorrow);
|
||||||
int startHour1 = DateUtil.hour(startTime3, true);
|
int startHour1 = DateUtil.hour(startTime3, true);
|
||||||
int endHour1 = DateUtil.hour(endTime, true);
|
int endHour1 = DateUtil.hour(endTime, true);
|
||||||
addInterval(xhpc, startTime3, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour1, endHour1);
|
String yyyyMMdd1 = DateUtil.format(startTime3, "yyyy-MM-dd");
|
||||||
|
addInterval(xhpc, startTime3, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour1, endHour1,yyyyMMdd1,multiply);
|
||||||
}
|
}
|
||||||
//修改状态
|
//修改状态
|
||||||
//修改历史订单表状态
|
//修改历史订单表状态
|
||||||
@ -358,23 +369,23 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addStatisTime(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour) {
|
private void addStatisTime(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour,String yyyyMMdd,BigDecimal multiply) {
|
||||||
|
|
||||||
BigDecimal number = new BigDecimal(endHour + 1 - startHour);
|
BigDecimal number = new BigDecimal(endHour + 1 - startHour);
|
||||||
for (int i = startHour; i < endHour + 1; i++) {
|
for (int i = startHour; i < endHour + 1; i++) {
|
||||||
//获取费率
|
//获取费率
|
||||||
if (i == startHour) {
|
if (i == startHour) {
|
||||||
//开始时间、结束时间
|
//开始时间、结束时间
|
||||||
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, DateUtil.formatTime(startTime), i + ":59:59");
|
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, DateUtil.formatTime(startTime), i + ":59:59",yyyyMMdd,multiply);
|
||||||
} else if (i != endHour) {
|
} else if (i != endHour) {
|
||||||
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", i + ":59:59");
|
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", i + ":59:59",yyyyMMdd,multiply);
|
||||||
} else {
|
} else {
|
||||||
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", DateUtil.formatTime(endTime));
|
addStatis(xhpc, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, i, number, i + ":00:00", DateUtil.formatTime(endTime),yyyyMMdd,multiply);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addInterval(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour) {
|
private void addInterval(XhpcChargeHistoryOrder xhpc, Date startTime, Date endTime, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int startHour, int endHour,String yyyyMMdd,BigDecimal multiply) {
|
||||||
Date data = Calendar.getInstance().getTime();
|
Date data = Calendar.getInstance().getTime();
|
||||||
if(endHour==startHour){
|
if(endHour==startHour){
|
||||||
//没有跨时段
|
//没有跨时段
|
||||||
@ -405,43 +416,79 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
if(xhpc.getSource()==1){
|
if(xhpc.getSource()==1){
|
||||||
xhpcSt.setInternetUserId(xhpc.getUserId());
|
xhpcSt.setInternetUserId(xhpc.getUserId());
|
||||||
}
|
}
|
||||||
|
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), DateUtil.formatTime(endTime), rateModelId);
|
||||||
|
Map<String, Object> map = reatTimeList.get(0);
|
||||||
|
xhpcSt.setElecPriceEvcs(new BigDecimal(map.get("powerFee").toString()));
|
||||||
|
xhpcSt.setServicePriceEvcs(new BigDecimal(map.get("serviceFee").toString()));
|
||||||
|
xhpcSt.setStartTimeEvcs(DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss"));
|
||||||
|
xhpcSt.setEndTimeEvcs(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss"));
|
||||||
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
||||||
}else{
|
}else{
|
||||||
//跨时段
|
//跨时段
|
||||||
//总共时段 endHour+1-startHour
|
//总共时段 endHour+1-startHour
|
||||||
addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour);
|
addStatisTime(xhpc, startTime, endTime, rateModelId, operatorId, chargingStationId, terminalId, historyOrderId, startHour, endHour,yyyyMMdd,multiply);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addStatis(XhpcChargeHistoryOrder xhpc, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, String start, String end) {
|
private void addStatis(XhpcChargeHistoryOrder xhpc, Long rateModelId, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, String start, String end,String yyyyMMdd,BigDecimal multiply) {
|
||||||
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, end, rateModelId);
|
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, end, rateModelId);
|
||||||
if (reatTimeList != null && reatTimeList.size() > 0) {
|
if (reatTimeList != null && reatTimeList.size() > 0) {
|
||||||
if (reatTimeList.size() == 1) {
|
if (reatTimeList.size() == 1) {
|
||||||
addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, 0, 1);
|
addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, -1, 1,start,end,yyyyMMdd,multiply);
|
||||||
} else {
|
} else {
|
||||||
for (int j = 0; j < reatTimeList.size(); j++) {
|
for (int j = 0; j < reatTimeList.size(); j++) {
|
||||||
addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, j, 2);
|
addSte(xhpc, operatorId, chargingStationId, terminalId, historyOrderId, status, number, reatTimeList, j, 2,start,end,yyyyMMdd,multiply);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSte(XhpcChargeHistoryOrder xhpc, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, List<Map<String, Object>> reatTimeList, int j, int type) {
|
private void addSte(XhpcChargeHistoryOrder xhpc, Long operatorId, Long chargingStationId, Long terminalId, Long historyOrderId, int status, BigDecimal number, List<Map<String, Object>> reatTimeList, int j, int type, String start, String end,String yyyyMMdd,BigDecimal multiply) {
|
||||||
Date data = Calendar.getInstance().getTime();
|
Date data = Calendar.getInstance().getTime();
|
||||||
Map<String, Object> map = reatTimeList.get(j);
|
Map<String, Object> map =new HashMap<>();
|
||||||
|
if(j==-1){
|
||||||
|
map = reatTimeList.get(0);
|
||||||
|
}else{
|
||||||
|
map = reatTimeList.get(j);
|
||||||
|
}
|
||||||
BigDecimal size = new BigDecimal(reatTimeList.size());
|
BigDecimal size = new BigDecimal(reatTimeList.size());
|
||||||
long time3 = DateUtil.parse(map.get("endTime").toString()).getTime();
|
XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval();
|
||||||
long time4 = DateUtil.parse(map.get("startTime").toString()).getTime();
|
long time3 =0L;
|
||||||
BigDecimal time5 = new BigDecimal((time3-time4)/6000);
|
long time4 =0L;
|
||||||
|
if(j==-1){
|
||||||
|
time3 = DateUtil.parse(end).getTime();
|
||||||
|
time4 = DateUtil.parse(start).getTime();
|
||||||
|
xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+start);
|
||||||
|
xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+end);
|
||||||
|
}else if(j==0){
|
||||||
|
time3 = DateUtil.parse(map.get("endTime").toString()).getTime();
|
||||||
|
time4 = DateUtil.parse(start).getTime();
|
||||||
|
xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+start);
|
||||||
|
xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+map.get("endTime").toString());
|
||||||
|
}else if(j!=reatTimeList.size()){
|
||||||
|
time3 = DateUtil.parse(map.get("endTime").toString()).getTime();
|
||||||
|
time4 = DateUtil.parse(map.get("startTime").toString()).getTime();
|
||||||
|
xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+map.get("startTime").toString());
|
||||||
|
xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+map.get("endTime").toString());
|
||||||
|
}else{
|
||||||
|
time3 = DateUtil.parse(end).getTime();
|
||||||
|
time4 = DateUtil.parse(map.get("startTime").toString()).getTime();
|
||||||
|
xhpcSt.setStartTimeEvcs(yyyyMMdd+" "+map.get("startTime").toString());
|
||||||
|
xhpcSt.setEndTimeEvcs(yyyyMMdd+" "+end);
|
||||||
|
}
|
||||||
|
BigDecimal time5 = new BigDecimal((time3-time4)).divide(new BigDecimal(60000),2, RoundingMode.HALF_UP);
|
||||||
|
//每分钟多少度电
|
||||||
|
BigDecimal decimal = multiply.multiply(time5).setScale(2,RoundingMode.HALF_UP);
|
||||||
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
||||||
BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString());
|
BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString());
|
||||||
XhpcStatisticsTimeInterval xhpcSt = new XhpcStatisticsTimeInterval();
|
xhpcSt.setElecPriceEvcs(powerFee);
|
||||||
|
xhpcSt.setServicePriceEvcs(serviceFee);
|
||||||
xhpcSt.setStatus(status+1);
|
xhpcSt.setStatus(status+1);
|
||||||
xhpcSt.setChargingDegree(xhpc.getChargingDegree());
|
xhpcSt.setChargingDegree(decimal);
|
||||||
xhpcSt.setChargingTime(time5);
|
xhpcSt.setChargingTime(time5);
|
||||||
xhpcSt.setChargingNumber(1);
|
xhpcSt.setChargingNumber(1);
|
||||||
BigDecimal powerFee1 = powerFee.multiply(time5).setScale(2, RoundingMode.HALF_UP);
|
BigDecimal powerFee1 = powerFee.multiply(decimal).setScale(2, RoundingMode.HALF_UP);
|
||||||
BigDecimal serviceFee1 = serviceFee.multiply(time5).setScale(2, RoundingMode.HALF_UP);
|
BigDecimal serviceFee1 = serviceFee.multiply(decimal).setScale(2, RoundingMode.HALF_UP);
|
||||||
xhpcSt.setPowerPrice(powerFee1);
|
xhpcSt.setPowerPrice(powerFee1);
|
||||||
xhpcSt.setServicePrice(serviceFee1);
|
xhpcSt.setServicePrice(serviceFee1);
|
||||||
xhpcSt.setTotalPrice(powerFee1.add(serviceFee1));
|
xhpcSt.setTotalPrice(powerFee1.add(serviceFee1));
|
||||||
@ -476,6 +523,7 @@ public class XhpcHistoryOrderController extends BaseController {
|
|||||||
if(xhpc.getSource()==1){
|
if(xhpc.getSource()==1){
|
||||||
xhpcSt.setInternetUserId(xhpc.getUserId());
|
xhpcSt.setInternetUserId(xhpc.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
xhpcStatisticsService.addStatisticsTime(xhpcSt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -81,6 +81,12 @@
|
|||||||
<version>3.0.0</version>
|
<version>3.0.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-all</artifactId>
|
||||||
|
<version>4.6.1</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -1,22 +1,34 @@
|
|||||||
package com.xhpc.payment.controller;
|
package com.xhpc.payment.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.map.MapUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alipay.api.AlipayApiException;
|
import com.alipay.api.AlipayApiException;
|
||||||
import com.alipay.api.AlipayClient;
|
import com.alipay.api.AlipayClient;
|
||||||
import com.alipay.api.DefaultAlipayClient;
|
import com.alipay.api.DefaultAlipayClient;
|
||||||
|
import com.alipay.api.domain.AlipayTradeAppPayModel;
|
||||||
import com.alipay.api.internal.util.AlipaySignature;
|
import com.alipay.api.internal.util.AlipaySignature;
|
||||||
import com.alipay.api.request.AlipayTradeCreateRequest;
|
import com.alipay.api.request.AlipayTradeCreateRequest;
|
||||||
|
import com.alipay.api.response.AlipayTradeAppPayResponse;
|
||||||
import com.alipay.api.response.AlipayTradeCreateResponse;
|
import com.alipay.api.response.AlipayTradeCreateResponse;
|
||||||
import com.xhpc.common.core.utils.DateUtils;
|
import com.xhpc.common.core.constant.HttpStatus;
|
||||||
|
import com.xhpc.common.core.constant.StatusConstants;
|
||||||
|
import com.xhpc.common.core.utils.StringUtils;
|
||||||
|
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||||
|
import com.xhpc.payment.domain.XhpcRechargeOrder;
|
||||||
|
import com.xhpc.payment.mapper.XhpcUserAccountStatementMapper;
|
||||||
|
import com.xhpc.payment.service.IXhpcRechargeOrderService;
|
||||||
|
import com.xhpc.payment.service.IXhpcRefundOrderService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -28,41 +40,73 @@ public class AlipayPaymentController {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Environment environment;
|
private Environment environment;
|
||||||
|
@Autowired
|
||||||
|
private IXhpcRechargeOrderService iXhpcRechargeOrderService;
|
||||||
|
//@Autowired
|
||||||
|
//private XhpcUserAccountStatementMapper xhpcUserAccountStatementMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IXhpcRefundOrderService iXhpcRefundOrderService;
|
||||||
|
|
||||||
@GetMapping("/payment")
|
@PostMapping("/payment")
|
||||||
@ApiOperation(value = "支付宝支付")
|
@ApiOperation(value = "支付宝支付")
|
||||||
private String newPay() throws Exception {
|
private AjaxResult payment(HttpServletRequest servletRequest, @RequestBody Map<String, Object> map) throws Exception {
|
||||||
|
String openid = StringUtils.valueOf(map.get("openid"));
|
||||||
|
if (StringUtils.isEmpty(openid)) {
|
||||||
|
return AjaxResult.error(HttpStatus.NOT_NULL, "openid不能为空");
|
||||||
|
}
|
||||||
|
//总金额(是)订单总金额,单位为元
|
||||||
|
String amount = StringUtils.valueOf(map.get("amount"));
|
||||||
|
if (StringUtils.isEmpty(amount)) {
|
||||||
|
return AjaxResult.error(HttpStatus.NOT_NULL, "充值金额不能为空");
|
||||||
|
}else{
|
||||||
|
if(new BigDecimal(5).compareTo(new BigDecimal(amount))==1){
|
||||||
|
return AjaxResult.error(HttpStatus.NOT_NULL, "充值金额不能少于5元");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//用户信息id
|
||||||
|
String userId = StringUtils.valueOf(map.get("userId"));
|
||||||
|
if (StringUtils.isEmpty(userId)) {
|
||||||
|
return AjaxResult.error(HttpStatus.NOT_NULL, "用户信息不能为空");
|
||||||
|
}
|
||||||
|
Map<String, Object> refundOrder = iXhpcRefundOrderService.getNotRefundOrder(Long.parseLong(userId));
|
||||||
|
if (StringUtils.isNotNull(refundOrder)) {
|
||||||
|
return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "用户存正在退款");
|
||||||
|
}
|
||||||
|
String orderNumber = StringUtils.numFormat(Long.parseLong(userId), 1, StatusConstants.FLOWING_WATER_RECHARGE_TYPE);
|
||||||
|
|
||||||
String orderNumber = "alipay" + DateUtils.timePath();
|
//生成充值订单
|
||||||
|
XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId, BigDecimal.valueOf(Double.parseDouble(amount)), "2", orderNumber);
|
||||||
|
String attach = attachYu(StringUtils.valueOf(xhpcRechargeOrder.getRechargeOrderId()), StringUtils.valueOf(amount), null, orderNumber);
|
||||||
|
|
||||||
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", environment.getProperty("ALIPAYAPPID"), environment.getProperty("ALIPAYPRIVATEKEY"), "json", "utf-8", environment.getProperty("ALIPAYPUBLICKEY"), "RSA2");
|
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", environment.getProperty("ALIPAYAPPID"), environment.getProperty("ALIPAYPRIVATEKEY"), "json", "utf-8", environment.getProperty("ALIPAYPUBLICKEY"), "RSA2");
|
||||||
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
|
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
|
||||||
JSONObject json = new JSONObject();
|
|
||||||
String out_trade_no = orderNumber;
|
request.setBizContent("{" +
|
||||||
//订单号
|
"\"out_trade_no\":\""+orderNumber+"\"," +
|
||||||
json.put("out_trade_no", out_trade_no);
|
"\"total_amount\":"+amount+"," +
|
||||||
//金额 这里的金额是以元为单位的可以不转换但必须是字符串
|
"\"subject\":\"小华充电\"," +
|
||||||
json.put("total_amount", "0.01");
|
"\"timeout_express\":\"30m\"," +
|
||||||
//描述
|
"\"buyer_id\":\""+openid+"\"" +
|
||||||
json.put("subject", "测试");
|
"}");
|
||||||
//用户唯一标识id 这里必须使用buyer_id 参考文档
|
//"\"passback_params\":\""+attach+"\"," +
|
||||||
json.put("buyer_id", "123");
|
request.setNotifyUrl(environment.getProperty("ALIPAYPSERVERDOMAIN"));
|
||||||
//对象转化为json字符串
|
|
||||||
String jsonStr = json.toString();
|
|
||||||
//商户通过该接口进行交易的创建下单
|
|
||||||
request.setBizContent(jsonStr);
|
|
||||||
request.setNotifyUrl("https://cdz.project2.tingsun.net/alipay/notifyUrl");//回调地址
|
|
||||||
try {
|
try {
|
||||||
//使用的是execute
|
//这里和普通的接口调用不同,使用的是sdkExecute
|
||||||
AlipayTradeCreateResponse response = alipayClient.execute(request);
|
AlipayTradeCreateResponse response = alipayClient.execute(request);
|
||||||
String trade_no = response.getTradeNo();//获取返回的tradeNO。
|
if(response.isSuccess()){
|
||||||
|
String trade_no = response.getTradeNo();// 获取返回的tradeNO。
|
||||||
|
return AjaxResult.success(trade_no);
|
||||||
|
} else {
|
||||||
|
return AjaxResult.error("生成订单失败,请稍后在试!");
|
||||||
|
}
|
||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return "";
|
return AjaxResult.error("生成订单失败,请稍后在试");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 2 * 支付宝服务器异步通知url
|
* 2 * 支付宝服务器异步通知url
|
||||||
* 3 * @throws Exception
|
* 3 * @throws Exception
|
||||||
@ -105,4 +149,16 @@ public class AlipayPaymentController {
|
|||||||
System.out.println(AlipaySignature.getSignCheckContentV1(params));
|
System.out.println(AlipaySignature.getSignCheckContentV1(params));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//附加参数
|
||||||
|
public String attachYu(String id, String money, String payStyle, String out_trade_no) {
|
||||||
|
// 发送请求参数 业务参数
|
||||||
|
StringBuilder attachSB = new StringBuilder();
|
||||||
|
attachSB.append(",{\"customerId\":" + id);
|
||||||
|
attachSB.append(",\"money\":\"" + money + "\"");
|
||||||
|
attachSB.append(",\"out_trade_no\":\"" + out_trade_no + "\"}");
|
||||||
|
String attach = attachSB.substring(1);
|
||||||
|
return attach;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,10 +43,10 @@ SERVERDOMAIN: "http://xhpc.scxhua.com/prod-api/xhpc-payment/wx/paymentCallback"
|
|||||||
WXTRANSFERS: "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
|
WXTRANSFERS: "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
|
||||||
|
|
||||||
#支付宝支付回调地址
|
#支付宝支付回调地址
|
||||||
ALIPAYPSERVERDOMAIN: "https://cdz.project2.tingsun.net/alipay/paymentCallback"
|
ALIPAYPSERVERDOMAIN: "https://xhpc.scxhua.com/prod-api/alipay/notifyUrl"
|
||||||
#支付宝公钥
|
#支付宝公钥
|
||||||
ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5NOLLMj/cWU+SOZ6NR6vXnmeEZPq7UYeuyPvouFzqphQ9nuGPB7GkhZQnzGdhXVnUWw01HjezDzOkKCW9Jl4cG6+tVyqJt4FWrAylEeSxkbnNLeRohXg1ZaBV4hU76Y/WOW2R4uHD/9oX9pna7U8NJJJrqQiBdRAjSTt1cHTgXlkDKzhmiBm6Nw71rZeaETeBOnq3FnQUc91PFhmJRbrVCjDxA7gJryxRadHGBJDlgWkzTs09Q6PVpNj5x+QWtSawQgs5EEZNBh5T6AhmjlJFd4F9AsaNzcMrZGXVRGc3QcB3l+zP1nmmT7EZed1nIpjpQs5zGYFTA/yzvYh+WJ7hQIDAQAB"
|
ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjHDksTgZTpf0wh7oeTVRp0h3SqzTM2smjEJnx9jF1+q3WSXLRB4OzSzq7VsJ/szcyK10ZGO5PxeQ4u9GAG/U+7xhs7ei1cJB/Er55Sg9SbjfkTpwlDv181UJCRJJ/IAcqyqezwTpB8e2trYmHKovUdt0KR9/tVkGa7hsNd5GfxTOUaAFc3zADqRVM+wGimtG0NYfOF2f8tkmBEAiMMLKq5pbAnHU723a1cm/nfVp7gvXfsnO0k2GvRuHzb8mxIhWLiAnwdK9gEu5za/jWxo/xIvf2sdJPYdWj+yfyzA2e1fJkx4uRUzX31CXxZvP2/tfEcnTdI0gxN+OH2eAMiPVswIDAQAB"
|
||||||
#支付宝私钥
|
#应用私钥
|
||||||
ALIPAYPRIVATEKEY: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDk04ssyP9xZT5I5no1Hq9eeZ4Rk+rtRh67I++i4XOqmFD2e4Y8HsaSFlCfMZ2FdWdRbDTUeN7MPM6QoJb0mXhwbr61XKom3gVasDKUR5LGRuc0t5GiFeDVloFXiFTvpj9Y5bZHi4cP/2hf2mdrtTw0kkmupCIF1ECNJO3VwdOBeWQMrOGaIGbo3DvWtl5oRN4E6ercWdBRz3U8WGYlFutUKMPEDuAmvLFFp0cYEkOWBaTNOzT1Do9Wk2PnH5Ba1JrBCCzkQRk0GHlPoCGaOUkV3gX0Cxo3NwytkZdVEZzdBwHeX7M/WeaZPsRl53WcimOlCznMZgVMD/LO9iH5YnuFAgMBAAECggEAML3+/2MxRm5SfiTaE0aeBHnTedsQR8qP8T0OZpuvj78yP87AIT5M/gFS2xYuf6cqguWRu1Cj5M1vEs+iWCf4x7pPVUKP3AefDFpL69nzIdkolsojc2tFoTmWA5c+wG2hQMZttX+7HWVCTmivbvoEAQ7IMzMzLBqyRV6AavAGpaVWzmoYFZMX5qMwqucOu2voQ/S5qkJUaQJmTzwInsMvLl7VZN5eJBrlLaKHaTCdW45b6HYvi+fdabq5TQ5J2sMMdqaO4t73iUJnwlf/qvVrhDSCKPGqE64gk4kq9Qcgi+viQp8x/mzMGeU+9avYKG3lcnUGXfHMTl91KciaHfU7AQKBgQD32U3xneeZhcWm4HQitAwoSW1GvCaaSCqu4wZiVhHYclkHbdtl5xpMbUvwDtEMlHI/gvvEs+XDoFVa8zUPXgBsO00vKNAkSqoeE+7lUaQTG8rTtX9lFiJDkX0v9NHzeyVzZi8ZxkpT6GFV2eDRa/+XGht7KdRoiSpvvvEK0QslfQKBgQDsWhWcz0WcpjjsbtrsSoutX2lR180g/2VpKU4Od4OSMYI03DhpCevembgclFSbRpsIvaqIbCeZEcidkaGcjIJ7N8ZVJF/lEEWzUNKAJ1WRozmptXQIXA2E3IZGQPZai8Hm0C+idy0DrXdPPs7JX9EcDN8m40M7DYAS9REyB+5sqQKBgQDnwOFaOZ3Tdzu/dAgEXzky/p3Y05yBDVQkHhLdJsAfFaVcBgRuP+/eYSDtwt0FF1XRP4hugQ0qpKTLm7kUuoBItBbTLyWZmduCrn7nHTT/zTAWUJNkEZNOfR+DFTiwpIj7ZCRMxJbB6PwDC+1lxcfEIdxqiU2dxgzRWskHpTr3/QKBgB3HJ8vu7WVUJ/3Z5ak5pyl7yOgv2T9cDinWs2ftNN15cV85k73gKyCLm3+2TIaXuba7Nr4jakXF0NHRZFw188aUe1+EyrQwfaee+jZ9PjGwL/aqzuiyuF1R73TwgFleHFr5RdchTsGU3GBWmHUUpmLzWDYtEe5hwA4jZDw6dZapAoGBAKsr9GImz8vsKjfzQJMj8OC18ch+U29nwkhjHPnjtE4Zjf7izUC2x8b1EWa59pqXIPv9Kgb2aP2MX/fQHtUwNaRza9vfbRcG4qaATKWNIsV2BR+yI/SP7Hdt7fNfv1Jbivj42zj0HyTNXA7E4GPiZpKMYaXt56JouyoRbBnMoakO"
|
ALIPAYPRIVATEKEY: "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCG0ynEzKW/LwXLgtcOQ9BQCWN1ILdK8/X8DIiKy2XiebirTkU2LF9u6NpNKju3TIZTq02GBpjz/5kuCdXoFTqZXB6W/6vDbRskIT42ctT6nzZtkBaYt4BaC/HSPWAQJ+9z+JtKr8bDYUgN/9YwdwV/J3sEg/HYPlsXRczrnJdfhR/d5zno1V6avK2p052/IWKV5daZg3aQpDDi7QdZp8W88hbrItb0aoaDwhsq90ZBDA8ZjUUUAiqnSFPl0OxBAvwbS1U1Y7SYQd6AeD3M9MugrDjPNng+TeZgZ0zXaB2uh3u+i1PsDvQAEq72MM+1z097de2t01u6jmvsqFPj9ANrAgMBAAECggEAZln344bYbQLti0mQqSuiAKCf+FMV0rjRjL6XCYbPmdZ98s5AjJey+yeaUeo12zkk4G+zMoPfqZvoVaLx2HYFPldIgakmY/14FT2HVR5nwLsNPq+b9+OWdMWMluYw/xLSHWAlw9UdN0WqxbXqjHBOo/D82riv6FGuJUTABD2kTMZQngzOaoMcgrfIb4y5f2oTzXXvOidOA5u2UW9vbPaV/G+eqvsBTMNgJUY3uYO0fMvGVrQ6u5lHPiZzYjdIhyYXBa0L7MUs6oi4YcJwSHt0OXrxVPjJFR6Kpl2hkzOptgrhn8Jun0DYCd0s02NxIaVLkF6pNhqZaovLWTcCoal+wQKBgQDEfVQoOZ5eZYtL6XEnJBH7alVT87RywgDc4Jz4AYIKijt4KWZCWqu6GoR3Ku/u+/PWAak3j9pHv0HoKVAmDANJOU0W6pyUXNXLoeYlc/2kOmlRHbNReAnaUwHauIRiUOfqZ8+qWS5Ly6TmuF0GJRrbXr1gah75Ow0T02af618IlwKBgQCvqLUWwEpFSt1EZ6Y20jOm75RQgl+0wckwdTaoPyE6qwHkuPXG0nILD0OqgWPY2iYUR6DIfBuv6CkSvGgvY7ouj876hsofSW4d7gitt5+ybTjtyUDOCQk5g3QkRmFW9SAAbWTF7VvyiIqlICWEIuMQ1hJdKQK4/6nm1IqgSoTCTQKBgEk7lOQxJW91VUeDyCKYdQNJjGfvyu+CkyO/q4FbvoYDI0sT0wMkHCEOxRRNMoPV7/lxQQpuWSKoi/3ld/PWQltGOg8yfg1l1GFDBC4tXvmYs6wB79WLcdCnY2eLofuqv+VDr8iD2JdzXRCI4lLp/WqJkveeVdD6S1N6VSOBbDgdAoGAJF54x/IeLoSWlXAkYNtaqGiYO6cSq7knr6nFHEad2ajIZpPJB1ZRGGsbpnTNuHtKQQ6ngnr3vI8D2gY6R/2M8dECmKpJtPqeGwJKt7T6EpY8oDb3/PCwAUFvTYdo5fkwnAYKRFSloeyVUCT8v4P9oWHBQZqZHraIdetxnEhxfk0CgYAaqweBwOdAiRk/ivbgtf9fhSSnM3p40KZ9MF66wsnb4oc/+qH/Nq/SxeQBIIwx0ouW7Ho7xr0yYcmnnrk+xEHfDsGSxNYEd0NClGRBpPCy0ynEpsXeaj2yjr0zWzcDYI/wRaDpzCcUQf8BJ4l++klXvwhGvJiRDOFaLPiZ9zscBA=="
|
||||||
#支付宝appid
|
#支付宝appid
|
||||||
ALIPAYAPPID: "2021002156615717"
|
ALIPAYAPPID: "2021002156615717"
|
||||||
|
|||||||
@ -27,7 +27,7 @@ spring:
|
|||||||
WXGETJSCODE: "https://api.weixin.qq.com/sns/jscode2session?appid=wxd0a48e00319ef8a7&secret=e26d9088b58e24af69411d5933cece47&js_code="
|
WXGETJSCODE: "https://api.weixin.qq.com/sns/jscode2session?appid=wxd0a48e00319ef8a7&secret=e26d9088b58e24af69411d5933cece47&js_code="
|
||||||
#支付宝公钥
|
#支付宝公钥
|
||||||
ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjHDksTgZTpf0wh7oeTVRp0h3SqzTM2smjEJnx9jF1+q3WSXLRB4OzSzq7VsJ/szcyK10ZGO5PxeQ4u9GAG/U+7xhs7ei1cJB/Er55Sg9SbjfkTpwlDv181UJCRJJ/IAcqyqezwTpB8e2trYmHKovUdt0KR9/tVkGa7hsNd5GfxTOUaAFc3zADqRVM+wGimtG0NYfOF2f8tkmBEAiMMLKq5pbAnHU723a1cm/nfVp7gvXfsnO0k2GvRuHzb8mxIhWLiAnwdK9gEu5za/jWxo/xIvf2sdJPYdWj+yfyzA2e1fJkx4uRUzX31CXxZvP2/tfEcnTdI0gxN+OH2eAMiPVswIDAQAB"
|
ALIPAYPUBLICKEY: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjHDksTgZTpf0wh7oeTVRp0h3SqzTM2smjEJnx9jF1+q3WSXLRB4OzSzq7VsJ/szcyK10ZGO5PxeQ4u9GAG/U+7xhs7ei1cJB/Er55Sg9SbjfkTpwlDv181UJCRJJ/IAcqyqezwTpB8e2trYmHKovUdt0KR9/tVkGa7hsNd5GfxTOUaAFc3zADqRVM+wGimtG0NYfOF2f8tkmBEAiMMLKq5pbAnHU723a1cm/nfVp7gvXfsnO0k2GvRuHzb8mxIhWLiAnwdK9gEu5za/jWxo/xIvf2sdJPYdWj+yfyzA2e1fJkx4uRUzX31CXxZvP2/tfEcnTdI0gxN+OH2eAMiPVswIDAQAB"
|
||||||
#支付宝私钥
|
#应用私钥
|
||||||
ALIPAYPRIVATEKEY: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDk04ssyP9xZT5I5no1Hq9eeZ4Rk+rtRh67I++i4XOqmFD2e4Y8HsaSFlCfMZ2FdWdRbDTUeN7MPM6QoJb0mXhwbr61XKom3gVasDKUR5LGRuc0t5GiFeDVloFXiFTvpj9Y5bZHi4cP/2hf2mdrtTw0kkmupCIF1ECNJO3VwdOBeWQMrOGaIGbo3DvWtl5oRN4E6ercWdBRz3U8WGYlFutUKMPEDuAmvLFFp0cYEkOWBaTNOzT1Do9Wk2PnH5Ba1JrBCCzkQRk0GHlPoCGaOUkV3gX0Cxo3NwytkZdVEZzdBwHeX7M/WeaZPsRl53WcimOlCznMZgVMD/LO9iH5YnuFAgMBAAECggEAML3+/2MxRm5SfiTaE0aeBHnTedsQR8qP8T0OZpuvj78yP87AIT5M/gFS2xYuf6cqguWRu1Cj5M1vEs+iWCf4x7pPVUKP3AefDFpL69nzIdkolsojc2tFoTmWA5c+wG2hQMZttX+7HWVCTmivbvoEAQ7IMzMzLBqyRV6AavAGpaVWzmoYFZMX5qMwqucOu2voQ/S5qkJUaQJmTzwInsMvLl7VZN5eJBrlLaKHaTCdW45b6HYvi+fdabq5TQ5J2sMMdqaO4t73iUJnwlf/qvVrhDSCKPGqE64gk4kq9Qcgi+viQp8x/mzMGeU+9avYKG3lcnUGXfHMTl91KciaHfU7AQKBgQD32U3xneeZhcWm4HQitAwoSW1GvCaaSCqu4wZiVhHYclkHbdtl5xpMbUvwDtEMlHI/gvvEs+XDoFVa8zUPXgBsO00vKNAkSqoeE+7lUaQTG8rTtX9lFiJDkX0v9NHzeyVzZi8ZxkpT6GFV2eDRa/+XGht7KdRoiSpvvvEK0QslfQKBgQDsWhWcz0WcpjjsbtrsSoutX2lR180g/2VpKU4Od4OSMYI03DhpCevembgclFSbRpsIvaqIbCeZEcidkaGcjIJ7N8ZVJF/lEEWzUNKAJ1WRozmptXQIXA2E3IZGQPZai8Hm0C+idy0DrXdPPs7JX9EcDN8m40M7DYAS9REyB+5sqQKBgQDnwOFaOZ3Tdzu/dAgEXzky/p3Y05yBDVQkHhLdJsAfFaVcBgRuP+/eYSDtwt0FF1XRP4hugQ0qpKTLm7kUuoBItBbTLyWZmduCrn7nHTT/zTAWUJNkEZNOfR+DFTiwpIj7ZCRMxJbB6PwDC+1lxcfEIdxqiU2dxgzRWskHpTr3/QKBgB3HJ8vu7WVUJ/3Z5ak5pyl7yOgv2T9cDinWs2ftNN15cV85k73gKyCLm3+2TIaXuba7Nr4jakXF0NHRZFw188aUe1+EyrQwfaee+jZ9PjGwL/aqzuiyuF1R73TwgFleHFr5RdchTsGU3GBWmHUUpmLzWDYtEe5hwA4jZDw6dZapAoGBAKsr9GImz8vsKjfzQJMj8OC18ch+U29nwkhjHPnjtE4Zjf7izUC2x8b1EWa59pqXIPv9Kgb2aP2MX/fQHtUwNaRza9vfbRcG4qaATKWNIsV2BR+yI/SP7Hdt7fNfv1Jbivj42zj0HyTNXA7E4GPiZpKMYaXt56JouyoRbBnMoakO"
|
ALIPAYPRIVATEKEY: "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCG0ynEzKW/LwXLgtcOQ9BQCWN1ILdK8/X8DIiKy2XiebirTkU2LF9u6NpNKju3TIZTq02GBpjz/5kuCdXoFTqZXB6W/6vDbRskIT42ctT6nzZtkBaYt4BaC/HSPWAQJ+9z+JtKr8bDYUgN/9YwdwV/J3sEg/HYPlsXRczrnJdfhR/d5zno1V6avK2p052/IWKV5daZg3aQpDDi7QdZp8W88hbrItb0aoaDwhsq90ZBDA8ZjUUUAiqnSFPl0OxBAvwbS1U1Y7SYQd6AeD3M9MugrDjPNng+TeZgZ0zXaB2uh3u+i1PsDvQAEq72MM+1z097de2t01u6jmvsqFPj9ANrAgMBAAECggEAZln344bYbQLti0mQqSuiAKCf+FMV0rjRjL6XCYbPmdZ98s5AjJey+yeaUeo12zkk4G+zMoPfqZvoVaLx2HYFPldIgakmY/14FT2HVR5nwLsNPq+b9+OWdMWMluYw/xLSHWAlw9UdN0WqxbXqjHBOo/D82riv6FGuJUTABD2kTMZQngzOaoMcgrfIb4y5f2oTzXXvOidOA5u2UW9vbPaV/G+eqvsBTMNgJUY3uYO0fMvGVrQ6u5lHPiZzYjdIhyYXBa0L7MUs6oi4YcJwSHt0OXrxVPjJFR6Kpl2hkzOptgrhn8Jun0DYCd0s02NxIaVLkF6pNhqZaovLWTcCoal+wQKBgQDEfVQoOZ5eZYtL6XEnJBH7alVT87RywgDc4Jz4AYIKijt4KWZCWqu6GoR3Ku/u+/PWAak3j9pHv0HoKVAmDANJOU0W6pyUXNXLoeYlc/2kOmlRHbNReAnaUwHauIRiUOfqZ8+qWS5Ly6TmuF0GJRrbXr1gah75Ow0T02af618IlwKBgQCvqLUWwEpFSt1EZ6Y20jOm75RQgl+0wckwdTaoPyE6qwHkuPXG0nILD0OqgWPY2iYUR6DIfBuv6CkSvGgvY7ouj876hsofSW4d7gitt5+ybTjtyUDOCQk5g3QkRmFW9SAAbWTF7VvyiIqlICWEIuMQ1hJdKQK4/6nm1IqgSoTCTQKBgEk7lOQxJW91VUeDyCKYdQNJjGfvyu+CkyO/q4FbvoYDI0sT0wMkHCEOxRRNMoPV7/lxQQpuWSKoi/3ld/PWQltGOg8yfg1l1GFDBC4tXvmYs6wB79WLcdCnY2eLofuqv+VDr8iD2JdzXRCI4lLp/WqJkveeVdD6S1N6VSOBbDgdAoGAJF54x/IeLoSWlXAkYNtaqGiYO6cSq7knr6nFHEad2ajIZpPJB1ZRGGsbpnTNuHtKQQ6ngnr3vI8D2gY6R/2M8dECmKpJtPqeGwJKt7T6EpY8oDb3/PCwAUFvTYdo5fkwnAYKRFSloeyVUCT8v4P9oWHBQZqZHraIdetxnEhxfk0CgYAaqweBwOdAiRk/ivbgtf9fhSSnM3p40KZ9MF66wsnb4oc/+qH/Nq/SxeQBIIwx0ouW7Ho7xr0yYcmnnrk+xEHfDsGSxNYEd0NClGRBpPCy0ynEpsXeaj2yjr0zWzcDYI/wRaDpzCcUQf8BJ4l++klXvwhGvJiRDOFaLPiZ9zscBA=="
|
||||||
#支付宝appid
|
#支付宝appid
|
||||||
ALIPAYAPPID: "2021002156615717"
|
ALIPAYAPPID: "2021002156615717"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user