Ejemplo n.º 1
0
        public object RefundQuery(RefundQueryRequest reqModel)
        {
            OrderBuilder <RefundQueryRequest, RefundQueryResponse> orderQuery = new OrderQueryForRefund();
            var result = orderQuery.Query(reqModel);

            return(Json(result));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="request">查询信息</param>
        /// <param name="config">配置</param>
        /// <returns>结果</returns>
        public static RefundQueryResult RefundPayQuery(RefundQueryRequest request, Config config)
        {
            var requestStr = TenpayUtil.GetRefundQueryRequestXml(request, config);
            var response   = HttpHelp.PostXmlToUrl(Config.RefundQueryUrl, requestStr);
            var result     = TenpayUtil.ConvertToRefundQueryResult(response);

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <returns></returns>
        public async Task <OkObjectResult> RefundQuery(string outTradeNo, string tradeNo, string outRequestNo)
        {
            var request = new RefundQueryRequest();

            request.AddParameters(new
            {
                TradeNo      = tradeNo,
                OutTradeNo   = outTradeNo,
                OutRequestNo = outRequestNo
            });
            return(Ok(await _client.ExecuteAsync(request)));
        }
Ejemplo n.º 4
0
        public void TestRefundQuery()
        {
            var request = new RefundQueryRequest();

            request.AddGatewayData(new RefundQueryModel()
            {
                OutTradeNo  = _outTradeNo,
                OutRefundNo = _outRefundNo
            });

            var response = _alipayGateway.Execute(request);

            Assert.Equal("40004", response.Code);
        }
Ejemplo n.º 5
0
        public IActionResult RefundQuery(string out_trade_no, string trade_no, string out_request_no)
        {
            var request = new RefundQueryRequest();

            request.AddGatewayData(new RefundQueryModel()
            {
                TradeNo     = trade_no,
                OutTradeNo  = out_trade_no,
                OutRefundNo = out_request_no
            });

            var response = _gateway.Execute(request);

            return(Json(response));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 微信退款订单查询接口xml参数整理
        /// </summary>
        /// <param name="request">查询信息</param>
        /// <param name="config">config</param>
        /// <returns>xml</returns>
        public static string GetRefundQueryRequestXml(RefundQueryRequest request, Config config)
        {
            SortedDictionary <string, string> sParams = new SortedDictionary <string, string>
            {
                { "appid", config.GetAppId() },
                { "mch_id", config.GetPid() },
                { "nonce_str", Config.GetNoncestr() }
            };

            if (!string.IsNullOrWhiteSpace(request.OutTradeNo))
            {
                sParams.Add("out_trade_no", request.OutTradeNo);
            }
            if (!string.IsNullOrWhiteSpace(request.OutRefundNo))
            {
                sParams.Add("out_refund_no", request.OutRefundNo);
            }
            if (!string.IsNullOrWhiteSpace(request.TransactionId))
            {
                sParams.Add("transaction_id", request.TransactionId);
            }
            if (!string.IsNullOrWhiteSpace(request.RefundId))
            {
                sParams.Add("refund_id", request.RefundId);
            }
            var sing = Signature.Getsign(sParams, config.GetKey());

            sParams.Add("sign", sing);
            StringBuilder sbPay = new StringBuilder();

            foreach (KeyValuePair <string, string> k in sParams)
            {
                if (k.Key == "attach" || k.Key == "body" || k.Key == "sign")
                {
                    sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">");
                }
                else
                {
                    sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");
                }
            }
            var return_string = $"<xml>{sbPay}</xml>";

            return(return_string);
        }
Ejemplo n.º 7
0
        public RefundQueryResponse RefundQuery(PayRequest payRequest)
        {
            _gateway = _gateways.GetByStoreId <AlipayGateway>(payRequest.GetStoreId());
            var queryModel = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(payRequest.BizContent,
                                                                                  new { trade_no = "", out_trade_no = "", out_refund_no = "" });
            var request = new RefundQueryRequest();

            request.AddGatewayData(new RefundQueryModel()
            {
                TradeNo     = queryModel.trade_no,
                OutTradeNo  = queryModel.out_trade_no,
                OutRefundNo = queryModel.out_refund_no
            });

            var response = _gateway.Execute(request);

            return(response);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 查询退款
        /// 提交退款申请后,通过该接口查询退款状态。退款有一定延时,
        /// 用零钱支付的退款20分钟内到账,银行卡支付的退款3个工作日后重新查询退款状态。
        /// out_refund_no、out_trade_no、transaction_id、refund_id四个参数必填一个
        /// </summary>
        /// <param name="inputObj">提交给查询退款API的参数</param>
        /// <param name="timeOut">接口超时时间</param>
        /// <returns>成功时返回,其他抛异常</returns>
        /// <exception cref="WxPayException"></exception>
        public static WxApiResponse RefundQuery(RefundQueryRequest refundQueryRequest, int timeOut = 6)
        {
            string url = "https://api.mch.weixin.qq.com/pay/refundquery";

            WechatPaymentData inputObj = new WechatPaymentData();

            inputObj.SetValue("appid", refundQueryRequest.AppId);   //公众账号ID
            inputObj.SetValue("mch_id", refundQueryRequest.Mch_Id); //商户号

            if (!refundQueryRequest.Out_Trade_No.IsNullOrEmpty())
            {
                inputObj.SetValue("out_trade_no", refundQueryRequest.Out_Trade_No);
            }

            if (!refundQueryRequest.Transaction_Id.IsNullOrEmpty())
            {
                inputObj.SetValue("transaction_id", refundQueryRequest.Transaction_Id);
            }

            if (!refundQueryRequest.Out_Refund_No.IsNullOrEmpty())
            {
                inputObj.SetValue("out_refund_no", refundQueryRequest.Out_Refund_No);
            }

            inputObj.SetValue("nonce_str", GenerateNonceStr());                   //随机字符串
            inputObj.SetValue("sign", inputObj.MakeSign(refundQueryRequest.Key)); //签名

            string xml = inputObj.ToXml();

            var start = DateTime.Now;

            string response = HttpTool.HttpRequest(url, xml, HttpRequestMethod.POST, HttpRequestDataFormat.Json, timeOut: timeOut);

            var end      = DateTime.Now;
            int timeCost = (int)((end - start).TotalMilliseconds);

            WechatPaymentData result = new WechatPaymentData();

            result.FromXml(response);

            return(new WxApiResponse(result));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 退款查询(航旅版)
        /// </summary>
        /// <param name="request">请求查询</param>
        /// <returns>结果</returns>
        public static RefundQueryResult QueryRefund(RefundQueryRequest request)
        {
            RefundQueryResult refundQueryResult = new RefundQueryResult();
            var    config = request.Config;
            Submit submit = new Submit(config);
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>
            {
                { "partner", config.GetPid() },
                { "_input_charset", Config.InputCharset.ToLower() },
                { "service", "refund_fastpay_query" }
            };

            if (!string.IsNullOrWhiteSpace(request.BatchNo))
            {
                sParaTemp.Add("batch_no", request.BatchNo);
            }
            else
            {
                sParaTemp.Add("trade_no", request.TradeNo);
            }
            string requestStr;
            var    responseStr = submit.BuildRequest(sParaTemp, out requestStr);

            refundQueryResult.RequestStr  = requestStr;
            refundQueryResult.ResponseStr = responseStr;

            var dic = Core.UrlToData(responseStr);

            try
            {
                if (dic.ContainsKey("is_success"))
                {
                    string isSuccess = dic["is_success"];
                    if (isSuccess == "T")
                    {
                        if (dic.ContainsKey("result_details"))
                        {
                            refundQueryResult.IsSuccess     = true;
                            refundQueryResult.ResultDetails = new RefundResultDetails(dic["result_details"]);
                        }
                        else
                        {
                            refundQueryResult.Message = "result_details参数为空";
                        }
                        return(refundQueryResult);
                    }
                    else
                    {
                        if (dic.ContainsKey("error"))
                        {
                            refundQueryResult.Message = dic["error"];
                            return(refundQueryResult);
                        }
                        else
                        {
                            refundQueryResult.Message = "error参数为空";
                            return(refundQueryResult);
                        }
                    }
                }
                else
                {
                    refundQueryResult.Message = "is_success参数为空";
                    return(refundQueryResult);
                }
            }
            catch (Exception exp)
            {
                refundQueryResult.Message = exp.Message;
                return(refundQueryResult);
            }
        }
Ejemplo n.º 10
0
 public Task <RefundQueryResponse> RefundQueryAsync(RefundQueryRequest request)
 {
     return(RequestAsync <RefundQueryResponse>("https://api.mch.weixin.qq.com/pay/refundquery", RequestProperties, request));
 }