protected override void InitBuilder(WechatpayParameterBuilder builder, WechatRefundOrderRequest param) { builder.TransactionId(param.TransactionId).OutTradeNo(param.OutTradeNo) .OutRefundNo(param.OutRefundNo).TotalFee(param.TotalFee).RefundFeeType(param.RefundFeeType) .RefundFee(param.RefundFee).NotifyUrl(param.NotifyUrl).Add(WechatpayConst.RefundDesc, param.RefundDesc) .RefundAccount(param.RefundAccount).Remove(WechatpayConst.SpbillCreateIp).Remove(WechatpayConst.NotifyUrl); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatEntrustWebRequest param) { builder.Add("plan_id", param.PlanId).Add("contract_code", param.ContractCode) .Add("request_serial", param.RequestSerial).Add("contract_display_account", param.ContractDisplayAccount) .NotifyUrl(param.NotifyUrl).Add("version", "1.0").Timestamp().Add("return_app", param.ReturnApp).Add("return_web", param.ReturnWeb) .Remove(WechatpayConst.SignType).Remove(WechatpayConst.NonceStr).Remove(WechatpayConst.SpbillCreateIp); }
/// <summary> /// 配置参数生成器 /// </summary> /// <param name="builder">参数生成器</param> /// <param name="param">请求参数</param> protected override void ConfigBuilder(WechatpayParameterBuilder builder, PayParam param) { builder.Init(); builder.Init(param); builder.TradeType(GetTradeType()); InitBuilder(builder, param); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatpayHbInfoRequest param) { builder.Remove(WechatpayConst.AppId).Remove(WechatpayConst.SignType) .Remove(WechatpayConst.SpbillCreateIp) .Add(WechatpayConst.WxAppid, Config.AppId).Add(WechatpayConst.ClientIp, Server.GetLanIp()) .Add(WechatpayConst.MchBillNo, param.MchBillNo); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatPapPayApplyRequest param) { builder.Body(param.Body).Detail(param.Detail).Attach(param.Attach) .OutTradeNo(param.OutTradeNo).TotalFee(param.TotalFee).FeeType(param.FeeType) .GoodsTag(param.GoodsTag).NotifyUrl(param.NotifyUrl).TradeType("PAP").Add("contract_id", param.ContractId) .Receipt(param.Receipt); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatRefundOrderRequest param) { builder.Add(WechatpayConst.TransactionId, param.TransactionId).Add(WechatpayConst.OutTradeNo, param.OrderId) .Add(WechatpayConst.OutRefundNo, param.OutRefundNo).TotalFee(param.Money) .RefundTotalFee(param.RefundMoney).NotifyUrl(param.NotifyUrl).Add(WechatpayConst.RefundDesc, param.RefundDesc) .Remove(WechatpayConst.SpbillCreateIp).Remove(WechatpayConst.NotifyUrl); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatTransfersRequest param) { builder.Add(WechatpayConst.MchAppId, Config.AppId).Add(WechatpayConst.MchId, Config.MerchantId).Add(WechatpayConst.DeviceInfo, param.DeviceInfo) .Add(WechatpayConst.PartnerTradeNo, param.PartnerTradeNo).OpenId(param.OpenId) .Add(WechatpayConst.CheckName, param.CheckName?.ToString()).Add(WechatpayConst.ReUserName, param.ReUserName) .Add(WechatpayConst.Amount, (param.Amount * 100).ToInt()).Add(WechatpayConst.Desc, param.Desc); }
public Task <string> BuildUrl(WechatpayNativePayOneRequest request) { string url = GetRequestUrl(Config); var builder = new WechatpayParameterBuilder(Config); InitBuilder(builder, request); url = $"{url}?{builder.ToUrl()}"; return(Task.FromResult <string>(url)); }
/// <summary> /// 初始化参数生成器 /// </summary> /// <param name="builder">参数生成器</param> /// <param name="param">支付参数</param> protected override void InitBuilder(WechatpayParameterBuilder builder, WechatpayMicroPayRequest param) { builder.Body(param.Body).OutTradeNo(param.OutTradeNo) .TotalFee(param.TotalFee).NotifyUrl(param.NotifyUrl).Attach(param.Attach) .Detail(param.Detail).FeeType(param.FeeType).TimeStart(param.TimeStart) .TimeExpire(param.TimeExpire).GoodsTag(param.GoodsTag).LimitPay(param.LimitPay) .Receipt(param.Receipt).SceneInfo(param.SceneInfo) .AuthCode(param.AuthCode).Remove(WechatpayConst.NotifyUrl); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatContractOrderRequest param) { builder.Add("contract_mchid", Config.MerchantId).Add("contract_appid", Config.AppId).OutTradeNo(param.OutTradeNo) .DeviceInfo(param.DeviceInfo).Body(param.Body).Detail(param.Detail).Attach(param.Attach).NotifyUrl(param.NotifyUrl) .TotalFee(param.TotalFee).TimeStart(param.TimeStart).TimeExpire(param.TimeExpire).GoodsTag(param.GoodsTag) .TradeType(param.TradeType).ProductId(param.ProductId).LimitPay(param.LimitPay).OpenId(param.OpenId).Add("plan_id", param.PlanId) .Add("contract_code", param.ContractCode).Add("request_serial", param.RequestSerial).Add("contract_display_account", param.ContractDisplayAccount) .Add("contract_notify_url", param.ContractNotifyUrl); }
/// <summary> /// 初始化参数生成器 /// </summary> /// <param name="builder">参数生成器</param> /// <param name="param">支付参数</param> protected override void InitBuilder(WechatpayParameterBuilder builder, WechatpayPayRequestBase param) { builder.Body(param.Body).OutTradeNo(param.OutTradeNo).DeviceInfo(param.DeviceInfo).TradeType(GetTradeType()) .TotalFee(param.TotalFee).NotifyUrl(param.NotifyUrl).Attach(param.Attach) .Detail(param.Detail).FeeType(param.FeeType).TimeStart(param.TimeStart) .TimeExpire(param.TimeExpire).GoodsTag(param.GoodsTag).ProductId(param.ProductId) .LimitPay(param.LimitPay).Receipt(param.Receipt).SceneInfo(param.SceneInfo) .OpenId(param.OpenId); }
/// <summary> /// 支付 /// </summary> /// <param name="param">支付参数</param> /// <returns></returns> public virtual async Task <PayResult> PayAsync(PayParam param) { var config = await ConfigProvider.GetConfigAsync(); Validate(config, param); var builder = new WechatpayParameterBuilder(config); Config(builder, param); return(await RequestResult(config, builder)); }
/// <summary> /// 获取结果 /// </summary> /// <param name="config">支付配置</param> /// <param name="builder">参数生成器</param> /// <param name="result">支付结果</param> protected override string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result) { return(new WechatpayParameterBuilder(config) .Add("appId", config.AppId) .Add("timeStamp", Time.GetUnixTimestamp().SafeString()) .Add("nonceStr", Id.Guid()) .Package($"prepay_id={result.GetPrepayId()}") .Add("signType", config.SignType.Description()) .ToJson()); }
/// <summary> /// 请求结果 /// </summary> protected async Task <PayResult> RequstResult(WechatpayConfig config, WechatpayParameterBuilder builder) { var result = new WechatpayResult(ConfigProvider, await Request(config, builder)); if (IsWriteLog) { WriteLog(config, builder, result); } return(await CreateResult(config, builder, result)); }
/// <summary> /// 发送请求 /// </summary> protected async Task <string> Request(WechatpayConfig config, WechatpayParameterBuilder builder) { var client = HttpClientFactory.CreateClient("wechat"); var resonse = await Web.Client(client) .Post(GetRequestUrl(config)) .XmlData(builder.ToXml(true, builder.Get(WechatpayConst.SignType).ToWechatpaySignType())) .ResultAsync(); return(await resonse.Content.ReadAsStringAsync()); }
/// <summary> /// 下载对账单 /// </summary> /// <param name="request">下载对账单参数</param> public async Task <WechatpayDownloadBillResult> DownloadAsync(WechatpayDownloadBillRequest request) { var config = await ConfigProvider.GetConfigAsync(request); Validate(config, request); var builder = new WechatpayParameterBuilder(config); ConfigBuilder(builder, request); return(await Requst(config, builder, request)); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatSendRedPackRequest param) { builder.Remove(WechatpayConst.AppId).Remove(WechatpayConst.SignType) .Remove(WechatpayConst.SpbillCreateIp) .Add(WechatpayConst.WxAppid, Config.AppId).Add(WechatpayConst.ClientIp, Server.GetLanIp()) .Add(WechatpayConst.MchBillNo, param.MchBillNo).Add(WechatpayConst.SendName, param.SendName).Add(WechatpayConst.ReOpenid, param.ReOpenId) .Add(WechatpayConst.TotalAmount, (param.TotalAmount * 100).ToInt().ToString()).Add(WechatpayConst.TotalNum, param.TotalNum.ToString()) .Add(WechatpayConst.Wishing, param.Wishing).Add(WechatpayConst.ActName, param.ActName).Add(WechatpayConst.Remark, param.Remark) .Add(WechatpayConst.SceneId, param.SceneId?.ToString()).Add(WechatpayConst.RiskInfo, param.RiskInfo); }
/// <summary> /// 请求 /// </summary> /// <param name="param">请求参数</param> protected virtual async Task <WechatpayResult> Request(TRequest param) { var config = await ConfigProvider.GetConfigAsync(); Validate(config, param); var builder = new WechatpayParameterBuilder(config); ConfigBuilder(builder, param); return(await RequstResult(config, builder)); }
/// <summary> /// 初始化微信支付结果 /// </summary> /// <param name="configProvider">配置提供器</param> /// <param name="response">xml响应消息</param> /// <param name="config">配置</param> /// <param name="parameterBuilder">参数生成器</param> public WechatpayResult(IWechatpayConfigProvider configProvider, string response, WechatpayConfig config = null, WechatpayParameterBuilder parameterBuilder = null) { configProvider.CheckNull(nameof(configProvider)); ConfigProvider = configProvider; Raw = response; Config = config; Builder = parameterBuilder; _builder = new ParameterBuilder(); Resolve(response); }
/// <summary> /// 写日志 /// </summary> protected virtual void WriteLog <TResponse>(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult <TResponse> result) where TResponse : WechatpayResponse { var logContent = LogContentBuilder.CreateLogContentBuilder() .SetEventId(Guid.NewGuid()).SetMoudle(GetType().FullName).SetTitle("微信支付") .AddContent($"支付方式 : {GetType()}") .AddContent($"支付网关 : {config.GetOrderUrl()}") .AddContent($"原始响应:{result?.Raw}") .Build(); Logger.LogInfo(logContent); }
/// <summary> /// 写日志 /// </summary> protected void WriteLog(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result) { Logger.Error(GetType().FullName + " 微信支付:" + $"支付方式 : {EnumUtil.GetEnumDescription(GetPayWay())}" + $"支付网关 : {config.GetOrderUrl()}" + "请求参数:" + builder.ToXml() + "返回结果:" + result.GetParams() + "原始请求:" + builder.ToString() + "原始响应: " + result.Raw ); }
/// <summary> /// 发送请求 /// </summary> /// <param name="config">微信支付配置</param> /// <param name="builder">微信支付参数生辰器</param> protected virtual async Task <string> Request(WechatpayConfig config, WechatpayParameterBuilder builder) { if (IsSend == false) { return(string.Empty); } return(await Web.Client() .Post(string.IsNullOrWhiteSpace(GetOrderUrl()) ? config.GetOrderUrl() : GetOrderUrl()) .XmlData(builder.ToXml()) .ResultAsync()); }
/// <summary> /// 发送请求 /// </summary> protected virtual async Task <string> Request(WechatpayConfig config, WechatpayParameterBuilder builder) { if (IsSend == false) { return(string.Empty); } return(await Web.Client() .Post(GetRequestUrl(config)) .XmlData(builder.ToXml()) .ResultAsync()); }
/// <summary> /// 获取结果 /// </summary> /// <param name="config">微信支付配置</param> /// <param name="builder">微信支付参数生成器</param> /// <param name="result">微信支付结果</param> /// <returns></returns> protected override string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result) { return(new WechatpayParameterBuilder(config) .AppId(config.AppId) .PartnerId(config.MerchantId) .Add("prepayid", result.GetPrepayId()) .Add("noncestr", Id.Guid()) .Timestamp() .Package() .ToJson()); }
/// <summary> /// 写日志 /// </summary> protected void WriteLog(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result) { var log = GetLog(); if (log.IsTraceEnabled == false) { return; } log.Class(GetType().FullName) .Caption("微信支付") .Content($"支付网关 : {GetUrl( config )}") .Content("请求参数:") .Content(builder.ToXml()) .Content() .Content("返回结果:") .Content(result.GetParams()) .Content() .Content("原始响应: ") .Content(result.Raw) .Trace(); }
public async Task <HttpResponseMessage> ReturnMessage(WechatpayNativePayRequest request) { HttpResponseMessage response = null; var validationResultCollection = await ValidateAsync(); if (validationResultCollection.IsValid) { var result = await NativePayService.PayAsync(request); WechatpayParameterBuilder paramBuilder = new WechatpayParameterBuilder(Config); paramBuilder.Init(); paramBuilder.PrepayId(result.Data?.PrepayId); paramBuilder.ReturnCode(result.Data?.ReturnCode); paramBuilder.ResultCode(result.Data?.ResultCode); paramBuilder.Add(WechatpayConst.ErrorCodeDescription, result.Data?.ReturnMsg); string xmlContent = paramBuilder.ToXml(); response = xmlContent.XmlToHttpResponseMessage(); } else { throw new PayException(validationResultCollection); } return(response); }
/// <summary> /// 初始化参数生成器 /// </summary> /// <param name="builder">参数生成器</param> /// <param name="param">支付参数</param> protected virtual void InitBuilder(WechatpayParameterBuilder builder, PayParam param) { }
/// <summary> /// 初始化参数生成器 /// </summary> /// <param name="builder">参数生成器</param> /// <param name="param">支付参数</param> protected override void InitBuilder(WechatpayParameterBuilder builder, PayParam param) { builder.OpenId(param.OpenId); }
protected override void InitBuilder(WechatpayParameterBuilder builder, WechatOrderQueryRequest param) { builder.Add(WechatpayConst.TransactionId, param.TransactionId).Add(WechatpayConst.OutTradeNo, param.OrderId); }
/// <summary> /// 获取结果 /// </summary> /// <param name="config">微信支付配置</param> /// <param name="builder">微信支付参数生成器</param> /// <param name="result">微信支付结果</param> /// <returns></returns> protected virtual string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result) { return(result.GetPrepayId()); }