836 lines
45 KiB
C#
836 lines
45 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Configuration;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading;
|
||
using System.Web.Services;
|
||
using SDK = WebService.SDK;
|
||
using Newtonsoft.Json.Linq;
|
||
using Newtonsoft.Json;
|
||
using OperatingData.SDK;
|
||
using HCC = HZQR.Common.Common;
|
||
using HZQR.Common;
|
||
using WebService.SDK;
|
||
using WebService.SDK.BaiduAI.Model.FaceModel;
|
||
using WebService.SDK.BaiduAI;
|
||
using EShangTechService;
|
||
using System.IO;
|
||
using OracleHelper = OperatingData.SDK.OracleHelper;
|
||
|
||
namespace ThirdPartInterfaceService
|
||
{
|
||
/// <summary>
|
||
/// Service 的摘要说明
|
||
/// </summary>
|
||
[WebService(Namespace = "http://tempuri.org/")]
|
||
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
|
||
[System.ComponentModel.ToolboxItem(false)]
|
||
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
|
||
[System.Web.Script.Services.ScriptService]
|
||
public class Service : System.Web.Services.WebService
|
||
{
|
||
protected static string _OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString();
|
||
//protected static string _OracleConnStrPayList = ConfigurationManager.AppSettings["OracleConnStrPayList"].ToString();
|
||
protected static string _OracleHelperString = ConfigurationManager.AppSettings["OracleHelperString"].ToString();
|
||
protected static string VerifyCode = ConfigurationManager.AppSettings["VerifyCode"].ToString();
|
||
|
||
#region 方法 -> 移动支付交易统计传输接口
|
||
/// <summary>
|
||
/// 移动支付交易统计传输接口
|
||
/// </summary>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="jsonString">Json格式数据</param>
|
||
/// <returns></returns>
|
||
[WebMethod]
|
||
public string DailyMobilepay(string code, string jsonString)
|
||
{
|
||
try
|
||
{
|
||
OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0],
|
||
_OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]);
|
||
WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString);
|
||
|
||
//string[] codes = OperationDataHelper<string>.IsCorrectCode(_OracleHelper, code);
|
||
//if (codes == null)
|
||
//{
|
||
// WebService.SDK.LogHelper.WriteSendLog(code);
|
||
// return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}";
|
||
//}
|
||
WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators;
|
||
try
|
||
{
|
||
if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators))
|
||
{
|
||
WebService.SDK.LogHelper.WriteSendLog(code);
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
WebService.SDK.LogHelper.WriteSendLog(code);
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}";
|
||
}
|
||
string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" };
|
||
if (!string.IsNullOrEmpty(jsonString))
|
||
{
|
||
JArray _JsonArray = JArray.Parse(jsonString);
|
||
for (int i = 0; i < _JsonArray.Count; i++)
|
||
{
|
||
JObject _Json = JObject.Parse(_JsonArray[i].ToString());
|
||
foreach (string _RequiredData in _RequiredDatas)
|
||
{
|
||
if (_Json.Property(_RequiredData.ToUpper()) == null &&
|
||
_Json.Property(_RequiredData.ToLower()) == null)
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) +
|
||
"组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}";
|
||
}
|
||
|
||
List<Model.HIGHWAY.MPSEPARATE> _MPSEPARATEList = JsonHelper.JSONStringToList<Model.HIGHWAY.MPSEPARATE>(jsonString, "(TRADE_DATE)");
|
||
if (_MPSEPARATEList != null && _MPSEPARATEList.Count > 0)
|
||
{
|
||
foreach (Model.HIGHWAY.MPSEPARATE _MPSEPARATE in _MPSEPARATEList)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(_MPSEPARATE.TRANSACTION_TRENCH))
|
||
{
|
||
_MPSEPARATE.TRANSACTION_TRENCH = ((int)_MobilePayOperators).ToString();
|
||
}
|
||
OperationDataHelper<Model.HIGHWAY.MPSEPARATE>.InsertTableData(_OracleHelper, _MPSEPARATE,
|
||
"HIGHWAY_EXCHANGE.T_MPSEPARATE", "MPSEPARATE_ID", "HIGHWAY_EXCHANGE.SEQ_MPSEPARATE.NEXTVAL");
|
||
}
|
||
return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" +
|
||
JsonHelper.ListToJson(_MPSEPARATEList, "rows", false) + "}";
|
||
}
|
||
else
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 移动支付交易流水传输接口
|
||
/// <summary>
|
||
/// 移动支付交易统计传输接口
|
||
/// </summary>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="jsonString">Json格式数据</param>
|
||
/// <returns></returns>
|
||
[WebMethod]
|
||
public string DailyMobilepayList(string code, string jsonString)
|
||
{
|
||
try
|
||
{
|
||
string _OracleConnStrPayList = ConfigurationManager.AppSettings["OracleConnStr"].ToString();
|
||
OracleHelper _OracleHelper = new OracleHelper(_OracleConnStrPayList.Split(',')[0],
|
||
_OracleConnStrPayList.Split(',')[1], _OracleConnStrPayList.Split(',')[2], _OracleConnStrPayList.Split(',')[3]);
|
||
WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString);
|
||
|
||
//string[] codes = OperationDataHelper<string>.IsCorrectCode(_OracleHelper, code);
|
||
//if (codes == null)
|
||
//{
|
||
// WebService.SDK.LogHelper.WriteSendLog(code);
|
||
// return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}";
|
||
//}
|
||
WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators;
|
||
try
|
||
{
|
||
if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators))
|
||
{
|
||
WebService.SDK.LogHelper.WriteSendLog(code);
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
WebService.SDK.LogHelper.WriteSendLog(code);
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}";
|
||
}
|
||
string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" };
|
||
if (!string.IsNullOrEmpty(jsonString))
|
||
{
|
||
JArray _JsonArray = JArray.Parse(jsonString);
|
||
for (int i = 0; i < _JsonArray.Count; i++)
|
||
{
|
||
JObject _Json = JObject.Parse(_JsonArray[i].ToString());
|
||
foreach (string _RequiredData in _RequiredDatas)
|
||
{
|
||
if (_Json.Property(_RequiredData.ToUpper()) == null &&
|
||
_Json.Property(_RequiredData.ToLower()) == null)
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) +
|
||
"组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}";
|
||
}
|
||
|
||
List<Model.HIGHWAY.MobilePayment_Records> recordsList =
|
||
JsonHelper.JSONStringToList<Model.HIGHWAY.MobilePayment_Records>(jsonString, "(TRADE_DATE)");
|
||
if (recordsList != null && recordsList.Count > 0)
|
||
{
|
||
foreach (Model.HIGHWAY.MobilePayment_Records _MobilePayment_Records in recordsList)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(_MobilePayment_Records.Transaction_Trench))
|
||
{
|
||
_MobilePayment_Records.Transaction_Trench = ((int)_MobilePayOperators).ToString();
|
||
}
|
||
if (_MobilePayment_Records.Ticket_Code.Contains("-") || _MobilePayment_Records.Ticket_Code.Substring(0, 1) == "B")
|
||
{
|
||
_MobilePayment_Records.Ticket_Type = 1;
|
||
}
|
||
else
|
||
{
|
||
_MobilePayment_Records.Ticket_Type = 0;
|
||
}
|
||
try
|
||
{
|
||
//拆分服务区、门店、机器编号
|
||
string ticketCode = _MobilePayment_Records.Ticket_Code;
|
||
_MobilePayment_Records.ServerPart_Code = ticketCode.Substring(0, 6);
|
||
_MobilePayment_Records.ServerPartShop_Code = (ticketCode.Length == 28 ? ticketCode.Substring(6, 4) : ticketCode.Substring(6, 6));
|
||
_MobilePayment_Records.MachineCode = (ticketCode.Length == 28 ? ticketCode.Substring(10, 4) : ticketCode.Substring(12, 4));
|
||
//拆分下单时间
|
||
string dateString = ticketCode.Substring(ticketCode.Length - 14, 8);
|
||
string hourString = ticketCode.Substring(ticketCode.Length - 6, 6);
|
||
string dateStr = dateString.Substring(0, 4) + "-" + dateString.Substring(4, 2) + "-" + dateString.Substring(6, 2);
|
||
string hourStr = hourString.Substring(0, 2) + ":" + hourString.Substring(2, 2) + ":" + hourString.Substring(4, 2);
|
||
DateTime Order_Date = Convert.ToDateTime(dateStr + " " + hourStr);
|
||
//string minutes = ticketCode.Substring(ticketCode.Length - 14, 8);
|
||
_MobilePayment_Records.Order_Date = Order_Date;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "DailyMobilepayList", "移动支付交易流水传输接口");
|
||
}
|
||
|
||
OperationDataHelper<Model.HIGHWAY.MobilePayment_Records>.InsertTableData(_OracleHelper, _MobilePayment_Records,
|
||
"HIGHWAY_SELLDATA.T_MOBILEPAYMENT_RECORDS", "MOBILEPAYMENT_RECORDS_ID", "HIGHWAY_SELLDATA.SEQ_MOBILEPAYMENT_RECORDS.NEXTVAL");
|
||
}
|
||
return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" +
|
||
JsonHelper.ListToJson(recordsList, "rows", false) + "}";
|
||
}
|
||
else
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}";
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 提供给第三方做移动支付通讯
|
||
|
||
#region 创建对应的支付
|
||
[WebMethod]
|
||
/// <summary>
|
||
/// 支付参数 -反扫
|
||
/// </summary>
|
||
/// <param name="timespan">时间戳</param>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="BusinessCode">店铺绑定码</param>
|
||
/// <param name="TicketCode">交易订单号</param>
|
||
/// <param name="TicketPrice">交易金额</param>
|
||
/// <param name="UserPayCode">支付授权码</param>
|
||
/// <param name="PayType">支付方式</param>
|
||
/// <returns></returns>
|
||
public string createpay(string timespan, string code, string BusinessCode, string TicketCode,
|
||
string TicketPrice, string UserPayCode, string PayType = "ALIPAY")
|
||
{
|
||
if (!Common.Verify(timespan, code, VerifyCode))
|
||
{
|
||
return JsonConvert.SerializeObject(Result.Fail("验签失败"));
|
||
}
|
||
string ResString = null;
|
||
PayCreateResult _PayCreateResult = new PayCreateResult();
|
||
//if (string.IsNullOrEmpty(TICKETCODE) || string.IsNullOrEmpty(_SERVERPARTCODE) ||
|
||
// !_SERVERPARTCODE.Contains(TICKETCODE.Substring(0, 6)))
|
||
//{
|
||
// _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.用户不存在)).ToString();
|
||
// _PayCreateResult.result_desc = "参数配置异常,服务区不匹配!";
|
||
// _PayCreateResult.trade_no = "";
|
||
// _PayCreateResult.trade_num = "";
|
||
|
||
// //return JSonHelper.ObjectToJson<PayCreateResult>(_PayCreateResult, false);
|
||
// return JsonConvert.SerializeObject(Result.Fail("参数配置异常,服务区不匹配!", _PayCreateResult));
|
||
//}
|
||
|
||
string ticket_price = TicketPrice;
|
||
//string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE);
|
||
string[] MerchantInfo = new string[1] { BusinessCode };
|
||
string PayTime = TicketCode.Substring(TicketCode.Length - 14, 14);
|
||
string PayOutTime = DateTime.Parse(PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" +
|
||
PayTime.Substring(6, 2) + " " + PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" +
|
||
PayTime.Substring(12, 2)).AddMinutes(5).ToString("yyyyMMddHHmmss");
|
||
|
||
LogHelper.WriteReceiveLog("反扫-请求参数-START[createpay]:订单编码(TICKETCODE):" + TicketCode +
|
||
",金额(TICKETPRICE):" + TicketPrice + "," + CommonHelper.GetPayType(PayType) +
|
||
"用户编码(USERPAYCODE):" + UserPayCode + ",商户编码(memberCode):" + MerchantInfo[0]);
|
||
|
||
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")))
|
||
{
|
||
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"));
|
||
}
|
||
CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\" + TicketCode + ".txt", "");
|
||
|
||
try
|
||
{
|
||
ResString = Common.merchantscan(UserPayCode, TicketCode, "服务区商品", ticket_price, MerchantInfo, "");
|
||
JObject _JObject = new JObject();
|
||
try
|
||
{
|
||
//判断类型
|
||
if (ResString != "")
|
||
{
|
||
_JObject = JObject.Parse(ResString);
|
||
|
||
if (Convert.ToInt32(_JObject["errcode"]) == 0)
|
||
{
|
||
switch (_JObject["errmsg"].ToString().ToUpper())
|
||
{
|
||
case "SUCCEED":
|
||
if (_JObject["order_info"]["pay_status"].ToString() == "已支付")//支付状态
|
||
{
|
||
_PayCreateResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayCreateResult.result_desc = "SUCCESS";//支付跳转链接
|
||
_PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号
|
||
_PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
}
|
||
else if (_JObject["order_info"]["pay_status"].ToString() == "已取消")
|
||
{
|
||
_PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号
|
||
_PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
_PayCreateResult.result_desc = _JObject["errmsg"].ToString();
|
||
}
|
||
else if (!string.IsNullOrEmpty(_JObject["order_info"]["pay_status"].ToString()) &&
|
||
(_JObject["order_info"]["pay_status"].ToString().Contains("支付中") ||
|
||
_JObject["order_info"]["pay_status"].ToString().Contains("用户支付中")))//支付状态
|
||
{
|
||
var r = JsonConvert.DeserializeObject<Result<PayQueryResult>>(querypay(
|
||
timespan, code, BusinessCode, TicketCode, "", TicketPrice, PayType));
|
||
if (r.IsSuccess)
|
||
{
|
||
_JObject = JObject.Parse(JsonConvert.SerializeObject(r.ResultData));
|
||
_PayCreateResult.result_code = _JObject["result_code"].ToString();
|
||
_PayCreateResult.result_desc = _JObject["result_desc"].ToString();//支付状态
|
||
_PayCreateResult.trade_no = _JObject["trade_no"].ToString();//客无忧订单号
|
||
_PayCreateResult.trade_num = _JObject["trade_num"].ToString();//第三方订单号
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayCreateResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayCreateResult.trade_no = "";
|
||
_PayCreateResult.trade_num = "";
|
||
|
||
}
|
||
break;
|
||
default:
|
||
_PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayCreateResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayCreateResult.trade_no = "";
|
||
_PayCreateResult.trade_num = "";
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayCreateResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayCreateResult.trade_no = "";
|
||
_PayCreateResult.trade_num = "";
|
||
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayCreateResult.result_desc = "系统异常";
|
||
_PayCreateResult.trade_no = "";
|
||
_PayCreateResult.trade_num = "";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayCreateResult.result_desc = "错误为:" + ResString.ToString();// +"____其他错误:" + ex.Message;
|
||
_PayCreateResult.trade_no = "";
|
||
_PayCreateResult.trade_num = "";
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
|
||
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData"))
|
||
{
|
||
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData");
|
||
}
|
||
CommonHelper.SaveTextFile("InsertData\\" + TicketCode + ".txt", TicketCode + "|" + PayType + "|" + TicketPrice + "|" +
|
||
_PayCreateResult.result_code + "|" + _PayCreateResult.result_desc + "|" + _PayCreateResult.trade_no + "|" +
|
||
_PayCreateResult.trade_num + "|" + JSonHelper.ObjectToJson<PayCreateResult>(_PayCreateResult, false) +
|
||
"|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString());
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteReceiveLog(ex.Message);
|
||
}
|
||
LogHelper.WriteSendLog("反扫-最终返回值END-[createpay]:" +
|
||
JSonHelper.ObjectToJson<PayCreateResult>(_PayCreateResult, false));
|
||
//return JSonHelper.ObjectToJson<PayCreateResult>(_PayCreateResult, false);
|
||
return JsonConvert.SerializeObject(FromPayCreateResult(_PayCreateResult));
|
||
}
|
||
#endregion
|
||
|
||
#region 查询对应的支付
|
||
[WebMethod]
|
||
/// <summary>
|
||
/// 查询参数
|
||
/// </summary>
|
||
/// <param name="timespan">时间戳</param>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="BusinessCode">店铺绑定码</param>
|
||
/// <param name="TicketCode">交易订单号</param>
|
||
/// <param name="OutTradeNo">商户订单号</param>
|
||
/// <param name="TicketPrice">交易金额</param>
|
||
/// <param name="PayType">支付方式</param>
|
||
/// <returns></returns>
|
||
public string querypay(string timespan, string code, string BusinessCode, string TicketCode,
|
||
string OutTradeNo, string TicketPrice, string PayType = "ALIPAY")
|
||
{
|
||
if (!Common.Verify(timespan, code, VerifyCode))
|
||
{
|
||
return JsonConvert.SerializeObject(Result.Fail("验签失败"));
|
||
}
|
||
|
||
string ResString = null;
|
||
//string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE);
|
||
string[] MerchantInfo = new string[1] { BusinessCode };
|
||
|
||
PayQueryResult _PayQueryResult = new PayQueryResult();
|
||
try
|
||
{
|
||
LogHelper.WriteSendLog("支付…查询请求参数-START[querypay]:订单编码(TICKETCODE):" + TicketCode +
|
||
",金额(TICKETPRICE):" + TicketPrice + ",付款方式:" + CommonHelper.GetPayType(PayType) +
|
||
",商户秘钥(term_Code):" + MerchantInfo[0]);
|
||
|
||
//查询数据
|
||
ResString = Common.TradeQuery(TicketCode, OutTradeNo, MerchantInfo[0]);
|
||
|
||
if (ResString != null)
|
||
{
|
||
JObject _JObject = JObject.Parse(ResString);
|
||
if (Convert.ToInt32(_JObject["errcode"]) == 0)
|
||
{
|
||
switch (_JObject["errmsg"].ToString().ToUpper())
|
||
{
|
||
case "SUCCEED":
|
||
switch (_JObject["order_info"]["pay_status"].ToString())
|
||
{
|
||
case "支付中":
|
||
case "用户支付中":
|
||
LogHelper.WriteSendLog("(" + TicketCode + ")等待支付中......");
|
||
//System.Threading.Thread.Sleep(4 * 1000);
|
||
for (int SearchCount = 0; SearchCount < 2; SearchCount++)
|
||
{
|
||
_JObject = JObject.Parse(querypay(TicketCode, OutTradeNo, MerchantInfo));
|
||
_PayQueryResult.result_code = _JObject["result_code"].ToString();
|
||
_PayQueryResult.result_desc = _JObject["result_desc"].ToString();
|
||
_PayQueryResult.trade_no = _JObject["trade_no"].ToString();
|
||
_PayQueryResult.trade_num = _JObject["trade_num"].ToString();
|
||
if (_PayQueryResult.result_code == ((int)CommonHelper.ResCode.订单待支付).ToString() &&
|
||
SearchCount < 1)
|
||
{
|
||
LogHelper.WriteSendLog("(" + TicketCode + ")等待支付中......");
|
||
System.Threading.Thread.Sleep(1 * 1000);
|
||
continue;
|
||
}
|
||
else
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
case "已支付":
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayQueryResult.result_desc = "SUCCESS";//支付状态
|
||
_PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
_PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号
|
||
break;
|
||
case "已退款":
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayQueryResult.result_desc = "已退款";//支付状态
|
||
_PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
_PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号
|
||
break;
|
||
default:
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "系统异常";
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message;
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
LogHelper.WriteSendLog("支付…最终数据返回值-END[querypay]:" + JSonHelper.ObjectToJson(_PayQueryResult, false));
|
||
return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult));
|
||
}
|
||
#endregion
|
||
|
||
#region 移动支付退款-反扫
|
||
[WebMethod]
|
||
/// <summary>
|
||
/// 退款参数
|
||
/// </summary>
|
||
/// <param name="timespan">时间戳</param>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="BusinessCode">店铺绑定码</param>
|
||
/// <param name="mchnt_order_no">平台订单号</param>
|
||
/// <param name="refund_order_no">退货订单号</param>
|
||
/// <param name="refund_amt">交易金额</param>
|
||
/// <param name="order_type">支付方式</param>
|
||
/// <returns></returns>
|
||
public string refundpay(string timespan, string code, string BusinessCode, string mchnt_order_no,
|
||
string refund_order_no, string refund_amt, string order_type)
|
||
{
|
||
if (!Common.Verify(timespan, code, VerifyCode))
|
||
{
|
||
return JsonConvert.SerializeObject(Result.Fail("验签失败"));
|
||
}
|
||
string ResString = null;
|
||
string ticket_price = "";
|
||
//string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE);
|
||
string[] MerchantInfo = new string[1] { BusinessCode };
|
||
string PayTime = refund_order_no.Substring(refund_order_no.Length - 14, 14);
|
||
PayTime = PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" + PayTime.Substring(6, 2) + " " +
|
||
PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" + PayTime.Substring(12, 2);
|
||
|
||
try
|
||
{
|
||
LogHelper.WriteReceiveLog("反扫…退款-START[refundpay]:订单编码(TICKETCODE):" + refund_order_no +
|
||
",退款金额(TICKETPRICE):" + refund_amt + "," + CommonHelper.GetPayType(order_type) +
|
||
"退款码(USERPAYCODE):" + mchnt_order_no + "商户秘钥(term_Code):" + MerchantInfo[0]);
|
||
|
||
ticket_price = Math.Round(decimal.Parse(refund_amt), 2).ToString();
|
||
}
|
||
catch { }
|
||
|
||
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")))
|
||
{
|
||
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"));
|
||
}
|
||
CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", "");
|
||
|
||
JObject _JObject = new JObject();
|
||
PayQueryResult _PayQueryResult = new PayQueryResult();
|
||
try
|
||
{
|
||
ResString = Common.TradeRefund("001", "001", ticket_price, "商品退款", "", mchnt_order_no, refund_order_no, MerchantInfo[0]);
|
||
|
||
//查询数据
|
||
if (ResString != null)
|
||
{
|
||
_JObject = JObject.Parse(ResString);
|
||
if (_JObject["errcode"].ToString() == "0")
|
||
{
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayQueryResult.result_desc = "SUCCESS";
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
else
|
||
{
|
||
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayQueryResult.trade_no = mchnt_order_no;
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "系统异常:" + ResString;
|
||
_PayQueryResult.trade_no = mchnt_order_no;
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message;
|
||
_PayQueryResult.trade_no = mchnt_order_no;
|
||
_PayQueryResult.trade_num = "";
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
|
||
LogHelper.WriteSendLog("反扫…最终返回值-END[refundpay]:" +
|
||
JSonHelper.ObjectToJson<PayQueryResult>(_PayQueryResult, false));
|
||
return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult));
|
||
}
|
||
#endregion
|
||
|
||
#region 退款信息查询
|
||
/// <summary>
|
||
/// 退款参数
|
||
/// </summary>
|
||
/// <param name="timespan">时间戳</param>
|
||
/// <param name="code">授权码</param>
|
||
/// <param name="BusinessCode">店铺绑定码</param>
|
||
/// <param name="out_trade_no">商户订单号</param>
|
||
/// <param name="transaction_id">平台订单号</param>
|
||
/// <param name="refund_order_no">商户退款单号</param>
|
||
/// <param name="refund_id">平台退款单号</param>
|
||
/// <returns></returns>
|
||
[WebMethod]
|
||
public string refundquery(string timespan, string code, string BusinessCode, string refund_order_no)
|
||
{
|
||
if (!Common.Verify(timespan, code, VerifyCode))
|
||
{
|
||
return JsonConvert.SerializeObject(Result.Fail("验签失败"));
|
||
}
|
||
string ResString = null;
|
||
//string[] MerchantInfo = Common.GetMerchantInfo(out_refund_no);
|
||
string[] MerchantInfo = new string[1] { BusinessCode };
|
||
LogHelper.WriteSendLog("退款查询…请求参数-START[refundquery]:商户退款单号(out_refund_no):" +
|
||
refund_order_no + ",商户编码(memberCode):" + MerchantInfo[0] );
|
||
|
||
if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")))
|
||
{
|
||
Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"));
|
||
}
|
||
CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", "");
|
||
|
||
PayQueryResult _PayQueryResult = new PayQueryResult();
|
||
try
|
||
{
|
||
ResString = Common.RefundQuery("", "", refund_order_no, MerchantInfo[0]);
|
||
//查询数据
|
||
if (ResString != null)
|
||
{
|
||
JObject _JObject = JObject.Parse(ResString);
|
||
if (_JObject["errcode"].ToString() == "0")
|
||
{
|
||
if (_JObject["status"].ToString() == "退款成功")
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.成功).ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = refund_order_no;
|
||
_PayQueryResult.result_desc = "SUCCESS";
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = refund_order_no;
|
||
_PayQueryResult.result_desc = _JObject["remark"].ToString();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = refund_order_no;
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "系统异常";
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = refund_order_no;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message;
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = refund_order_no;
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
|
||
LogHelper.WriteSendLog("退款查询…最终返回值[refundquery]:" +
|
||
JSonHelper.ObjectToJson(_PayQueryResult, false));
|
||
return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult));
|
||
}
|
||
#endregion
|
||
|
||
#region 查询方法
|
||
private string querypay(string TICKETCODE, string OUT_TRADE_NO, string[] MerchantInfo)
|
||
{
|
||
string ResString = null;
|
||
//if (MerchantInfo == null)
|
||
//{
|
||
// MerchantInfo = Common.GetMerchantInfo(TICKETCODE);
|
||
//}
|
||
LogHelper.WriteSendLog("查询…请求参数-START[querypay]:(TICKETCODE):" + TICKETCODE + ",OUT_TRADE_NO:" +
|
||
OUT_TRADE_NO + ",商户秘钥(term_Code):" + MerchantInfo[0]);
|
||
ResString = Common.TradeQuery(TICKETCODE, OUT_TRADE_NO, MerchantInfo[0]);
|
||
|
||
PayQueryResult _PayQueryResult = new PayQueryResult();
|
||
try
|
||
{
|
||
//查询数据
|
||
if (ResString != null)
|
||
{
|
||
JObject _JObject = JObject.Parse(ResString);
|
||
if (Convert.ToInt32(_JObject["errcode"]) == 0)
|
||
{
|
||
switch (_JObject["errmsg"].ToString().ToUpper())
|
||
{
|
||
case "SUCCEED":
|
||
switch (_JObject["order_info"]["pay_status"].ToString())
|
||
{
|
||
case "支付中":
|
||
case "用户支付中":
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.订单待支付)).ToString();
|
||
_PayQueryResult.result_desc = "USERPAYING";
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = TICKETCODE;
|
||
break;
|
||
case "已支付":
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayQueryResult.result_desc = "SUCCESS";//支付状态
|
||
_PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
_PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号
|
||
break;
|
||
case "已退款":
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString();
|
||
_PayQueryResult.result_desc = "已退款";//支付状态
|
||
_PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号
|
||
_PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号
|
||
break;
|
||
default:
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = TICKETCODE;
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = TICKETCODE;
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString();
|
||
_PayQueryResult.result_desc = _JObject["errmsg"].ToString();
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = TICKETCODE;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "系统异常";
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
_PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString();
|
||
_PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message;
|
||
_PayQueryResult.trade_no = "";
|
||
_PayQueryResult.trade_num = "";
|
||
LogHelper.WriteSendLog(ex.Message);
|
||
}
|
||
LogHelper.WriteSendLog("查询…最终返回值-END[querypay]:" +
|
||
JSonHelper.ObjectToJson<PayQueryResult>(_PayQueryResult, false));
|
||
return JSonHelper.ObjectToJson(_PayQueryResult, false);
|
||
}
|
||
|
||
|
||
private Result<PayResultRes> FromPayQueryResult(PayQueryResult payQueryResult) {
|
||
|
||
return new Result<PayResultRes>()
|
||
{
|
||
ResultCode = payQueryResult.result_code,
|
||
ResultDesc = payQueryResult.result_desc,
|
||
ResultData = new PayResultRes()
|
||
{
|
||
trade_no = payQueryResult.trade_no,
|
||
trade_num = payQueryResult.trade_num
|
||
}
|
||
};
|
||
}
|
||
|
||
private Result<PayResultRes> FromPayCreateResult(PayCreateResult payCreateResult)
|
||
{
|
||
|
||
return new Result<PayResultRes>()
|
||
{
|
||
ResultCode = payCreateResult.result_code,
|
||
ResultDesc = payCreateResult.result_desc,
|
||
ResultData = new PayResultRes()
|
||
{
|
||
trade_no = payCreateResult.trade_no,
|
||
trade_num = payCreateResult.trade_num
|
||
}
|
||
};
|
||
}
|
||
|
||
#endregion
|
||
|
||
#endregion
|
||
}
|
||
}
|