Exemple #1
0
        /// <summary>
        /// 发起订单退款
        /// </summary>
        /// <param name="refundRequest">退款申请参数</param>
        /// <returns></returns>
        public override ApiResultModel <string> RefundPay(RefundBaseRequest refundRequest)
        {
            var res = new ApiResultModel <string>()
            {
                Code = ApiResultCode.Fail, Message = "fail"
            };

            string total_fee  = refundRequest.OrderMoney.ToString("#0.00");
            string refund_fee = refundRequest.RefundMoney.ToString("#0.00");
            //退款请求
            IAopClient client = new DefaultAopClient(AliPayConfig.gatewayUrl, AliPayConfig.AppId, AliPayConfig.privatekey, "json", "1.0", AliPayConfig.sign_type, AliPayConfig.alipublickey, AliPayConfig.charset, false);
            AlipayTradeRefundRequest request     = new AlipayTradeRefundRequest();
            AlipayTradeRefundModel   alipayModel = new AlipayTradeRefundModel()
            {
                OutTradeNo   = refundRequest.OrderCode,
                TradeNo      = refundRequest.TradeNo,
                RefundAmount = refund_fee,
                RefundReason = "用户申请退款",
            };

            request.SetBizModel(alipayModel);
            AlipayTradeRefundResponse response = client.Execute(request);

            //2.2、记录请求日志
            //记录支付宝退款调用的日志
            //WritePostThirdApi(ThirdPlatformBusinessType.Payment, orderRefund.OrderCode, ThirdPlatformType.Alipay, AliPayConfig.gatewayUrl, request.BizContent, DateTime.Now, response.Body, DateTime.Now, true);
            if (response.Code != "10000")
            {
                res.Message = response.Msg;
                return(res);
            }
            res.Code    = ApiResultCode.Success;
            res.Message = "ok";
            return(res);
        }
Exemple #2
0
		public Result<AlipayRefundResult> Refund(string originalOrderNo, string newRefundRequestNo, decimal refundAmount, string refundReason) {
			var model = new AlipayTradeRefundModel {
				OutTradeNo = originalOrderNo,
				OutRequestNo = newRefundRequestNo,
				RefundAmount = refundAmount.ToString("f2"),
				RefundReason = refundReason
			};
			var request = new AlipayTradeRefundRequest();
			request.SetBizModel(model);

			try {
				var response = _alipay.Execute(request);
				var ok = response is { IsError: false, Msg: "Success" };

				if ( !ok ) {
					return new Failure<AlipayRefundResult>(response.SubMsg ?? response.Msg);
				}
				return new Success<AlipayRefundResult> {
					Data = new AlipayRefundResult {
						RefundAmount = ok ? refundAmount : 0,
						AggregatedRefundAmount = response.RefundFee.AsDecimal(),
						OriginalResult = response
					}
				};
			}
			catch ( Exception e ) {
				return new Failure<AlipayRefundResult>(e.Message);
			}
		}
Exemple #3
0
        /// <summary>
        /// 申请退款
        /// </summary>
        /// <param name="requestModel">请求内容</param>
        /// <returns></returns>
        public static RefundResponseModel Refund(RefundModel requestModel)
        {
            AlipayTradeRefundRequest queryRequset = new AlipayTradeRefundRequest();

            queryRequset.BizContent = JsonConvert.SerializeObject(requestModel);
            LogUtil.WriteAlipayLog("申请退款请求", "请求参数", queryRequset.BizContent);
            Dictionary <string, string> paramsDict     = (Dictionary <string, string>)queryRequset.GetParameters();
            AlipayTradeRefundResponse   refundResponse = _client.Execute(queryRequset);

            LogUtil.WriteAlipayLog("申请退款响应", "响应参数", refundResponse.Body);
            return(new RefundResponseModel
            {
                msg = refundResponse.Msg,
                code = refundResponse.Code,
                subcode = refundResponse.SubCode,
                submsg = refundResponse.SubMsg,
                trade_no = refundResponse.TradeNo,
                send_back_fee = refundResponse.SendBackFee,
                store_name = refundResponse.StoreName,
                fund_change = refundResponse.FundChange,
                buyer_logon_id = refundResponse.BuyerLogonId,
                amount = refundResponse.RefundDetailItemList == null || refundResponse.RefundDetailItemList.Count == 0 ? "0.0" : refundResponse.RefundDetailItemList[0].Amount,
                fund_channel = refundResponse.RefundDetailItemList == null || refundResponse.RefundDetailItemList.Count == 0 ? "": refundResponse.RefundDetailItemList[0].FundChannel,
                out_trade_no = refundResponse.OutTradeNo,
                buyer_user_id = refundResponse.BuyerUserId,
                gmt_refund_pay = refundResponse.GmtRefundPay,
                refund_fee = refundResponse.RefundFee
            });
        }
Exemple #4
0
        public JsonResult Refund(string tradeno, string alipayTradeNo, string refundAmount, string refundReason, string refundNo)
        {
            DefaultAopClient client = new DefaultAopClient(Config.Gatewayurl, Config.AppId, Config.PrivateKey, "json", "2.0",
                                                           Config.SignType, Config.AlipayPublicKey, Config.CharSet, false);

            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            model.OutTradeNo   = tradeno;
            model.TradeNo      = alipayTradeNo;
            model.RefundAmount = refundAmount;
            model.RefundReason = refundReason;
            model.OutRequestNo = refundNo;

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);
            try
            {
                var response = client.Execute(request);
                return(Json(response.Body));
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
Exemple #5
0
        public ServiceResult <bool> Refund(Order order)
        {
            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            model.OutTradeNo   = order.ID;
            model.TradeNo      = order.PaymentID;
            model.RefundAmount = order.Refund.ToString();
            model.RefundReason = order.RefundReason;
            model.OutRequestNo = "Refund-" + order.ID;
            order.RefundID     = model.OutRequestNo;
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            var response      = _alipayService.Execute(request);
            var responseEntry = JObject.Parse(response.Body).GetValue("alipay_trade_refund_response").ToObject <AliPaymentResponse>();
            var status        = responseEntry.msg.Equals("Success", StringComparison.OrdinalIgnoreCase);
            var result        = new ServiceResult <bool>
            {
                Result = status
            };

            if (!status)
            {
                result.RuleViolations.Add(new RuleViolation("Error", responseEntry.msg + (responseEntry.sub_msg ?? "")));
            }
            return(result);
        }
Exemple #6
0
 /// <summary>
 /// 退款请求
 /// </summary>
 /// <param name="out_trade_no">订单编号</param>
 /// <param name="trade_no">交易单好</param>
 /// <param name="refund_amount">退款金额(元)</param>
 /// <param name="refund_reason">原因</param>
 /// <param name="out_request_no">退款订单号</param>
 /// <returns></returns>
 public static bool RefundRequest(string companyId, string out_trade_no, string trade_no, string refund_amount, string refund_reason, string out_request_no)
 {
     try
     {
         AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
         request.BizContent = "{" +
                              "\"out_trade_no\":\"" + out_trade_no + "\"," +
                              "\"trade_no\":\"" + trade_no + "\"," +
                              "\"refund_amount\":" + refund_amount + "," +
                              "\"refund_reason\":\"" + refund_reason + "\"," +
                              "\"out_request_no\":\"" + out_request_no + "\"" +
                              "}";
         AlipayTradeRefundResponse response = GetDefaultAopClient(companyId).Execute(request);
         if (response.IsError)
         {
             TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("退款请求失败:{0}", response.Body));
             return(false);
         }
         TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("退款请求结果:{0}", response.Body));
         return(response.Code == "10000");
     }
     catch (Exception ex)
     {
         TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("退款请求失败:{0}", ex.Message));
         return(false);
     }
 }
Exemple #7
0
        /// <summary>
        /// 订单退款
        /// </summary>
        /// <param name="tradeno">商户订单号</param>
        /// <param name="alipayTradeNo">支付宝交易号</param>
        /// <param name="refundAmount">退款金额</param>
        /// <param name="refundReason">退款原因</param>
        /// <param name="refundNo">退款单号</param>
        public ActionResult RefundInfo(string tradeno, string alipayTradeNo, string refundAmount, string refundReason, string refundNo)
        {
            DefaultAopClient client = new DefaultAopClient(Config.gatewayUrl, Config.app_id, Config.private_key, "json", "1.0", Config.sign_type, Config.alipay_public_key, Config.charset, false);

            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            // 商户订单号,和交易号不能同时为空
            model.OutTradeNo = tradeno;
            // 支付宝交易号,和商户订单号不能同时为空
            model.TradeNo = alipayTradeNo;
            // 退款金额,不能大于订单总金额
            model.RefundAmount = refundAmount;
            // 退款原因
            model.RefundReason = refundReason;
            // 退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
            model.OutRequestNo = refundNo;

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            AlipayTradeRefundResponse response = null;

            try
            {
                response = client.Execute(request);
                return(Json(response.Body));
            }
            catch (Exception exp)
            {
                throw exp;
            }
        }
Exemple #8
0
        public static string TradeRefund(string outTradeNo, string refundAmount)
        {
            //https://docs.open.alipay.com/api_1/alipay.trade.refund
            IAopClient client = new DefaultAopClient(ServerUrl, AppId, AppPrivateKey, "json", "1.0", SignType, AlipayPublicKey, Charset, false);
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.BizContent = "{" +
                                 "\"out_trade_no\":\"" + outTradeNo + "\"," +
                                 "\"trade_no\":\"\"," +
                                 "\"refund_amount\":" + refundAmount + "," +
                                 "\"refund_reason\":\"正常退款\"," +
                                 "\"out_request_no\":\"HZ01RF001\"," +
                                 "\"operator_id\":\"OP001\"," +
                                 "\"store_id\":\"NJ_S_001\"," +
                                 "\"terminal_id\":\"NJ_T_001\"" +
                                 "  }";
            AlipayTradeRefundResponse response = client.Execute(request);

            if (response.Code == "10000")
            {
                return("10000");
            }
            else
            {
                return(response.Body);
            }
        }
Exemple #9
0
        public async Task <IActionResult> Refund(string out_trade_no, string trade_no, string refund_amount, string out_request_no, string refund_reason)
        {
            var model = new AlipayTradeRefundModel
            {
                OutTradeNo   = out_trade_no,
                TradeNo      = trade_no,
                RefundAmount = refund_amount,
                OutRequestNo = out_request_no,
                RefundReason = refund_reason
            };

            var req = new AlipayTradeRefundRequest();

            req.SetBizModel(model);

            var response = await _client.ExecuteAsync(req);

            ResponseModel responseModel = new ResponseModel()
            {
                code    = HTTPResponseCode.PartialContent,
                message = string.Empty,
                data    = response.Body
            };

            if (response.IsError)
            {
                responseModel.code    = HTTPResponseCode.BadRequest;
                responseModel.message = response.Msg;
            }
            else
            {
                responseModel.code = HTTPResponseCode.Successful;
            }
            return(Json(responseModel));
        }
Exemple #10
0
        /// <summary>
        /// 退款
        /// </summary>
        public bool Refund(decimal amount, string orderNo, string requestNo, string reason = null, string tradeNo = null)
        {
            bool success = false;

            //组装业务参数
            var model = new AlipayTradeRefundModel()
            {
                OutTradeNo   = orderNo,
                TradeNo      = tradeNo,
                RefundAmount = amount.ToString(),
                RefundReason = reason,
                OutRequestNo = requestNo //退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
            };

            var request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            AlipayTradeRefundResponse response = aopClient.Execute(request);

            if (response != null && response.Code == "10000")
            {
                success = true;
            }

            //记日志response.ToJson();

            return(success);
        }
Exemple #11
0
        /// <summary>
        /// 订单退款
        /// </summary>
        /// <param name="input">退款数据</param>
        /// <returns></returns>
        public async Task <AlipayTradeRefundResponse> Refund(AlipayTradeRefundModel input)
        {
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(input);

            var response = await _alipayService.ExecuteAsync(request);

            return(response);
        }
Exemple #12
0
        public AlipayTradeRefundResponse RefundByOutTradeNo(string out_trade_no, string refund_amount, string refund_reason)
        {
            List <StrPair> list = new List <StrPair>();

            list.Add(new StrPair("out_trade_no", out_trade_no));
            list.Add(new StrPair("refund_amount", refund_amount));
            list.Add(new StrPair("refund_reason", refund_reason));
            string content = List2Json(list);
            AlipayTradeRefundRequest refundRequst = new AlipayTradeRefundRequest();

            refundRequst.BizContent = content;
            //Dictionary<string, string> paramsDict = (Dictionary<string, string>)payRequst.GetParameters();
            return(m_Client.Execute(refundRequst));
        }
Exemple #13
0
        private AlipayTradeRefundResponse DoRefund(string biz_content, AlipayDomain alipay)
        {
            AlipayTradeRefundRequest payRequst = new AlipayTradeRefundRequest();

            payRequst.BizContent = biz_content;
            payRequst.SetNotifyUrl("");
            Dictionary <string, string> paramsDict = (Dictionary <string, string>)payRequst.GetParameters();
            IAopClient client = new DefaultAopClient(serverUrl, alipay.APP_ID, alipay.APP_PRIVATE_KEY, "", version,
                                                     sign_type, alipay.ALIPAY_PUBLIC_KEY, charset);

            AlipayTradeRefundResponse payResponse = client.Execute(payRequst);

            return(payResponse);
        }
Exemple #14
0
        private AlipayTradeRefundResponse Refund(string biz_content)
        {
            AlipayTradeRefundRequest payRequst = new AlipayTradeRefundRequest();

            payRequst.BizContent = biz_content;

            Dictionary <string, string> paramsDict = (Dictionary <string, string>)payRequst.GetParameters();
            IAopClient client = new DefaultAopClient(Config.serverUrl, Config.appId, Config.merchant_private_key, "", Config.version,
                                                     Config.sign_type, Config.alipay_public_key, Config.charset);
            //new DefaultAopClient(Config.serverUrl, Config.appId, Config.merchant_private_key);

            AlipayTradeRefundResponse payResponse = client.Execute(payRequst);

            return(payResponse);
        }
Exemple #15
0
        /// <summary>
        /// 申请退款
        /// </summary>
        /// <param name="request">提交给申请退款API的参数</param>
        /// <param name="config"></param>
        /// <param name="accessToken">用户授权token</param>
        /// <param name="timeOut">超时时间</param>
        /// <returns>成功时返回接口调用结果,其他抛异常</returns>
        public static async Task <AlipayTradeRefundResponse> RefundAsync(AlipayTradeRefundModel request, AlipayConfig config, string accessToken = null, int timeOut = 6)
        {
            IAopClient client      = new AopClient(AlipayConstants.GATEWAYURL, config.AppId, config.PrivateKey, config.Format, config.Version, config.SignType, config.AliPublicKey, config.Charset, config.KeyFromFile);
            var        requestData = new AlipayTradeRefundRequest();

            requestData.SetBizModel(request);

            var result = await client.ExecuteAsync(requestData, accessToken);

            if (result.Code != AlipayConstants.SuccessCode)
            {
                throw new Exception(result.SubMsg);
            }
            return(result);
        }
        public override bool Refund(PaylineEntity info)
        {
            var builder = new StringBuilder("{");

            //订单支付时传入的商户订单号,不能和 trade_no同时为空。
            builder.AppendFormat("\"out_trade_no\":\"{0}\",", info.Number);
            //支付宝交易号,和商户订单号不能同时为空  2017开头
            builder.AppendFormat("\"trade_no\":\"{0}\",", info.OutNumber);
            //需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
            builder.AppendFormat("\"refund_amount\":\"{0}\",", 0 - info.Amount);
            //	退款的原因说明
            builder.AppendFormat("\"refund_reason\":\"{0}\",", "测试退款");
            //	标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。
            builder.AppendFormat("\"out_request_no\":\"{0}\"", info.Number);
            ////商户的操作员编号
            //builder.AppendFormat("\"operator_id\":\"{0}\"", "FAST_INSTANT_TRADE_PAY");
            ////	商户的门店编号
            //builder.AppendFormat("\"store_id\":\"{0}\"", "FAST_INSTANT_TRADE_PAY");
            ////商户的终端编号
            //builder.AppendFormat("\"terminal_id\":\"{0}\"", "FAST_INSTANT_TRADE_PAY");
            builder.Append("}");

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.BizContent = builder.ToString();

            AlipayTradeRefundResponse response = AopClient.Execute(request);

            info.Request = response.Body;
            LogHelper.AddEcho(new EchoEntity
            {
                Method   = "Beeant.Repository.Services.Finance.AliPaylineRepository.Refund",
                Request  = request.BizContent,
                Response = response.Body,
                Remark   = "",
                Url      = HttpContext.Current.Request.Url.ToString(),
                Key      = info.Number,
                SaveType = SaveType.Add
            });
            if (response.Msg == "Success")
            {
                info.OutNumber = response.TradeNo;
                info.Status    = PaylineStatusType.Success;
                return(true);
            }

            return(false);
        }
Exemple #17
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);
            }
        }
Exemple #18
0
        private static RefundResponse Refund(string amount)
        {
            IAopClient client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", APPID, APP_PRIVATE_KEY, "json", "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
            AlipayTradeRefundModel   mode    = new AlipayTradeRefundModel
            {
                OutTradeNo   = "2020060111510",
                RefundAmount = amount,
                RefundReason = HttpUtility.UrlEncode("挂号退款")
            };

            request.SetBizModel(mode);
            var response = client.Execute(request);
            var body     = JsonConvert.DeserializeObject <RefundResponse>(response.Body);

            return(body);
        }
Exemple #19
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);
            }
        }
Exemple #20
0
        public IActionResult Refund(string WIDout_trade_no, string WIDtrade_no, string WIDrefund_amount, string WIDrefund_reason, string WIDout_request_no)
        {
            DefaultAopClient client = new DefaultAopClient(_settings.Value.gateway_url, _settings.Value.app_id, _settings.Value.private_key, _settings.Value.format, _settings.Value.version, _settings.Value.sign_type, _settings.Value.alipay_public_key, _settings.Value.charset, false);

            // 商户订单号,和交易号不能同时为空
            string out_trade_no = WIDout_trade_no;

            // 支付宝交易号,和商户订单号不能同时为空
            string trade_no = WIDtrade_no;

            // 退款金额,不能大于订单总金额
            string refund_amount = WIDrefund_amount;

            // 退款原因
            string refund_reason = WIDrefund_reason;

            // 退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
            string out_request_no = WIDout_request_no;

            AlipayTradeRefundModel model = new AlipayTradeRefundModel
            {
                OutTradeNo   = out_trade_no,
                TradeNo      = trade_no,
                RefundAmount = refund_amount,
                RefundReason = refund_reason,
                OutRequestNo = out_request_no
            };

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            AlipayTradeRefundResponse response = null;

            try
            {
                response = client.Execute(request);
            }
            catch (Exception exp)
            {
                throw exp;
            }
            return(Content(response.Body));
        }
        public static bool AliPayRefundRequest(string trade_no, string total_fee, string out_refund_no, out string response)
        {
            IAopClient client = new DefaultAopClient(AlipayConfig.mobile_gatewayUrl, AlipayConfig.mobile_app_id, AlipayConfig.mobile_private_key_value, "json", "1.0", AlipayConfig.sign_type, AlipayConfig.mobile_public_key_value, AlipayConfig.charset, false);
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.BizContent = "{" +
                                 "\"out_trade_no\":\"" + trade_no + "\"," +
                                 "\"refund_amount\":" + total_fee + "," +
                                 "\"out_request_no\":\"" + out_refund_no + "\"" +
                                 "  }";
            AlipayTradeRefundResponse responsed = client.Execute(request);

            response = responsed.Body;
            if (responsed.Code == "10000")
            {
                return(true);
            }
            return(false);
        }
        public async Task <IActionResult> Refund(string out_trade_no, string trade_no, string refund_amount, string refund_reason, string out_request_no)
        {
            var model = new AlipayTradeRefundModel()
            {
                OutTradeNo   = out_trade_no,
                TradeNo      = trade_no,
                RefundAmount = refund_amount,
                OutRequestNo = out_request_no,
                RefundReason = refund_reason
            };

            var req = new AlipayTradeRefundRequest();

            req.SetBizModel(model);

            var response = await _client.ExecuteAsync(req);

            return(Ok(response.Body));
        }
Exemple #23
0
        public async Task <IActionResult> Refund(AlipayTradeRefundViewModel viewMode)
        {
            var model = new AlipayTradeRefundModel
            {
                OutTradeNo   = viewMode.OutTradeNo,
                TradeNo      = viewMode.TradeNo,
                RefundAmount = viewMode.RefundAmount,
                OutRequestNo = viewMode.OutRequestNo,
                RefundReason = viewMode.RefundReason
            };

            var req = new AlipayTradeRefundRequest();

            req.SetBizModel(model);

            var response = await _client.CertificateExecuteAsync(req, _optionsAccessor.Value);

            return(Ok(response.Body));
        }
Exemple #24
0
    protected void BtnAlipay_Click(object sender, EventArgs e)
    {
        DefaultAopClient client = new DefaultAopClient(Config.gatewayUrl, Config.app_id, Config.merchant_private_key, "json", "1.0", Config.sign_type, Config.alipay_public_key, Config.charset, false);

        // 商户订单号,和交易号不能同时为空
        string out_trade_no = WIDout_trade_no.Text.Trim();

        // 支付宝交易号,和商户订单号不能同时为空
        string trade_no = WIDtrade_no.Text.Trim();

        // 退款金额,不能大于订单总金额
        string refund_amount = WIDrefund_amount.Text.Trim();

        // 退款原因
        string refund_reason = WIDrefund_reason.Text.Trim();

        // 退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
        string out_request_no = WIDout_request_no.Text.Trim();

        AlipayTradeRefundModel model = new AlipayTradeRefundModel();

        model.OutTradeNo   = out_trade_no;
        model.TradeNo      = trade_no;
        model.RefundAmount = refund_amount;
        model.RefundReason = refund_reason;
        model.OutRequestNo = out_request_no;

        AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

        request.SetBizModel(model);

        AlipayTradeRefundResponse response = null;

        try
        {
            response       = client.Execute(request);
            WIDresule.Text = response.Body;
        }
        catch (Exception exp)
        {
            throw exp;
        }
    }
Exemple #25
0
        /// <summary>
        /// 退款
        /// </summary>
        /// <param name="refund">退款实体</param>
        /// <param name="refundBack">退款返回实体</param>
        /// <param name="message">错误信息</param>
        /// <returns></returns>
        internal bool Refund(Refund refund, out RefundBack refundBack, out string message)
        {
            _log.Info("退款 Refund 开始");
            var refundRequst = new AlipayTradeRefundRequest();

            refundRequst.BizContent = Newtonsoft.Json.JsonConvert.SerializeObject(refund, new JsonSerializerSettings()
            {
                DefaultValueHandling = DefaultValueHandling.Ignore
            }).ToLower();
            var refundResponse = client.Execute(refundRequst);

            if (refundResponse.Code == "10000")
            {
                _log.Info("退款成功!");
                refundBack = new RefundBack()
                {
                    Buyer_Logon_Id          = refundResponse.BuyerLogonId,
                    Buyer_User_Id           = refundResponse.BuyerUserId,
                    Code                    = refundResponse.Code,
                    Fund_Change             = refundResponse.FundChange,
                    Gmt_Refund_Pay          = Convert.ToDateTime(refundResponse.GmtRefundPay),
                    Msg                     = refundResponse.Msg,
                    Open_Id                 = refundResponse.OpenId,
                    Out_Trade_No            = refundResponse.OutTradeNo,
                    Refund_Detail_Item_List = GetTradeFundBills(refundResponse.RefundDetailItemList),
                    Refund_Fee              = refundResponse.RefundFee,
                    Store_Name              = refundResponse.StoreName,
                    Sub_Code                = refundResponse.SubCode,
                    Sub_Msg                 = refundResponse.SubMsg,
                    Trade_No                = refundResponse.TradeNo
                };
                message = "";
                return(true);
            }
            else
            {
                refundBack = null;
                message    = $"{ refundResponse.Msg},{refundResponse.SubMsg}";
                _log.Error($"退款失败:{message}");
                return(false);
            }
        }
        public IHttpActionResult kkk(dynamic data)
        {
            IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, FORMAT, "2.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);
            // 商户订单号,和交易号不能同时为空
            string out_trade_no = "20200709104925";

            // 支付宝交易号,和商户订单号不能同时为空
            string trade_no = "2020070922001450210500981173";

            // 退款金额,不能大于订单总金额
            string refund_amount = "110.00";

            // 退款原因
            string refund_reason = "我就是想退款";

            // 退款单号,同一笔多次退款需要保证唯一,部分退款该参数必填。
            string out_request_no = "16541";

            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            model.OutTradeNo   = data.data.OutTradeNo;
            model.TradeNo      = data.data.TradeNo;
            model.RefundAmount = data.data.RefundAmount;
            model.RefundReason = data.data.RefundReason;
            model.OutRequestNo = DateTime.Now.ToString("yyyyMMddHHmmss");

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            AlipayTradeRefundResponse response = null;

            response = client.SdkExecute(request);
            using (SmartRentalSystemEntities db = new SmartRentalSystemEntities())
            {
                var ode = db.Order.Where(t => t.OrderNumber == model.OutTradeNo).ToList().FirstOrDefault();
                ode.OrderState = "退款";
                db.SaveChanges();
            }
            //Execute(request);
            return(Ok(response.Body));
        }
        public async Task <IActionResult> Refund(AlipayTradeRefundViewModel viewMode)
        {
            var model = new AlipayTradeRefundModel()
            {
                OutTradeNo   = viewMode.OutTradeNo,
                TradeNo      = viewMode.TradeNo,
                RefundAmount = viewMode.RefundAmount,
                OutRequestNo = viewMode.OutRequestNo,
                RefundReason = viewMode.RefundReason
            };

            var req = new AlipayTradeRefundRequest();

            req.SetBizModel(model);

            var response = await _client.ExecuteAsync(req);

            ViewData["response"] = response.Body;
            return(View());
        }
Exemple #28
0
        public JsonResult Refund(string tradeno, string alipayTradeNo, string refundAmount, string refundReason, string refundNo)
        {
            IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, FORMAT, "1.0", "RSA2", ALIPAY_PUBLIC_KEY, CHARSET, false);

            AlipayTradeRefundModel model = new AlipayTradeRefundModel
            {
                OutTradeNo   = tradeno,
                TradeNo      = alipayTradeNo,
                RefundAmount = refundAmount,
                RefundReason = refundReason,
                OutRequestNo = refundNo
            };

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            var response = client.Execute(request);

            return(Json(response.Body));
        }
Exemple #29
0
        public string Get(string tradeNo, string fee)
        {
            IAopClient client = new DefaultAopClient(ConfigurationManager.AppSettings["alipay.port"], ConfigurationManager.AppSettings["alipay.appId"], ConfigurationManager.AppSettings["alipay.privateKey"]);
            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.BizContent = "{" + string.Format(
                "    \"out_trade_no\":\"{0}\"," +
                "    \"trade_no\":\"{1}\"," +
                "    \"refund_amount\":{2}," +
                "    \"refund_reason\":\"正常退款\"", tradeNo, string.Empty, fee) + "  }";
            AlipayTradeRefundResponse response = client.Execute(request);

            if (!response.IsError)
            {
                return("支付宝退款成功:" + tradeNo);
            }
            else
            {
                return("支付宝退款失败:" + tradeNo + "-" + response.SubMsg);
            }
        }
        public async Task <JsonResult> Refund(string tradeno, string alipayTradeNo, string refundAmount, string refundReason, string refundNo)
        {
            /*DefaultAopClient client = new DefaultAopClient(Config.Gatewayurl, Config.AppId, Config.PrivateKey, "json", "2.0",
             *      Config.SignType, Config.AlipayPublicKey, Config.CharSet, false);*/

            AlipayTradeRefundModel model = new AlipayTradeRefundModel();

            model.OutTradeNo   = tradeno;
            model.TradeNo      = alipayTradeNo;
            model.RefundAmount = refundAmount;
            model.RefundReason = refundReason;
            model.OutRequestNo = refundNo;

            AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

            request.SetBizModel(model);

            var response = await _alipayService.ExecuteAsync(request);

            return(Json(response.Body));
        }