using Newtonsoft.Json;
using POSV.Payment.AllinPay.Models.ParamModels;
using POSV.Payment.AllinPay.Models.ResponseModels;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel.PeerResolvers;
using System.Text;
using RegisterResponseInfo = POSV.Payment.AllinPay.Models.ResponseModels.RegisterResponseInfo;
namespace POSV.Payment.AllinPay
{
public static class AllinpayHelper
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
///
/// 收款方创建
///
///
///
public static CheckResultResponseInfo RegisterMember(RegisterParamInfo info)
{
var data = AllinpayLib.Request(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
///
/// 绑定手机前发送验证码
///
///
///
public static CheckResultResponseInfo SendVerificationCode(SendVerificationCodeParamInfo info)
{
var data = AllinpayLib.Request(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
///
/// 绑定手机
///
///
///
public static CheckResultResponseInfo BindPhone(BindPhoneParamInfo info)
{
var data = AllinpayLib.Request(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
///
/// 消费接口
///
///
///
public static CheckResultResponseInfo ConsumeApply(ConsumeApplyParamInfo info)
{
var data = AllinpayLib.Request(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
///
/// 托管代收交易即将用户(买方)资金代收到中间账户。
///
///
///
public static CheckResultResponseInfo AgentCollectApply(AgentCollectApplyParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request(info, watch);
//AllinpayLib.Log(data);
var result = data.CheckResultResponse(info);
if (!result.IsSuccess)
{
checkFlg = false;
checkStr = result.LogMsg;
//logger.Info($"验签请求<{info.method}>错误:{result.LogMsg}");
}
return result;
}
catch (Exception ex)
{
logger.Error(ex, $"调用方法<{info.method}>错误");
return new CheckResultResponseInfo
{
IsSuccess = false,
LogMsg = ex.Message,
ShowUserMsg = "系统异常"
};
}
finally
{
if (checkFlg)
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},耗时<{watch.ElapsedMilliseconds}>毫秒");
else
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},错误信息:{checkStr},耗时<{watch.ElapsedMilliseconds}>毫秒");
}
}
///
/// 退款
///
///
///
public static CheckResultResponseInfo OrderRefund(OrderRefundParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request(info, watch);
//AllinpayLib.Log(data);
var result = data.CheckResultResponse(info);
if (!result.IsSuccess)
{
checkFlg = false;
checkStr = result.LogMsg;
//logger.Info($"验签请求<{info.method}>错误:{result.LogMsg}");
}
return result;
}
catch (Exception ex)
{
logger.Error(ex, $"调用方法<{info.method}>错误");
return new CheckResultResponseInfo
{
IsSuccess = false,
LogMsg = ex.Message,
ShowUserMsg = "系统异常"
};
}
finally
{
if (checkFlg)
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},耗时<{watch.ElapsedMilliseconds}>毫秒");
else
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},错误信息:{checkStr},耗时<{watch.ElapsedMilliseconds}>毫秒");
}
}
///
/// 消费/托收/提现/退款查询接口
///
///
///
public static CheckResultResponseInfo GetOrderDetail(GetOrderDetailParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request(info, watch);
//AllinpayLib.Log(data);
var result = data.CheckResultResponse(info);
if (!result.IsSuccess)
{
checkFlg = false;
checkStr = result.LogMsg;
//logger.Info($"验签请求<{info.method}>错误:{result.LogMsg}");
}
return result;
}
catch (Exception ex)
{
logger.Error(ex, $"调用方法<{info.method}>错误");
return new CheckResultResponseInfo
{
IsSuccess = false,
LogMsg = ex.Message,
ShowUserMsg = "系统异常"
};
}
finally
{
if (checkFlg)
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},耗时<{watch.ElapsedMilliseconds}>毫秒");
else
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},错误信息:{checkStr},耗时<{watch.ElapsedMilliseconds}>毫秒");
}
}
///
/// 支付终端信息管理,被扫时必须维护
/// (1) 该接口用于维护终端信息,收银宝付款码支付(收银宝付款支付(CODEPAY_VSP/CODEPAY_VSP_ORG)),必须维护
/// (2) 通过termno上送终端的自定义管理编号,保证商户号下唯一,且必须为8位数字;
///
///
///
public static CheckResultResponseInfo VspTermidInfoManage(VspTermidInfoManageParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request(info, watch);
//AllinpayLib.Log(data);
var result = data.CheckResultResponse(info);
if (!result.IsSuccess)
{
checkFlg = false;
checkStr = result.LogMsg;
//logger.Info($"验签请求<{info.method}>错误:{result.LogMsg}");
}
return result;
}
catch (Exception ex)
{
logger.Error(ex, $"调用方法<{info.method}>错误");
return new CheckResultResponseInfo
{
IsSuccess = false,
LogMsg = ex.Message,
ShowUserMsg = "系统异常"
};
}
finally
{
if (checkFlg)
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},耗时<{watch.ElapsedMilliseconds}>毫秒");
else
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},错误信息:{checkStr},耗时<{watch.ElapsedMilliseconds}>毫秒");
}
}
///
/// 终端信息报备
///
///
///
public static CheckResultResponseInfo TermInfoManage(TermInfoManageParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request(info, watch);
//AllinpayLib.Log(data);
var result = data.CheckResultResponse(info);
if (!result.IsSuccess)
{
checkFlg = false;
checkStr = result.LogMsg;
//logger.Info($"验签请求<{info.method}>错误:{result.LogMsg}");
}
return result;
}
catch (Exception ex)
{
logger.Error(ex, $"调用方法<{info.method}>错误");
return new CheckResultResponseInfo
{
IsSuccess = false,
LogMsg = ex.Message,
ShowUserMsg = "系统异常"
};
}
finally
{
if (checkFlg)
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},耗时<{watch.ElapsedMilliseconds}>毫秒");
else
logger.Info($"请求验签<{info.method}>:{checkFlg.ToString()},错误信息:{checkStr},耗时<{watch.ElapsedMilliseconds}>毫秒");
}
}
}
}