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