Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 /// <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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 7
0
 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));
        }
Ejemplo n.º 9
0
 /// <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);
 }
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
 /// <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);
 }
Ejemplo n.º 12
0
        /// <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));
        }
Ejemplo n.º 13
0
 /// <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());
 }
Ejemplo n.º 14
0
        /// <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));
        }
Ejemplo n.º 15
0
        /// <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());
        }
Ejemplo n.º 16
0
        /// <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));
        }
Ejemplo n.º 17
0
 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);
 }
Ejemplo n.º 18
0
        /// <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));
        }
Ejemplo n.º 19
0
 /// <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);
 }
Ejemplo n.º 20
0
        /// <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);
        }
Ejemplo n.º 21
0
 /// <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
                  );
 }
Ejemplo n.º 22
0
 /// <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());
 }
Ejemplo n.º 23
0
 /// <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());
 }
Ejemplo n.º 24
0
 /// <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());
 }
Ejemplo n.º 25
0
        /// <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();
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
 /// <summary>
 /// 初始化参数生成器
 /// </summary>
 /// <param name="builder">参数生成器</param>
 /// <param name="param">支付参数</param>
 protected virtual void InitBuilder(WechatpayParameterBuilder builder, PayParam param)
 {
 }
Ejemplo n.º 28
0
 /// <summary>
 /// 初始化参数生成器
 /// </summary>
 /// <param name="builder">参数生成器</param>
 /// <param name="param">支付参数</param>
 protected override void InitBuilder(WechatpayParameterBuilder builder, PayParam param)
 {
     builder.OpenId(param.OpenId);
 }
Ejemplo n.º 29
0
 protected override void InitBuilder(WechatpayParameterBuilder builder, WechatOrderQueryRequest param)
 {
     builder.Add(WechatpayConst.TransactionId, param.TransactionId).Add(WechatpayConst.OutTradeNo, param.OrderId);
 }
Ejemplo n.º 30
0
 /// <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());
 }