/*** * 退款查询完整业务流程逻辑 * @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()); }
/*** * 退款查询完整业务流程逻辑 * @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()); }
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()); }
/// <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); } }