Esempio n. 1
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundQueryResult RefundQuery(RefundDTO dto)
        {
            WeixinDataHelper data = new WeixinDataHelper(this._weixinKey);

            //忽略:微信退款单号,优先级最高data.SetValue("refund_id", refund_id);
            //
            if (!string.IsNullOrEmpty(dto.OutRefundNo))
            {
                data.SetValue("out_refund_no", dto.OutRefundNo);//商户退款单号,优先级第二
            }
            else if (!string.IsNullOrEmpty(dto.OnlineTradeNo))
            {
                data.SetValue("transaction_id", dto.OnlineTradeNo);//微信订单号,优先级第三
            }
            else
            {
                data.SetValue("out_trade_no", dto.OutTradeNo);//商户订单号,优先级最低
            }

            WeixinDataHelper response = weixinPayApi.RefundQuery(data);//提交退款查询给API,接收返回数据
            var result = new RefundQueryResult();

            result.SetWeixiResult(response);
            return(result);
        }
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释
        public RefundQueryResult RefundQuery(WeChatRefundQueryParamter paramter)
#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释
        {
            string nonceStr = TenPayV3Util.GetNoncestr();
            TenPayV3RefundQueryRequestData tenPayV3RefundRequestData = new TenPayV3RefundQueryRequestData(Options.WeChatBaseOptions.AppId,
                                                                                                          Options.WeChatBaseOptions.MchId, Options.WeChatBaseOptions.Key, nonceStr, paramter.DeviceInfo, paramter.TransactionId,
                                                                                                          paramter.OutTradeNo, paramter.OutRefundNo, paramter.RefundId, null, null, paramter.Offset);

            RefundQueryResult refundQueryResult = TenPayV3.RefundQuery(tenPayV3RefundRequestData);

            return(refundQueryResult);
        }
Esempio n. 3
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundQueryResult RefundQuery(RefundDTO dto)
        {
            AlipayTradeRefundQueryDTO refundQueryDto = new AlipayTradeRefundQueryDTO();

            refundQueryDto.trade_no       = dto.OnlineTradeNo;
            refundQueryDto.out_trade_no   = dto.OutTradeNo;
            refundQueryDto.out_request_no = dto.OutRefundNo;

            AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();

            request.BizContent = refundQueryDto.BuildJson();
            AlipayTradeFastpayRefundQueryResponse response = Execute(request);

            var result = new RefundQueryResult();

            result.SetAlipayResult(response);

            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// 微信退款订单查询结果
        /// </summary>
        /// <param name="xml">xml</param>
        /// <returns>微信退款订单查询结果</returns>
        public static RefundQueryResult ConvertToRefundQueryResult(string xml)
        {
            RefundQueryResult refundQueryResult = new RefundQueryResult();

            xml = xml.Replace("$", "xml");
            XElement doc = XElement.Parse(xml);

            if (doc.Element("return_code").GetString() == "SUCCESS")
            {
                if (doc.Element("result_code").GetString() == "SUCCESS")
                {
                    refundQueryResult.IsSuccess = true;
                    var details = new List <RefundQueryDetails>();
                    for (int i = 0; i < doc.Element("refund_count").GetInt(); i++)
                    {
                        details.Add(new RefundQueryDetails
                        {
                            RefundStatus = doc.Element("refund_status_" + i).GetString(),
                            OutRefundNo  = doc.Element("out_refund_no_" + i).GetString(),
                            RefundFee    = doc.Element("refund_fee_" + i).GetInt(),
                            RefundId     = doc.Element("refund_id_" + i).GetString(),
                        });
                    }
                    refundQueryResult.Details = details;
                }
                else
                {
                    refundQueryResult.IsSuccess = false;
                    refundQueryResult.Message   = doc.Element("err_code_des").GetString();
                }
            }
            else
            {
                refundQueryResult.IsSuccess = false;
                refundQueryResult.Message   = doc.Element("return_msg").GetString();
            }
            return(refundQueryResult);
        }
Esempio n. 5
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);
            }
        }