You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

286 lines
12 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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();
/// <summary>
/// 收款方创建
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<RegisterResponseInfo> RegisterMember(RegisterParamInfo info)
{
var data = AllinpayLib.Request<RegisterParamInfo, RegisterQueryResponse>(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
/// <summary>
/// 绑定手机前发送验证码
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<SendVerificationCodeResponse> SendVerificationCode(SendVerificationCodeParamInfo info)
{
var data = AllinpayLib.Request<SendVerificationCodeParamInfo, SendVerificationCodeQueryResponse>(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
/// <summary>
/// 绑定手机
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<BindPhoneResponse> BindPhone(BindPhoneParamInfo info)
{
var data = AllinpayLib.Request<BindPhoneParamInfo, BindPhoneQueryResponse>(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
/// <summary>
/// 消费接口
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<ConsumeApplyResponse> ConsumeApply(ConsumeApplyParamInfo info)
{
var data = AllinpayLib.Request<ConsumeApplyParamInfo, ConsumeApplyQueryResponse>(info);
AllinpayLib.Log(data);
return data.CheckResultResponse(info);
}
/// <summary>
/// 托管代收交易即将用户(买方)资金代收到中间账户。
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<AgentCollectApplyResponse> AgentCollectApply(AgentCollectApplyParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request<AgentCollectApplyParamInfo, AgentCollectApplyQueryResponse>(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<AgentCollectApplyResponse>
{
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}>毫秒");
}
}
/// <summary>
/// 退款
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<OrderRefundResponseInfo> OrderRefund(OrderRefundParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request<OrderRefundParamInfo, OrderRefundQueryResponse>(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<OrderRefundResponseInfo>
{
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}>毫秒");
}
}
/// <summary>
/// 消费/托收/提现/退款查询接口
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<GetOrderDetailResponseInfo> GetOrderDetail(GetOrderDetailParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request<GetOrderDetailParamInfo, GetOrderDetailQueryResponse>(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<GetOrderDetailResponseInfo>
{
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}>毫秒");
}
}
/// <summary>
/// 支付终端信息管理,被扫时必须维护
/// 1 该接口用于维护终端信息收银宝付款码支付收银宝付款支付CODEPAY_VSP/CODEPAY_VSP_ORG,必须维护
/// 2 通过termno上送终端的自定义管理编号保证商户号下唯一且必须为8位数字
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<VspTermidInfoManageResponse> VspTermidInfoManage(VspTermidInfoManageParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request<VspTermidInfoManageParamInfo, VspTermidInfoManageQueryResponse>(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<VspTermidInfoManageResponse>
{
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}>毫秒");
}
}
/// <summary>
/// 终端信息报备
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public static CheckResultResponseInfo<TermInfoManageResponse> TermInfoManage(TermInfoManageParamInfo info)
{
Stopwatch watch = Stopwatch.StartNew();
var checkFlg = true;
var checkStr = "";
try
{
logger.Info($"调用方法<{info.method}>,请求参数:{JsonConvert.SerializeObject(info)}");
var data = AllinpayLib.Request<TermInfoManageParamInfo, TermInfoManageQueryResponse>(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<TermInfoManageResponse>
{
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}>毫秒");
}
}
}
}