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);
        }
Пример #2
0
        public void WechatNativePayTest()
        {
            var aaa = typeof(Tests).GetMethod("GetAAA").GetParameters();
            var dic = new Dictionary <string, object>();

            dic.Add(WechatPayConst.OutTradeNo, "1212");
            var sss = serviceProvider.GetService <ICustomeWehcatPayService>();

            sss.SetUrl("pay/orderquery").SetExtensionParameter(dic);

            var resu31lt = sss.Request().GetAwaiter().GetResult();



            //1.生成订单
            string orderId = "789793535345";
            var    WechatPayNativePayService = serviceProvider.GetService <IWechatPayNativePayService>();
            var    WechatPayNativePayRequest = new WechatPayNativePayRequest()
            {
                Body       = "sssss",
                OutTradeNo = orderId,
                TotalFee   = 0.01m,
                Attach     = "dadadaaaa",
                FeeType    = FeeType.CNY,
                Detail     = new WechatPayPayRequestBase.GoodsDetail()
                {
                    GoodsId      = "GoodsId",
                    WxpayGoodsId = "WxpayGoodsId",
                    GoodsName    = "GoodsName",
                    Quantity     = 2,
                    Price        = 1
                },
                Receipt  = "Y",
                LimitPay = "no_credit",

                ProductId  = "ProductId",
                GoodsTag   = "GoodsTag",
                TimeExpire = DateTime.Now.AddHours(2),
                TimeStart  = DateTime.Now,
                SceneInfo  = new WechatPayPayRequestBase.StoreSceneInfo
                {
                    store_info = new WechatPayPayRequestBase.StoreSceneInfoObj()
                    {
                        id        = "Id",
                        address   = "Address",
                        area_code = "AreaCode",
                        name      = "Name"
                    },
                }.ToJson(),

                //OpenId = "98980989080980"
            };

            var result = WechatPayNativePayService.PayAsync(WechatPayNativePayRequest).GetAwaiter().GetResult();

            //2。查询订单

            var wechatOrderQueryService = serviceProvider.GetService <IWechatOrderQueryService>();

            var result2 = wechatOrderQueryService.QueryAsync(new WechatOrderQueryRequest()
            {
                OutTradeNo = orderId
            }).GetAwaiter().GetResult();

            //3.关闭订单
            var wechatCloseOrderService = serviceProvider.GetService <IWechatCloseOrderService>();
            //var adad = new Dictionary<string, object>() { };
            //adad.Add("1", "2");
            //wechatCloseOrderService.ExtensionParameter(adad);
            var result3 = wechatCloseOrderService.CloseAsync(new WechatCloseOrderRequest()
            {
                OutTradeNo = orderId
            }).GetAwaiter().GetResult();

            //4.查询订单
            var result4 = wechatOrderQueryService.QueryAsync(new WechatOrderQueryRequest()
            {
                OutTradeNo = orderId
            }).GetAwaiter().GetResult();
        }
 /// <summary>
 /// 支付
 /// </summary>
 /// <param name="request">支付参数</param>
 public Task <WechatPayResult <WechatPayNativePayResponse> > PayAsync(WechatPayNativePayRequest request)
 {
     return(base.PayAsync <WechatPayNativePayResponse>(request));
 }