Commit 1018d0bd by yanlveming

同步

parent 8cf556b3
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.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class CellcardSentUtils {
private final static String distributor_id = "35";
private static String access_token = "";
private static String token_type = "";
public static String getToken() {
try {
Map<String, String> params = new HashMap();
params.put("grant_type", "client_credentials");
String keyAndSecret = "v2VSgq7Q2Yqhp36s5TOzD13J5FMa:Go0wTNZdR53xNbxHwhneLF1p40Ma";
String code = Base64.getEncoder().encodeToString(keyAndSecret.getBytes("UTF-8"));
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", "Basic " + code);
// heardMap.put("Content-Type", "application/json");
// heardMap.put("Accept", "application/json");
String url = "https://stg-api.cellcard.com.kh:8243/token";
// HttpClientResult clientResult = HttpClientUtils.doPost(url, heardMap, params);
//// System.out.println(new Gson().toJson(clientResult));
//// return clientResult.getContent();
String json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String checkBalance(String transaction_id) {
try {
Map<String, String> params = new HashMap();
params.put("transaction_id", transaction_id);
params.put("distributor_id", distributor_id);
Map<String, String> heardMap = new HashMap<>();
heardMap.put("Authorization", token_type + " " + access_token);
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 json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String rechargePhone(String phone, int amount, String transaction_id) {
try {
String amountStr = String.valueOf(amount * 10000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp = sdf.format(new Date());
Map<String, String> params = new HashMap();
params.put("distributor_id", distributor_id);
params.put("subscriber", phone);
params.put("amount", amountStr);//Top-up amount in centi-cent 1$=10000. The minimum value is 2500.
params.put("transaction_id", transaction_id);
params.put("timestamp", timestamp);
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";
String json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* By some reasons client not get response from API after top up request. It could be
* connection broken, timing out, service hanging, internal error, … To clarify the transaction
* status we implement one more step to check in OCS’s CDR which date available in 3 months
* backward.
* <p>
* SLA: This API effective after 10 minutes from client got timeout
* response (Need times to collect CDR)
*
* @param phone
* @param transaction_id
* @return
*/
public static String topUpStatus(String phone, String transaction_id) {
try {
String tokenStr = "";
String jsonToken = getToken();
if (!TextUtils.isEmpty(jsonToken)) {
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = jsonParser.parse(jsonToken).getAsJsonObject();
tokenStr = jsonObject.get("access_token") == null ? "" : jsonObject.get("access_token").getAsString();
if (!TextUtils.isEmpty(tokenStr)) {
token_type = jsonObject.get("token_type") == null ? "" : jsonObject.get("token_type").getAsString();
access_token = tokenStr;
}
}
if (TextUtils.isEmpty(tokenStr)) {
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp = sdf.format(new Date());
Map<String, String> params = new HashMap();
params.put("distributor_id", distributor_id);
params.put("subscriber", phone);
params.put("transaction_id", transaction_id);
params.put("transaction_date", timestamp);
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/transaction_status";
String json = HttpUtils.post(url, params, heardMap, 30000, 30000, "utf-8");
return json;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
// String json = topUpStatus("85561254730", "123");
ResultsModel model = sentTopUp("855061254730", "123", 1);
System.out.println("充值结果 " + model.getTip());
System.out.println("充值状态" + model.isSuccessful());
}
/**
* 发起充值
*
* @param phone 11为数的手机号码
* @param orderNum 唯一编号
* @param amount 充值金额 ,单位1美元 里面做了乘以10000的操作了
*/
public static ResultsModel sentTopUp(String phone, String orderNum, int amount) {
String tip = "";
boolean isSuccessful = false;
try {
String jsonToken = getToken();
String rechargeJson = "";
if (!TextUtils.isEmpty(jsonToken)) {
JsonParser jsonParserToken = new JsonParser();
JsonObject jsonObjectToken = jsonParserToken.parse(jsonToken).getAsJsonObject();
String tokenStr = jsonObjectToken.get("access_token") == null ? "" : jsonObjectToken.get("access_token").getAsString();
if (!TextUtils.isEmpty(tokenStr)) {
token_type = jsonObjectToken.get("token_type") == null ? "" : jsonObjectToken.get("token_type").getAsString();
access_token = tokenStr;
tip += "令牌解析成功;准备发起充值;";
/**
* 发起充值
*/
rechargeJson = rechargePhone(phone, amount, orderNum);
} else {
tip += "令牌解析失败:" + jsonToken;
}
} else {
tip += "令牌获取失败; ";
}
String transaction_id = "";
if (!TextUtils.isEmpty(rechargeJson)) {
JsonParser jsonParserRecharge = new JsonParser();
JsonObject jsonObjectRecharge = jsonParserRecharge.parse(rechargeJson).getAsJsonObject();
if (jsonObjectRecharge != null) {
JsonObject data = jsonObjectRecharge.get("data") == null ? null : jsonObjectRecharge.get("data").getAsJsonObject();
if (data != null) {
//有data对象
String error_code = data.get("error_code") == null ? "" : data.get("error_code").getAsString();
if (!TextUtils.isEmpty(error_code) && error_code.equals("0")) {
//充值成功
transaction_id = data.get("transaction_id") == null ? "" : data.get("transaction_id").getAsString();
tip += " 充值成功!!!";
isSuccessful = true;
} else {
//充值报错
tip += "充值失败,返回结果:" + rechargeJson;
}
} else {
tip += "充值无data返回,返回结果:" + rechargeJson;
}
} else {
tip += "充值报错,解析失败,返回结果:" + rechargeJson;
}
}
ResultsModel model = new ResultsModel(isSuccessful, tip);
return model;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.library.TopUp.cellcard;
import java.io.Serializable;
/**
* Description: 封装httpClient响应结果
*
* @author JourWon
* @date Created on 2018年4月19日
*/
public class HttpClientResult implements Serializable {
public HttpClientResult(){
}
public HttpClientResult(int code) {
this.code = code;
this.content = "";
}
public HttpClientResult(int code, String content) {
this.code = code;
this.content = content;
}
/**
* 响应状态码
*/
private int code;
/**
* 响应数据
*/
private String content;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.library.TopUp.mefont;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import java.io.FileInputStream;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
public class MetfoneRSAUtils {
final static String pripath = "./src/com/library/TopUp/mefont/keys/ePayTest.pri";
final static String pubpath = "./src/com/library/TopUp/mefont/keys/ePayTest.pub";
public static String encryptRSA(String plainData) {
try {
FileInputStream fis = new FileInputStream(pubpath);
byte[] byteKeyFromFile = new byte[fis.available()];
fis.read(byteKeyFromFile);
fis.close();
X509EncodedKeySpec keySpec = new
X509EncodedKeySpec(byteKeyFromFile);
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey pubKey = factory.generatePublic(keySpec);
// Mã hoá dữ liệu
Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
c.init(Cipher.ENCRYPT_MODE, pubKey);
byte encryptedByte[] = c.doFinal(plainData.getBytes());
String encrypted = Base64.encodeBase64String(encryptedByte);
return encrypted;
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
}
return null;
}
public static String decryptRSA(String encryptedData) {
try {
FileInputStream fis = new FileInputStream(pripath);
byte[] byteKeyFromFile = new byte[fis.available()];
fis.read(byteKeyFromFile);
fis.close();
PKCS8EncodedKeySpec keySpec = new
PKCS8EncodedKeySpec(byteKeyFromFile);
KeyFactory factory = KeyFactory.getInstance("RSA");
PrivateKey priKey = factory.generatePrivate(keySpec);
// Giải mã dữ liệu
Cipher c2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
c2.init(Cipher.DECRYPT_MODE, priKey);
String decrypted = new
String(c2.doFinal(Base64.decodeBase64(encryptedData)));
return decrypted;
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
}
return null;
}
public static void main(String[] args) {
String token = "lF4inzg0SYpt7VekJEhCRYi/hLaPtxgGpflBo5ocWv7lZT09tD+zP8cqTICzTqT8R4raZ3USzv" +
"nyi6tBcE6hNtdoXa8Cq6ub8AZbyoMB0RMWyPbcaKvnbX34kLRnskUECjEKsBRNpYEVP1rNcSVc+" +
"xmDGC7PtcYV+kIRDp5Dmqhcb/7wOHkqyUemTbvhmgb6wgLXE4pdB6NyJZ7JAbfZ5DiIgyGQ7EK4" +
"7hdb4bGn1/15+M4C3OlpOcp7PuFzBuDO1HRkoLXeayFhMKoLHBj1s0wWaFHbPQIYxpCBFW6lzdO" +
"6rVVuhA1YoaoKNZOnYk9fVZ+vQUj5nY2i4yH8u4GJKw==";
String token2="iljUgme83Rj3dCvhFHwFdBB+DXkPpmxTjSFGlsjJJeXQRmQRP62lO9lNYGBkz827TPOjrycRg0BuPLH4I497iuMo7LUMt0mg3C7B3ejRkgcqWoiQxaSjB79mQa8lip/w6Q9S74Wwim/tDw/horrQ/a50+sTe+UYuHh1hjwnr61KQwieNDRFC3rYxeA5WkwpMCVQMHWfTqK3mPjXHqJgoMySUekg0NCbYQYmqWsgetakUuSlaKmrjpK90WfjOsnIeuTWEYHh+tlrI3VVIGF/Pknw6xzLOG+rTi1IZ7RkuHKh8nbiR4uLDkXpvGiiL1Hiq3H2Sz897MZKs1HeqWdrMng==";
// System.out.println(System.getProperty("user.dir"));
String str = decryptRSA(token2);
String encryptText = str + "|" + "298315";
String retStr = encryptRSA(encryptText);
System.out.println("解密后的数据:"+str);
System.out.println("加上PIN加密的数据:"+retStr);
}
}
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCY6EbOULc7ksASsPnO3mKj21tBIeuw2BBI+56OesX45qbEbs4pRzpqzPcj65jgHmSEfYwa5JNGcmGi3JD4ixJFIQzyUvmk+7XZUint04rMyYzrzKHeUcTv/jZ5P0Z/vqXSgFzaciDdnG2K159IjNt/adedcDVPQJ7q6D7qm94LaghTQh9rA1PXF7L1zVne5G51llAuY2FKUt0HXp4W5ZhcqgpiLlalKPYPNfwACkbkREmse9ibjvpIfEsg5USw1wFuqRG0FarZNO6y8iTVj1wZSob33/BG2FhGVUxyUGLN0mS1lfCFU3aitrgdkeoLSRfq8zi/mEk4n6kk4u/YHM1nAgMBAAECggEAKmXdnD+NTxt13rjry4ymVUDxoLHDJJoEifgbEu7ADjAGddkzmQaDEDIdJPyiuyIyRPp66soOfC4jHIGEQSZuvnRXnqmbRz/0QHoj3ioWBoqsZIWtLHQH43Pdruj4p1s5p5CoLnoO2uQRC7qWFAvaoQ28F4+ReJQ2fHRBXdQyUX97PzQszZyAQWc/9UbUEyeZim9xl+SRKssP0u5d5Duh/2CTieZbOXh+4lLe1/mv2aXtSQCFiW8wgWXYJE03q8kSediKwuxfG//Dj5+oR6dz96wyLLao94HemRFNYZq8CoJs5z1eyuj2QYxQGgEhZJYTyl0hDK7+JwSNPldLtOae4QKBgQDRvmocabHoCUYKgjJKCtSAfSF+y/U5iwDsH1FZYhp8ZxkBuALWVD2FhtuZYbGvzDYuYSpLa/VITRR5yBTUXuhLNSPUOIDLS3Ba9V38SdxsWKSgBkTRdE6O9ShkEQfBMQ0v17JTfATCn7lUTRCqV3ayAkfJNqVh+TpZWCI5u/SsywKBgQC6oQYMyPMCAeTMSHVYJ4WUWDz5ZxOyqQCIvicQtunJ7U2Y/+iY8ZQl1B6jJ/JColBjxqTqFIq8LFdJD7VkE+/AKFjwr0RgTy2tRqJNvyaSrIdVi/6OI+y1RXS4VBiY+SZ5wobx1v1t7se4ltdN71Xbuzz/QmXDCtbMPLam8u6KVQKBgQCb1H/buj9eaL1sA00/q4o0KEOhhAEejoLR63ayFOwery5qE3+wI4hN02MGMwoj1XIPxUr6HCxxWiszS48GNbkaX1HOU2iFIfhI6/G3Bl1I9hbheabZgzL2jXhD2E9Nnpbwi63GzuZufuLfmh4eoLrkCEOzX/FBuDw8svlCsb1YPwKBgFgfKj0lMWFURZWT7RyH5NIL7BaTbkCg/iiTKN0CkVeQXmCNDWYSQ7Ks+x5tAT4naDAEnuAMfQmnIjvUWAD+TOl946kaCP40xMuZm498X5lIL8rcBIFXQzDAsAFNbCPnGRzLFm7g5d9frRxi1RzukqrjOUUKNASpfI0JafFgqfPVAoGAI1Oz2PsG4phr8USI7cB1P0mVOc+69tn6QA/oDT8dBqO9bVuBRuQsVgoPPKTbusK1Na0NDmMAfgwRynxPCwwSevGiWlCGFZGj+eM9a52g6BbbHT2LGsQqWsLINFBOAwUAPoyOyB76EC1iQ2FM/mvQbBwnsNaG6SZX73dchlkn7iU=
\ No newline at end of file
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn0dF9WwFY8Te4AEoGdTC34c9vStRegi9D9H4jXXNoOAMyRPH+e9I+ZTJfERpIs45j+Y+KezmI0bFJ/mk06ZK9Si9V81aeBsgtgy5Ul4reQYkH9KL0G7hboX1eePkmc95qCQFwGD3PEITKD6ei43YxYfOf8BltHFZ0Z+opkTTZHW5aOMAFUIRoaXTpaVD+I7rx6gDJX+pZsPowLpfFjGAY2YRe2FJN1YXtyJFEDhRJDeqY4QakelyKGDK8gi5CFLxDtkUxpF3QWUk98WLJH/mkGJUmKAORksVR7ReaHbEWQkJUuDUxh0YUr9X7aXGZnbHAuDTbUqCP4L/wFBIhWWaOwIDAQAB
\ No newline at end of file
package com.library.TopUp.mefont.model;
public class InitModel {
private String serviceType;
private String transAmount;
private String currency;
private String refId;
private String customerPhoneNumber;
public String getServiceType() {
return serviceType;
}
public void setServiceType(String serviceType) {
this.serviceType = serviceType;
}
public String getTransAmount() {
return transAmount;
}
public void setTransAmount(String transAmount) {
this.transAmount = transAmount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getRefId() {
return refId;
}
public void setRefId(String refId) {
this.refId = refId;
}
public String getCustomerPhoneNumber() {
return customerPhoneNumber;
}
public void setCustomerPhoneNumber(String customerPhoneNumber) {
this.customerPhoneNumber = customerPhoneNumber;
}
}
package com.library.TopUp.mefont.model;
public class MetfoneResultsModel {
private boolean isSuccessful;
private String tip;
}
package com.library.TopUp.model;
public class ResultsModel {
private boolean isSuccessful;
private String tip;
private String expandText;
public ResultsModel(boolean isSuccessful, String tip) {
this.isSuccessful = isSuccessful;
this.tip = tip;
}
public ResultsModel(boolean isSuccessful, String tip, String expandText) {
this.isSuccessful = isSuccessful;
this.tip = tip;
this.expandText = expandText;
}
public ResultsModel() {
}
public boolean isSuccessful() {
return isSuccessful;
}
public void setSuccessful(boolean successful) {
isSuccessful = successful;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
public String getExpandText() {
return expandText;
}
public void setExpandText(String expandText) {
this.expandText = expandText;
}
}
package com.library.TopUp.smart;
import java.io.Serializable;
/**
* Description: 封装httpClient响应结果
*
* @author JourWon
* @date Created on 2018年4月19日
*/
public class HttpClientResult implements Serializable {
public HttpClientResult(){
}
public HttpClientResult(int code) {
this.code = code;
this.content = "";
}
public HttpClientResult(int code, String content) {
this.code = code;
this.content = content;
}
/**
* 响应状态码
*/
private int code;
/**
* 响应数据
*/
private String content;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
......@@ -20,6 +20,7 @@ public class NameValue {
public static String Table_automatic_queue = "pre_dz_pay_automatic_queue";//充值队列表
public static String Table_order_log = "pre_dz_pay_order_log";//订单日志表
public static String Table_order = "pre_dz_pay_order";//订单表
public static String Table_pay_segment = "pre_dz_pay_segment";//订单表
......
package com.library.controller;
import com.library.TopUp.cellcard.CellcardSentUtils;
import com.library.respcode.ServerResponse;
import com.library.service.AdminService;
import com.library.service.CommService;
......@@ -11,7 +12,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/*
* @项目名: yunVpay
* @项目名: yunVpay
* @包名: com.library.controller
* @文件名: CommonController
* @创建者: zhouzhuo
......@@ -20,7 +21,7 @@ import javax.annotation.Resource;
*/
@Controller
@RequestMapping("/Common")
public class CommonController{
public class CommonController {
@Resource
private CommService commService;
......@@ -29,7 +30,7 @@ public class CommonController{
//获取七牛云的token
@ResponseBody
@RequestMapping("/FindQNYToken")
private ServerResponse FindQNYToken(){
private ServerResponse FindQNYToken() {
String token = QiniuUtils.getUpToken();
return ServerResponse.createBySuccess(token);
}
......@@ -48,4 +49,14 @@ public class CommonController{
return commService.adminLogin();
}
//登录
@ResponseBody
@RequestMapping("test")
private ServerResponse test() {
String json = CellcardSentUtils.getToken();
System.out.println(json);
return ServerResponse.createBySuccess(json);
}
}
......@@ -23,5 +23,12 @@ public interface AutomaticQueueMapper {
*/
public Map<String, Object> selectOrderByNumber(@Param("order_number") String order_number);
/**
* 根据手机前三位获取到运营商数据
* @param phone_three
* @return
*/
public Map<String, Object> selectSegment(@Param("phone_three") String phone_three);
}
......@@ -11,4 +11,8 @@
<select id="selectOrderByNumber" resultType="map" parameterType="map">
select * from pre_dz_pay_order where order_number = #{order_number};
</select>
<select id="selectSegment" resultType="map" parameterType="map">
select * from pre_dz_pay_segment where phone_three = #{phone_three};
</select>
</mapper>
......@@ -43,6 +43,15 @@ public class OrderModel {
private String phone;
private int id;
private int state; //支付结果1.待支付,2支付成功(系统处理中) 3.充值成功 4充值失败(人工处理)
private String top_up_num;
public String getTop_up_num() {
return top_up_num;
}
public void setTop_up_num(String top_up_num) {
this.top_up_num = top_up_num;
}
public int getGid() {
return gid;
......
package com.library.service.Impl;
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;
import com.library.model.AutomaticQueueModel;
import com.library.model.OrderLogModel;
import com.library.model.OrderModel;
import com.library.model.SegmentModel;
import com.library.service.AutomaticCodeService;
import com.library.util.Paygo24Utils;
import com.library.util.TransformationTools;
......@@ -80,15 +85,20 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
//添加订单操作日志
currencyMapper.AddTableForMysql(TransformationTools.CreatAddMysql(orderLogModel, NameValue.Table_order_log, "id", null));
// //去充值
// Paygo24Utils paygo = new Paygo24Utils();
// String result = paygo.payment(automaticQueueModel.getOrder_phone(), automaticQueueModel.getSegment_id(), automaticQueueModel.getOrder_money());
// desc = result;//描述
// if (result.equals(Paygo24Utils.SUCCESS)) {
// success = true;
// } else {
// success = false;
// }
//去充值
Paygo24Utils paygo = new Paygo24Utils();
String result = paygo.payment(automaticQueueModel.getOrder_phone(), automaticQueueModel.getSegment_id(), automaticQueueModel.getOrder_money());
desc = result;//描述
if (result.equals(Paygo24Utils.SUCCESS)) {
success = true;
} else {
success = false;
}
ResultsModel resultsModel = sentTopup(automaticQueueModel);
desc = resultsModel.getTip();
success = resultsModel.isSuccessful();
} catch (Exception e) {
e.printStackTrace();
......@@ -98,9 +108,65 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
// 自动处理结果
this.automaticForTackResult(automaticQueueModel, success, desc);
}
}
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";
private ResultsModel sentTopup(AutomaticQueueModel automaticQueueModel) {
ResultsModel resultsModel = null;
try {
//订单id 统一一下长度八位数
String orderNumId = String.valueOf(automaticQueueModel.getOrder_code_id() + 10000000);
//通过手机前三位获取到运营商
String phoneThree = automaticQueueModel.getOrder_phone().substring(0, 3);
Map<String, Object> map = automaticQueueMapper.selectSegment(phoneThree);
//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());
} else if (segmentModel.getOperator().equals(SegmentType_Metfone)) {
resultsModel = MetfoneSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
} else if (segmentModel.getOperator().equals(SegmentType_Smart)) {
resultsModel = SmartSentUtils.sentTopUp(automaticQueueModel.getOrder_phone(), automaticQueueModel.getOrder_money().intValue(), orderNumId);
} else if (segmentModel.getOperator().equals(SegmentType_Seatel)) {
Paygo24Utils paygo = new Paygo24Utils();
String result = paygo.payment(automaticQueueModel.getOrder_phone(), automaticQueueModel.getSegment_id(), automaticQueueModel.getOrder_money());
resultsModel = new ResultsModel();
resultsModel.setTip(result);//描述
if (result.equals(Paygo24Utils.SUCCESS)) {
resultsModel.setSuccessful(true);
} else {
resultsModel.setSuccessful(false);
}
} else {
Paygo24Utils paygo = new Paygo24Utils();
String result = paygo.payment(automaticQueueModel.getOrder_phone(), automaticQueueModel.getSegment_id(), automaticQueueModel.getOrder_money());
resultsModel = new ResultsModel();
resultsModel.setTip(result);//描述
if (result.equals(Paygo24Utils.SUCCESS)) {
resultsModel.setSuccessful(true);
} else {
resultsModel.setSuccessful(false);
}
}
return resultsModel;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//自动处理结果
@Override
public void automaticForTackResult(AutomaticQueueModel early, boolean success, String desc) {
......@@ -145,7 +211,7 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
orderLogModel.setLog_order_number(early.getOrder_num());
orderLogModel.setLog_type(4);
orderLogModel.setTime(newTime);
orderLogModel.setLog_content("充值失败,转入人工处理-"+desc);
orderLogModel.setLog_content("充值失败,转入人工处理-" + desc);
//添加订单操作日志
currencyMapper.AddTableForMysql(TransformationTools.CreatAddMysql(orderLogModel, NameValue.Table_order_log, "id", null));
......@@ -158,7 +224,7 @@ public class AutomaticCodeServiceImpl implements AutomaticCodeService {
}
//移除自动充值队列中
currencyMapper.DeleteDataById(NameValue.Table_automatic_queue,early.getId());
currencyMapper.DeleteDataById(NameValue.Table_automatic_queue, early.getId());
}
......
package com.library.test;
import net.sf.json.JSONObject;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
public class test2 {
public static void main(String[] args) {
try {
String str2="v2VSgq7Q2Yqhp36s5TOzD13J5FMa:Go0wTNZdR53xNbxHwhneLF1p40Ma";
String text2 = Base64.getEncoder().encodeToString(str2.getBytes("UTF-8"));
System.out.println("Basic "+text2);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp = sdf.format(new Date());
System.out.println(timestamp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -17,33 +17,8 @@ import java.util.GregorianCalendar;
*/
public class ylmTest {
public static void main(String[] args) {
// String phone="13000000000";
// String password="123";
// String str=MD5Util.MD5Encode(password,null);
// String str2=MD5Util.MD5Encode( phone.substring(0,6)+str,null);
//
// System.out.println(str2);
//
//
System.out.println(System.currentTimeMillis());
System.out.println(new Timestamp(System.currentTimeMillis()));
//
// GregorianCalendar gcal = new GregorianCalendar();
// gcal.setTime(new Date());
// XMLGregorianCalendar xgcal = null;
// try {
// xgcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
// System.out.println(new Gson().toJson(xgcal));
// System.out.println(xgcal);
// } catch (DatatypeConfigurationException e) {
// e.printStackTrace();
// // Logger.getLogger(Paygo24Utils.class.getName()).log(Level.SEVERE,
// // null, e);
//
// }
//{"status":0,"code":"MSG_SUCCESS","message":"Success","txDetail":{"transDetailId":4551,"transDetailCode":"37363eef5895e3b0db52f3f79f611251","merchantId":null,"merchantCode":"ePayTest","merchantServiceId":null,"merchantServiceType":"TOPUP","transTime":1577946364313,"emServiceProvideId":null,"emServiceId":null,"emServiceCode":null,"status":1,"paymentType":null,"refId":"1121","transDescription":null,"transAmount":1.0,"currencyCode":"USD","transAmountConvert":null,"currencyExchangeRate":null,"acceptPaymentCurrencyCode":null,"discountType":"1","discountAmount":0.05,"commissionAmount":null,"transFee":0.0,"transTotalAmount":0.95,"transTotalAmountConvert":null,"customerPhoneNumber":"855883970777","customerName":null,"description":null,"paidTime":null,"paidTid":null,"paidEmoneyAccount":null,"paidFee":null,"paidChanel":null,"paidAmount":null,"paidCurrencyCode":null,"paidTip":null,"paidTotalAmount":null,"emCoporationId":null,"emCoporationMsisdn":null,"txPaymentTokenId":"S6a6oWb3RB2YAU48Wy6RbZwT01AUTh10xtNvcqOgMib32KB+KnUy68bVTm/G0GPKMRUHEM4OqAsYGxOKpkgANCDtX133IKCmw2+Y9OhUQkQOUq8HAD4EySiM0GZ/xkbJey9dPYmebRCouy5iwRl7acQbuMsHWsTCc7CEFUFNyyZzkGKjOXW8v/nq5tB7D/lxeXsspd9rHURVC4gc/NDU7MZPRxd4QPMMyRR2tZ7xHxIOXt6map1msd7Ce5uMD5mgFgNnyc4IVitNbAqGJuBeR3ixWYlaLF41LqJXgMwvGMhMbcAGlPzTMw97dREegXWCnpi4iLygk5tieyUZ5S34hg==","paymentQrCode":null},"pinCode":null,"billPaymentInfo":null}
}
......
......@@ -32,6 +32,9 @@
<listener>
<listener-class>com.library.util.SessionCounter</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
......
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