|
|
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}>毫秒");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|