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
{
///
/// Service 的摘要说明
///
[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 方法 -> 移动支付交易统计传输接口
///
/// 移动支付交易统计传输接口
///
/// 授权码
/// Json格式数据
///
[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.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 _MPSEPARATEList = JsonHelper.JSONStringToList(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.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 方法 -> 移动支付交易流水传输接口
///
/// 移动支付交易统计传输接口
///
/// 授权码
/// Json格式数据
///
[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.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 recordsList =
JsonHelper.JSONStringToList(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.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]
///
/// 支付参数 -反扫
///
/// 时间戳
/// 授权码
/// 店铺绑定码
/// 交易订单号
/// 交易金额
/// 支付授权码
/// 支付方式
///
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, 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>(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, false) +
"|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString());
}
catch (Exception ex)
{
LogHelper.WriteReceiveLog(ex.Message);
}
LogHelper.WriteSendLog("反扫-最终返回值END-[createpay]:" +
JSonHelper.ObjectToJson(_PayCreateResult, false));
//return JSonHelper.ObjectToJson(_PayCreateResult, false);
return JsonConvert.SerializeObject(FromPayCreateResult(_PayCreateResult));
}
#endregion
#region 查询对应的支付
[WebMethod]
///
/// 查询参数
///
/// 时间戳
/// 授权码
/// 店铺绑定码
/// 交易订单号
/// 商户订单号
/// 交易金额
/// 支付方式
///
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]
///
/// 退款参数
///
/// 时间戳
/// 授权码
/// 店铺绑定码
/// 平台订单号
/// 退货订单号
/// 交易金额
/// 支付方式
///
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, false));
return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult));
}
#endregion
#region 退款信息查询
///
/// 退款参数
///
/// 时间戳
/// 授权码
/// 店铺绑定码
/// 商户订单号
/// 平台订单号
/// 商户退款单号
/// 平台退款单号
///
[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, false));
return JSonHelper.ObjectToJson(_PayQueryResult, false);
}
private Result FromPayQueryResult(PayQueryResult payQueryResult) {
return new Result()
{
ResultCode = payQueryResult.result_code,
ResultDesc = payQueryResult.result_desc,
ResultData = new PayResultRes()
{
trade_no = payQueryResult.trade_no,
trade_num = payQueryResult.trade_num
}
};
}
private Result FromPayCreateResult(PayCreateResult payCreateResult)
{
return new Result()
{
ResultCode = payCreateResult.result_code,
ResultDesc = payCreateResult.result_desc,
ResultData = new PayResultRes()
{
trade_no = payCreateResult.trade_no,
trade_num = payCreateResult.trade_num
}
};
}
#endregion
#endregion
}
}