Commit 537848d4 by giaogiao

2021年03月29日15:36:29, 部署的正式环境代码, 修复cellcard对接的api文档

parent 66ed7f99
package com.library.TopUp.cellcard;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.library.TopUp.Http.HttpUtils;
import com.library.TopUp.Http.HttpsTool;
import com.library.TopUp.model.ResultsModel;
import org.apache.http.util.TextUtils;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class CellcardSentUtils {
......@@ -27,7 +27,8 @@ public class CellcardSentUtils {
Map<String, String> params = new HashMap();
params.put("grant_type", "client_credentials");
String keyAndSecret = "v2VSgq7Q2Yqhp36s5TOzD13J5FMa:Go0wTNZdR53xNbxHwhneLF1p40Ma";
// String keyAndSecret = "v2VSgq7Q2Yqhp36s5TOzD13J5FMa:Go0wTNZdR53xNbxHwhneLF1p40Ma";
String keyAndSecret = "mTUd8uExL3jpms3yoclDyAtEnIAa:9fegPABu4LBCsrxAhELkDytSGzUa";
String code = Base64.getEncoder().encodeToString(keyAndSecret.getBytes("UTF-8"));
Map<String, String> heardMap = new HashMap<>();
......@@ -35,8 +36,8 @@ public class CellcardSentUtils {
// heardMap.put("Content-Type", "application/json");
// heardMap.put("Accept", "application/json");
String url = "https://stg-api.cellcard.com.kh:8243/token";
//
String url = "https://prd-api.cellcard.com.kh:8243/token";
// HttpClientResult clientResult = HttpClientUtils.doPost(url, heardMap, params);
//// System.out.println(new Gson().toJson(clientResult));
......@@ -86,8 +87,7 @@ public class CellcardSentUtils {
heardMap.put("Content-Type", "application/x-www-form-urlencoded");
// heardMap.put("Accept", "application/json");
String url = "https://stg-api.cellcard.com.kh:8243/tom/v2/query_balance";
String url = "https://prd-api.cellcard.com.kh:8243/tom/v2/query_balance";
String json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
......@@ -121,8 +121,8 @@ public class CellcardSentUtils {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", token_type + " " + access_token);
heardMap.put("Content-Type", "application/x-www-form-urlencoded");
String url = "https://stg-api.cellcard.com.kh:8243/tom/v2/balance_transfer";
// https://stg-api.cellcard.com.kh:8243/tom/v2/balance_transfer
String url = "https://prd-api.cellcard.com.kh:8243/tom/v2/balance_transfer";
String json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
......@@ -201,6 +201,11 @@ public class CellcardSentUtils {
// System.out.println("充值状态" + model.isSuccessful());
String json = checkBalance();
System.out.println(json);
ResultsModel resultsModel = sentTopUp("012885610", "1237189239", 1);
System.out.println(resultsModel);
}
/**
......
......@@ -16,10 +16,9 @@ import java.util.Map;
public class MetfoneSentUtils {
private final static String baseUrl = "https://36.37.242.116:8301/"; //测试
// private final static String baseUrl = "https://payment.emoney.com.kh:8888/"; //线上
private final static String baseUrl = "https://36.37.242.116:8301/";
// private final static String baseUrl = "https://payment.emoney.com.kh:8888/";
private final static String PIN = "298315";
private final static String MyAuthorization = "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31";
public static String initTel(String transAmount, String refId, String customerPhoneNumber) {
......@@ -33,7 +32,7 @@ public class MetfoneSentUtils {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -50,7 +49,7 @@ public class MetfoneSentUtils {
public static String confirmTel(String txPaymentTokenId) {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -81,7 +80,7 @@ public class MetfoneSentUtils {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -107,7 +106,7 @@ public class MetfoneSentUtils {
try {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -131,7 +130,7 @@ public class MetfoneSentUtils {
try {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -156,7 +155,7 @@ public class MetfoneSentUtils {
try {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......@@ -187,7 +186,7 @@ public class MetfoneSentUtils {
try {
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", MyAuthorization);
heardMap.put("Authorization", "epa 2478e27af578e11a6af86a8320562124240f5c972e8039cd9c564e53d643bb31");
heardMap.put("e-language", "English");
heardMap.put("Content-Type", "application/json");
heardMap.put("Accept", "application/json");
......
package com.library.service.Impl;
import com.library.TopUp.Statel.SeatelSentUtils;
import com.library.TopUp.cellcard.CellcardSentUtils;
import com.library.TopUp.mefont.MetfoneSentUtils;
import com.library.TopUp.model.ResultsModel;
import com.library.TopUp.smart.SmartSentUtils;
import com.library.config.NameValue;
import com.library.mapper.AutomaticQueueMapper;
import com.library.mapper.CurrencyMapper;
......@@ -30,16 +34,18 @@ import java.util.regex.Pattern;
@Transactional
public class AutomaticCodeServiceImpl implements AutomaticCodeService {
@Resource
private AutomaticQueueMapper automaticQueueMapper;
@Resource
private CurrencyMapper currencyMapper;
private final static String SegmentType_Cellcard = "Cellcard";
private final static String SegmentType_Metfone = "Metfone";
private final static String SegmentType_Smart = "Smart";
private final static String SegmentType_Seatel = "Seatel";
public static String REGULARLY = "^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])\\d{8}$";
private static final String PREFIX_ZERO = "0";
@Resource
private AutomaticQueueMapper automaticQueueMapper;
@Resource
private CurrencyMapper currencyMapper;
@Override
public boolean isChinaPhone(String phone) {
......@@ -49,6 +55,7 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
String removePhone = phone;
if (phone.startsWith(PREFIX_ZERO)) {
removePhone = phone;
}
// 判断是否是中国手机号
// 是
......@@ -60,50 +67,49 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
public void automaticForTack() {
// 得到最早的一条充值记录
Map<String, Object> map = automaticQueueMapper.selectEarlyOne();
if (map == null) {
return;
}
if (map != null) {
// 充值业务状态
boolean success = false;
//自动处理状态说明
String desc = "";
AutomaticQueueModel automaticQueueModel = null;
String top_up_num = "";
try {
automaticQueueModel = (AutomaticQueueModel) TransformationTools.ToObjectOne(AutomaticQueueModel.class, map);
// 修改状态
automaticQueueModel.setStatus(1);
currencyMapper.updateTableForMysql(TransformationTools.CreatUpdateMysql(automaticQueueModel, NameValue.Table_automatic_queue, "id", null));
//获取订单信息
Map<String, Object> mapOrder = automaticQueueMapper.selectOrderByNumber(automaticQueueModel.getOrder_num());
OrderModel orderModel = (OrderModel) TransformationTools.ToObjectOne(OrderModel.class, mapOrder);
OrderLogModel orderLogModel = new OrderLogModel();
orderLogModel.setLog_order_number(orderModel.getOrder_number());
orderLogModel.setLog_type(5);
orderLogModel.setTime(new Timestamp(System.currentTimeMillis()));
orderLogModel.setLog_content("自动充值-准备开始充值");
//添加订单操作日志
currencyMapper.AddTableForMysql(TransformationTools.CreatAddMysql(orderLogModel, NameValue.Table_order_log, "id", null));
// 充值业务状态
boolean success = false;
//自动处理状态说明
String desc = "";
AutomaticQueueModel automaticQueueModel = null;
String top_up_num = "";
try {
automaticQueueModel = (AutomaticQueueModel) TransformationTools.ToObjectOne(AutomaticQueueModel.class, map);
// 修改状态
automaticQueueModel.setStatus(1);
currencyMapper.updateTableForMysql(TransformationTools.CreatUpdateMysql(automaticQueueModel, NameValue.Table_automatic_queue, "id", null));
//获取订单信息
Map<String, Object> mapOrder = automaticQueueMapper.selectOrderByNumber(automaticQueueModel.getOrder_num());
OrderModel orderModel = (OrderModel) TransformationTools.ToObjectOne(OrderModel.class, mapOrder);
OrderLogModel orderLogModel = new OrderLogModel();
orderLogModel.setLog_order_number(orderModel.getOrder_number());
orderLogModel.setLog_type(5);
orderLogModel.setTime(new Timestamp(System.currentTimeMillis()));
orderLogModel.setLog_content("自动充值-准备开始充值");
//添加订单操作日志
currencyMapper.AddTableForMysql(TransformationTools.CreatAddMysql(orderLogModel, NameValue.Table_order_log, "id", null));
//生成充值的订单编号。每次都会变,以后可能会复查使用到。
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
top_up_num = sdf.format(new Date());
//去充值
ResultsModel resultsModel = sentTopup(automaticQueueModel, top_up_num);
desc = resultsModel.getTip();
success = resultsModel.isSuccessful();
top_up_num = resultsModel.getTopUpNum();
//生成充值的订单编号。每次都会变,以后可能会复查使用到。
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
top_up_num = sdf.format(new Date());
} catch (Exception e) {
e.printStackTrace();
desc = "System error.";
}
//去充值
ResultsModel resultsModel = sentTopup(automaticQueueModel, top_up_num);
desc = resultsModel.getTip();
success = resultsModel.isSuccessful();
top_up_num = resultsModel.getTopUpNum();
} catch (Exception e) {
e.printStackTrace();
desc = "System error.";
}
// 自动处理结果
this.automaticForTackResult(automaticQueueModel, success, desc, top_up_num);
this.automaticForTackResult(automaticQueueModel, success, desc, top_up_num);
}
}
private ResultsModel sentTopup(AutomaticQueueModel automaticQueueModel, String top_up_num) {
......@@ -119,46 +125,29 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
//1.先判断这是哪个公司的充值订单,然后发起充值
SegmentModel segmentModel = (SegmentModel) TransformationTools.ToObjectOne(SegmentModel.class, map);
// if (segmentModel.getOperator().equals(SegmentType_Cellcard)) {
// //Cellcard的手机号,则选择Cellcard公司的api发起充值
// resultsModel = CellcardSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), orderNumId, automaticQueueModel.getOrder_money().intValue());
// resultsModel.setTopUpNum(orderNumId);
// } else if (segmentModel.getOperator().equals(SegmentType_Metfone)) {
// resultsModel = MetfoneSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
// resultsModel.setTopUpNum(orderNumId);
// } else if (segmentModel.getOperator().equals(SegmentType_Smart)) {
// resultsModel = SmartSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
// resultsModel.setTopUpNum(orderNumId);
// } else if (segmentModel.getOperator().equals(SegmentType_Seatel)) {
// resultsModel = SeatelSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue());
// //这个不用返回订单num,里面已经做了处理
// } else {
// payGo的运营商对应id
int serviceId;
if (segmentModel.getOperator().equals(SegmentType_Cellcard)) {
serviceId = 3;
//Cellcard的手机号,则选择Cellcard公司的api发起充值
resultsModel = CellcardSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), orderNumId, automaticQueueModel.getOrder_money().intValue());
resultsModel.setTopUpNum(orderNumId);
} else if (segmentModel.getOperator().equals(SegmentType_Metfone)) {
serviceId = 4;
resultsModel = MetfoneSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
resultsModel.setTopUpNum(orderNumId);
} else if (segmentModel.getOperator().equals(SegmentType_Smart)) {
serviceId = 2;
resultsModel = SmartSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
resultsModel.setTopUpNum(orderNumId);
} else if (segmentModel.getOperator().equals(SegmentType_Seatel)) {
serviceId = 111;
resultsModel = SeatelSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue());
//这个不用返回订单num,里面已经做了处理
} else {
// 没找到
return null;
}
Paygo24Utils paygo = new Paygo24Utils();
String result = paygo.payment(automaticQueueModel.getOrder_phone(), serviceId, automaticQueueModel.getOrder_money());
Paygo24Utils paygo = new Paygo24Utils();
String result = paygo.payment(automaticQueueModel.getOrder_phone(), automaticQueueModel.getSegment_id(), automaticQueueModel.getOrder_money());
resultsModel = new ResultsModel();
resultsModel.setTip(result);//描述
resultsModel.setSuccessful(result.equals(Paygo24Utils.SUCCESS));
resultsModel = new ResultsModel();
resultsModel.setTip(result);//描述
resultsModel.setSuccessful(result.equals(Paygo24Utils.SUCCESS));
resultsModel.setTopUpNum(orderNumId);
resultsModel.setTopUpNum(orderNumId);
}
return resultsModel;
} catch (Exception e) {
......
......@@ -8,10 +8,20 @@ import com.library.TopUp.mefont.MetfoneSentUtils;
import com.library.config.NameValue;
import com.library.mapper.CommMapper;
import com.library.mapper.CurrencyMapper;
import com.library.model.AdminModel;
import com.library.model.UserModel;
import com.library.respcode.ServerResponse;
import com.library.service.AutomaticCodeService;
import com.library.service.CommService;
import com.library.util.MSMmethodUtil;
import com.library.util.Paygo24Utils;
import com.library.util.SendEmailTools;
import com.library.util.TransformationTools;
import com.wechat.pay.MD5Util;
import com.wechat.pay.WeChatManager;
import com.wechat.pay.WeChatManager.UserInfo;
import org.apache.http.util.TextUtils;
import org.springframework.stereotype.Service;
......@@ -19,12 +29,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
import java.util.*;
@Service
public class CommServiceImpl implements CommService {
......@@ -39,32 +46,6 @@ public class CommServiceImpl implements CommService {
@Resource
private AutomaticCodeService automaticCodeService;
/**
* 此函数非原创,从网上搜索而来,timeZoneOffset原为int类型,为班加罗尔调整成float类型
* timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8
*
* @param timeZoneOffset
* @return
*/
public static String getFormatedDateString(float timeZoneOffset) {
if (timeZoneOffset > 13 || timeZoneOffset < -12) {
timeZoneOffset = 0;
}
int newTime = (int) (timeZoneOffset * 60 * 60 * 1000);
TimeZone timeZone;
String[] ids = TimeZone.getAvailableIDs(newTime);
if (ids.length == 0) {
timeZone = TimeZone.getDefault();
} else {
timeZone = new SimpleTimeZone(newTime, ids[0]);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
sdf.setTimeZone(timeZone);
return sdf.format(new Date());
}
@Override
public ServerResponse Recharge() {
try {
......@@ -311,4 +292,31 @@ public class CommServiceImpl implements CommService {
}
}
/**
* 此函数非原创,从网上搜索而来,timeZoneOffset原为int类型,为班加罗尔调整成float类型
* timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8
*
* @param timeZoneOffset
* @return
*/
public static String getFormatedDateString(float timeZoneOffset) {
if (timeZoneOffset > 13 || timeZoneOffset < -12) {
timeZoneOffset = 0;
}
int newTime = (int) (timeZoneOffset * 60 * 60 * 1000);
TimeZone timeZone;
String[] ids = TimeZone.getAvailableIDs(newTime);
if (ids.length == 0) {
timeZone = TimeZone.getDefault();
} else {
timeZone = new SimpleTimeZone(newTime, ids[0]);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
sdf.setTimeZone(timeZone);
return sdf.format(new Date());
}
}
package com.library.test;
public class A {
String a = "<?xml version='1.0' encoding='utf-8'?>\n" +
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>\n" +
" <soap:Body>\n" +
" <SendRequest xmlns='http://tempuri.org/'>\n" +
" <request xsi:type='RegisterCheckRequest' Id='7a646d45-ee2f-4b1c-8de8-780c416fbbd0' Service='42' xmlns='http://paygo24.com/v3/protocol'>\n" +
" <PaymentParameters xmlns=''>\n" +
" <Parameter Name='account' Value='08374829' />\n" +
" </PaymentParameters>\n" +
" </request>\n" +
" <pointId>46</pointId>\n" +
" <password>4QrcOUm6Wau+VuBX8g+IPg==</password>\n" +
" </SendRequest>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
}
#jdbc.driverClassName=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/comb_top?useUnicode=true&characterEncoding=utf8&autoReconnect=true
#jdbc.username=root
#jdbc.password=123
#jdbc.driverClassName=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://5846b961499e7.gz.cdb.myqcloud.com:5698/discuz?useUnicode=true&characterEncoding=utf8&autoReconnect=true
#jdbc.username=cdb_outerroot
#jdbc.password=dengyebin940805
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://5846b961499e7.gz.cdb.myqcloud.com:5698/discuz?useUnicode=true&characterEncoding=utf8&autoReconnect=true
jdbc.username=cdb_outerroot
jdbc.password=dengyebin940805
\ No newline at end of file
#jdbc.url=jdbc:mysql://localhost:3306/discuz?useUnicode=true&characterEncoding=utf8&autoReconnect=true
jdbc.url=jdbc:mysql://localhost:3306/recharge_sys?useUnicode=true&characterEncoding=utf8&autoReconnect=true
jdbc.username=recharge_sys
jdbc.password=cK2bPBkwLtKNeGRc
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment