2025-03-28 09:49:56 +08:00

836 lines
45 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}