Esempio n. 1
0
        /***
         * 退款查询完整业务流程逻辑
         * @param refund_id 微信退款单号(优先使用)
         * @param out_refund_no 商户退款单号
         * @param transaction_id 微信订单号
         * @param out_trade_no 商户订单号
         * @return 退款查询结果(xml格式)
         */
        public static string Run(string refund_id, string out_refund_no, string transaction_id, string out_trade_no)
        {
            Log.Info("RefundQuery", "RefundQuery is processing...");

            WxPayData data = new WxPayData();

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

            WxPayData result = WxPayApi.RefundQuery(data);//提交退款查询给API,接收返回数据

            Log.Info("RefundQuery", "RefundQuery process complete, result : " + result.ToXml());
            return(result.ToPrintStr());
        }
Esempio n. 2
0
        /***
         * 退款查询完整业务流程逻辑
         * @param refund_id 微信退款单号(优先使用)
         * @param out_refund_no 商户退款单号
         * @param transaction_id 微信订单号
         * @param out_trade_no 商户订单号
         * @return 退款查询结果(xml格式)
         */
        public static async Task <string> Run(string refundId, string outRefundNo, string transactionId, string outTradeNo)
        {
            var data = new WxPayData();

            if (!string.IsNullOrEmpty(refundId))
            {
                data.SetValue("refund_id", refundId);//微信退款单号,优先级最高
            }
            else if (!string.IsNullOrEmpty(outRefundNo))
            {
                data.SetValue("out_refund_no", outRefundNo);//商户退款单号,优先级第二
            }
            else if (!string.IsNullOrEmpty(transactionId))
            {
                data.SetValue("transaction_id", transactionId);//微信订单号,优先级第三
            }
            else
            {
                data.SetValue("out_trade_no", outTradeNo); //商户订单号,优先级最低
            }
            var result = await WxPayApi.RefundQuery(data); //提交退款查询给API,接收返回数据

            return(result.ToJson());
        }
Esempio n. 3
0
        public static string SendRequest(RefundInfo info, PayConfig config)
        {
            WxPayData wxPayData = new WxPayData();

            if (!string.IsNullOrEmpty(info.RefundID))
            {
                wxPayData.SetValue("refund_id", info.RefundID);
            }
            else if (!string.IsNullOrEmpty(info.out_refund_no))
            {
                wxPayData.SetValue("out_refund_no", info.out_refund_no);
            }
            else if (!string.IsNullOrEmpty(info.transaction_id))
            {
                wxPayData.SetValue("transaction_id", info.transaction_id);
            }
            else
            {
                wxPayData.SetValue("out_trade_no", info.out_trade_no);
            }
            WxPayData wxPayData2 = WxPayApi.RefundQuery(wxPayData, config, 6);

            return(wxPayData2.ToPrintStr());
        }
Esempio n. 4
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="refundQuery">退款查询实体</param>
        /// <param name="refundQueryBack">退款查询返回实体</param>
        /// <param name="message">错误信息</param>
        /// <returns>交易是否成功</returns>
        internal bool RefundQuery(RefundQuery refundQuery, out RefundQueryBack refundQueryBack, out string message)
        {
            _log.Info("退款查询 RefundQuery 开始");
            var data = new WxPayData();

            if (string.IsNullOrEmpty(refundQuery.Out_Trade_No))
            {
                message = "商户订单号 不能为空";
                _log.Error(message);
                refundQueryBack = null;
                return(false);
            }
            data.SetValue("out_trade_no", refundQuery.Out_Trade_No);
            //退款查询
            _log.Info("WxPayApi.RefundQuery");
            var result = WxPayApi.RefundQuery(data);

            _log.Info("RefundQuery", "RefundQuery process complete, result : " + result.ToXml());
            var return_code = result.GetValue("return_code")?.ToString().ToUpper();
            var result_code = result.GetValue("result_code")?.ToString().ToUpper();

            if (return_code == "SUCCESS" && result_code == "SUCCESS")
            {
                _log.Info("退款查询成功!");
                refundQueryBack = new RefundQueryBack()
                {
                    Err_Code                 = result.GetValue("err_code")?.ToString(),
                    Err_Code_Des             = result.GetValue("err_code_des")?.ToString(),
                    Result_Code              = result.GetValue("return_code")?.ToString(),
                    Return_Code              = result.GetValue("result_code")?.ToString(),
                    Return_Msg               = result.GetValue("result_msg")?.ToString(),
                    Cash_Fee                 = Convert.ToInt32(result.GetValue("cash_fee")),
                    Settlement_Refund_Fee_Sn = result.GetValue("settlement_refund_fee_$n") == null ? 0 : Convert.ToInt32(result.GetValue("settlement_refund_fee_$n")),
                    Coupon_Refund_Count_Sn   = result.GetValue("coupon_refund_count_$n") == null ? 0 : Convert.ToInt32(result.GetValue("coupon_refund_count_$n")),
                    Coupon_Refund_Fee_Sn     = result.GetValue("coupon_refund_fee_$n") == null ? 0 : Convert.ToInt32(result.GetValue("coupon_refund_fee_$n")),
                    Coupon_Refund_Fee_Sn_Sm  = result.GetValue("coupon_refund_fee_$n_$m") == null ? 0 : Convert.ToInt32(result.GetValue("coupon_refund_fee_$n_$m")),
                    Coupon_Refund_Id_Sn_Sm   = result.GetValue("coupon_refund_id_$n_$m")?.ToString(),
                    Coupon_Type_Sn           = result.GetValue("coupon_type_$n") == null ? 0 : Convert.ToInt32(result.GetValue("coupon_type_$n")),
                    Fee_Type                 = result.GetValue("fee_type")?.ToString(),
                    Out_Refund_No_Sn         = result.GetValue("out_refund_no_$n")?.ToString(),
                    Out_Trade_No             = result.GetValue("out_trade_no")?.ToString(),
                    Refund_Account_Sn        = result.GetValue("refund_account_$n")?.ToString(),
                    Refund_Channel_Sn        = result.GetValue("refund_channel_$n")?.ToString(),
                    Refund_Count             = Convert.ToInt32(result.GetValue("refund_count")),
                    Refund_Fee_Sn            = Convert.ToInt32(result.GetValue("refund_fee_$n")),
                    Refund_Id_Sn             = result.GetValue("refund_id_$n")?.ToString(),
                    Refund_Recv_Accout_Sn    = result.GetValue("refund_recv_accout_$n")?.ToString(),
                    Refund_Status_Sn         = result.GetValue("refund_status_$n")?.ToString(),
                    Settlement_Total_Fee     = result.GetValue("settlement_total_fee ") == null ? 0 : Convert.ToInt32(result.GetValue("settlement_total_fee ")),
                    Total_Fee                = Convert.ToInt32(result.GetValue("total_fee")),
                    Transaction_Id           = result.GetValue("transaction_id")?.ToString()
                };
                message = "";
                return(true);
            }
            else
            {
                var return_msg   = result.GetValue("return_msg");
                var err_code_des = result.GetValue("err_code_des");
                message = $"{return_msg},{err_code_des}";
                _log.Error($"退款查询失败:{message}");
                refundQueryBack = null;
                return(false);
            }
        }