Exemplo n.º 1
0
        private void ZFBPayRefund(string amount, string id)
        {
            AlipayTradeRefundContentBuilder builder      = BuildContent(amount, id);
            AlipayF2FRefundResult           refundResult = serviceClient.tradeRefund(builder);

            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                DoSuccessProcess(refundResult);
                break;

            case ResultEnum.FAILED:
                DoFailedProcess(refundResult);
                break;

            case ResultEnum.UNKNOWN:
                //if (refundResult.response == null)
                //{
                //    result = "配置或网络异常,请检查";
                //}
                //else
                //{
                //    result = "系统异常,请走人工退款流程";
                //}
                break;
            }

            MessageBox.Show("" + result);
        }
Exemplo n.º 2
0
        protected void BtnAlipay_Click(object sender, EventArgs e)
        {
            ////////////////////////////////////////////请求参数////////////////////////////////////////////


            AlipayTradeRefundContentBuilder builder = BuildContent();


            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case AlipayResultEnum.SUCCESS:
                DoSuccessProcess(refundResult);
                break;

            case AlipayResultEnum.FAILED:
                DoFailedProcess(refundResult);
                break;

            case AlipayResultEnum.UNKNOWN:
                if (refundResult.response == null)
                {
                    result = "配置或网络异常,请检查";
                }
                else
                {
                    result = "系统异常,请走人工退款流程";
                }
                break;
            }
            Response.Redirect("result.aspx?Text=" + result);
        }
Exemplo n.º 3
0
        public virtual RefoundResult Refound(RefoundParameter parameter)
        {
            if (parameter.TradeID.IsNullOrEmpty())
            {
                throw new Exception("TradeID is null");
            }
            Config config        = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayBarcode, parameter.TradeID));
            var    serviceClient = config.AppConfig.CreateClientInstance();

            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = parameter.TradeID;

            //退款金额
            builder.refund_amount = parameter.Amount.ToString();

            builder.refund_reason = parameter.Reason;

            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);

            RefoundResult finallyResult = new RefoundResult();

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                finallyResult.Result        = RefoundResult.ResultEnum.SUCCESS;
                finallyResult.ServerMessage = refundResult.response.Body;
                break;

            case ResultEnum.FAILED:
                finallyResult.Result        = RefoundResult.ResultEnum.FAIL;
                finallyResult.ServerMessage = refundResult.response.Body;
                finallyResult.Error         = refundResult.response.SubMsg;
                break;

            case ResultEnum.UNKNOWN:
                finallyResult.Result = RefoundResult.ResultEnum.FAIL;
                if (refundResult.response == null)
                {
                    finallyResult.Error = "配置或网络异常,请检查";
                }
                else
                {
                    finallyResult.Error = "系统异常,请走人工退款流程";
                }
                break;
            }

            return(finallyResult);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 申请退款
        /// </summary>
        /// <param name="out_trade_no">订单编号</param>
        /// <param name="total_fee">订单总金额(单位:元)</param>
        /// <param name="refund_fee">退款金额(单位:元)</param>
        /// <returns></returns>
        public static bool Run(string out_trade_no, string total_fee)
        {
            IAlipayTradeService serviceClient = F2FBiz.CreateClientInstance(
                F2FPayConfig.serverUrl,
                F2FPayConfig.appId,
                F2FPayConfig.merchant_private_key,
                F2FPayConfig.version,
                F2FPayConfig.sign_type,
                F2FPayConfig.alipay_public_key,
                F2FPayConfig.charset);
            var out_request_no = System.DateTime.Now.ToString("yyyyMMddHHmmss") + "0000" + (new Random()).Next(1, 10000).ToString();
            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = out_trade_no.Trim();
            //退款请求单号保持唯一性。
            builder.out_request_no = out_request_no;
            //退款金额
            builder.refund_amount = total_fee.Trim();
            builder.refund_reason = "refund reason";
            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);
            bool   isRefund = false;
            string result   = "";

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                isRefund = true;
                result   = "退款成功";
                break;

            case ResultEnum.FAILED:
                result = "退款失败," + refundResult.response.SubMsg;
                break;

            case ResultEnum.UNKNOWN:
                if (refundResult.response == null)
                {
                    result = "退款失败,配置或网络异常,请检查";
                }
                else
                {
                    result = "退款失败,系统异常,请走人工退款流程";
                }
                break;
            }
            return(isRefund);
        }
Exemplo n.º 5
0
        private AlipayTradeRefundContentBuilder BuildContent(string amount, string id)
        {
            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            ////支付宝交易号与商户网站订单号不能同时为空
            //builder.out_trade_no = WIDout_trade_no.Text.Trim();
            builder.out_trade_no = id;
            //退款请求单号保持唯一性。
            builder.out_request_no = id;
            //退款金额
            builder.refund_amount = amount;
            builder.refund_reason = "refund reason";

            return(builder);
        }
Exemplo n.º 6
0
        public AlipayF2FRefundResult tradeRefund(AlipayTradeRefundContentBuilder builder)
        {
            AlipayF2FRefundResult refundResult = new AlipayF2FRefundResult();

            try
            {
                AlipayTradeRefundRequest refundRequest = new AlipayTradeRefundRequest();
                refundRequest.BizContent = builder.BuildJson();
                refundResult.response    = client.Execute(refundRequest);
                return(refundResult);
            }
            catch
            {
                refundResult.response = null;
                return(refundResult);
            }
        }
Exemplo n.º 7
0
        private AlipayTradeRefundContentBuilder BuildContent(CBDsPosReturnOrder returnOrder)
        {
            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = returnOrder.AliPayNumber;

            //退款请求单号保持唯一性。
            builder.out_request_no = returnOrder.SerialNumber;

            //退款金额
            builder.refund_amount = returnOrder.TotalMayReturnValue.ToString("C");

            builder.refund_reason = "refund reason";

            return(builder);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 【统一收单线下交易退款】构造退款请求数据
        /// </summary>
        /// <returns>请求数据集</returns>
        private AlipayTradeRefundContentBuilder BuildContent(string out_trade_no, string out_request_no, decimal refund_amount)
        {
            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = out_trade_no;

            //退款请求单号保持唯一性。
            builder.out_request_no = out_request_no;

            //退款金额
            builder.refund_amount = refund_amount.ToString();

            builder.refund_reason = "订单退款";

            return(builder);
        }
Exemplo n.º 9
0
        public async Task <AlipayF2FRefundResult> TradeRefundAsync(AlipayTradeRefundContentBuilder builder)
        {
            var refundResult = new AlipayF2FRefundResult();

            try
            {
                AlipayTradeRefundRequest refundRequest = new AlipayTradeRefundRequest();
                refundRequest.BizContent = builder.BuildJson();
                refundResult.response    = await client.ExecuteAsync(refundRequest);

                return(refundResult);
            }
            catch
            {
                refundResult.response = null;
                return(refundResult);
            }
        }
Exemplo n.º 10
0
        public Result <AlipayF2FRefundResult> AlipayRefundDsPosOrder(CBDsPosReturnOrder returnOrder)
        {
            Result <AlipayF2FRefundResult> result = new Result <AlipayF2FRefundResult>();

            IAlipayTradeService serviceClient = F2FBiz.CreateClientInstance(Config.serverUrl, Config.appId, Config.merchant_private_key, Config.version,
                                                                            Config.sign_type, Config.alipay_public_key, Config.charset);

            AlipayTradeRefundContentBuilder builder = BuildContent(returnOrder);


            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                DoSuccessProcess(refundResult, ref result);
                break;

            case ResultEnum.FAILED:
                DoFailedProcess(refundResult, ref result);
                break;

            case ResultEnum.UNKNOWN:
                if (refundResult.response == null)
                {
                    result.Message = "配置或网络异常,请检查";
                    //result = "配置或网络异常,请检查";
                }
                else
                {
                    result.Message = "系统异常,请走人工退款流程";
                    //result = "系统异常,请走人工退款流程";
                }
                result.Data   = refundResult;
                result.Status = false;
                break;
            }
            return(result);
        }
Exemplo n.º 11
0
        //alipay.trade.refund(统一收单线下交易退款)
        public bool Alipay_Refund(string app_id, string merchant_private_key, string alipay_public_key, string ord_id, string req_id, decimal refund_amt, out string msg)
        {
            try
            {
                IAlipayTradeService sc = F2FBiz.CreateClientInstance(Config.serverUrl, app_id, merchant_private_key, Config.version,
                                                                     Config.sign_type, alipay_public_key, Config.charset);

                AlipayTradeRefundContentBuilder builder = BuildContent(ord_id, req_id, refund_amt);

                AlipayF2FRefundResult refundResult = sc.tradeRefund(builder);

                msg = "";
                if (refundResult.Status == ResultEnum.SUCCESS)
                {
                    return(true);
                }
                else if (refundResult.Status == ResultEnum.FAILED)
                {
                    msg = refundResult.response.Body;
                    return(false);
                }
                else
                {
                    if (refundResult.response == null)
                    {
                        msg = "配置或网络异常,请检查后重试";
                    }
                    else
                    {
                        msg = "系统异常,请走人工退款流程";
                    }
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Server.LogHelper.writeLog("PreCreate ->Alipay_Query()", ex.ToString(), ord_id);
                throw ex;
            }
        }
Exemplo n.º 12
0
 public AlipayF2FRefundResult TradeRefund(AlipayTradeRefundContentBuilder builder)
 {
     return(AsyncHelper.RunSync(async() => await TradeRefundAsync(builder)));
 }
Exemplo n.º 13
0
 public async Task <AlipayF2FRefundResult> TradeRefundAsync(AlipayTradeRefundContentBuilder builder)
 {
     return(await _alipayClient.TradeRefundAsync(builder));
 }
Exemplo n.º 14
0
 public AlipayF2FRefundResult TradeRefund(AlipayTradeRefundContentBuilder builder)
 {
     return(_alipayClient.TradeRefund(builder));
 }