コード例 #1
0
        public async Task <IActionResult> Refund(string out_refund_no, string transaction_id, string out_trade_no, int total_fee, int refund_fee, string refund_desc)
        {
            var request = new WeChatPayRefundRequest()
            {
                OutRefundNo   = out_refund_no,
                TransactionId = transaction_id,
                OutTradeNo    = out_trade_no,
                TotalFee      = total_fee,
                RefundFee     = refund_fee,
                RefundDesc    = refund_desc,
            };
            var response = await _certClient.ExecuteAsync(request);

            return(Ok(response.Body));
        }
コード例 #2
0
        public async Task <IActionResult> Refund(WeChatPayRefundViewModel viewModel)
        {
            var request = new WeChatPayRefundRequest
            {
                OutRefundNo   = viewModel.OutRefundNo,
                TransactionId = viewModel.TransactionId,
                OutTradeNo    = viewModel.OutTradeNo,
                TotalFee      = viewModel.TotalFee,
                RefundFee     = viewModel.RefundFee,
                RefundDesc    = viewModel.RefundDesc,
                NotifyUrl     = viewModel.NotifyUrl
            };
            var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);

            return(Ok(response.Body));
        }
コード例 #3
0
        public async Task <IActionResult> Refund(WeChatPayRefundViewModel viewModel)
        {
            var request = new WeChatPayRefundRequest()
            {
                OutRefundNo   = viewModel.OutRefundNo,
                TransactionId = viewModel.TransactionId,
                OutTradeNo    = viewModel.OutTradeNo,
                TotalFee      = viewModel.TotalFee,
                RefundFee     = viewModel.RefundFee,
                RefundDesc    = viewModel.RefundDesc,
                NotifyUrl     = viewModel.NotifyUrl,
            };
            var response = await _client.ExecuteAsync(request);

            ViewData["response"] = response.Body;
            return(View());
        }
コード例 #4
0
        public async Task <RefundResult> Refund(PayRequest request)
        {
            var order  = OrderService.Get(request.Id);
            var refund = OrderService.GetRefund(order, request.Refund_Money, request.Refund_Desc);
            var req    = new WeChatPayRefundRequest
            {
                OutRefundNo   = refund.Order_SN,
                TransactionId = order.Pay_Id,
                OutTradeNo    = order.Order_SN,
                TotalFee      = (int)(order.Pay_Money * 100),
                RefundFee     = (int)(refund.Order_Money * 100),
                RefundDesc    = refund.Order_Desc,
                NotifyUrl     = request.NotifyUrl
            };

            logger.LogDebug($"Wepay Refund begin with: {request.Id}");
            var res = await client.ExecuteAsync(req, options.Value);

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                logger.LogDebug($"Wepay Refund end with: {request.Id} SUCCESS");

                order = OrderService.Refund(order, PayType.Wechat);
                return(new RefundResult
                {
                    Success = true,
                    Order = order,
                    Refund = OrderService.Refunded(
                        refund,
                        res.RefundId,
                        (decimal)(res.RefundFee / 100.0),
                        DateTime.Now.ToStr("yyyyMMddHHmmss")
                        )
                });
            }

            logger.LogDebug($"Wepay Refund end with: {request.Id} FAIL: {res.ErrCode}:{res.ErrCodeDes}");
            return(new RefundResult
            {
                Success = false,
                Error = $"{res.ErrCode}:{res.ErrCodeDes}"
            });
        }
コード例 #5
0
        public async Task <IActionResult> Refund(string out_refund_no, string transaction_id, string out_trade_no, int total_fee, int refund_fee, string refund_desc, string notify_url)
        {
            var request = new WeChatPayRefundRequest
            {
                OutRefundNo   = out_refund_no,
                TransactionId = transaction_id,
                OutTradeNo    = out_trade_no,
                TotalFee      = total_fee,
                RefundFee     = refund_fee,
                RefundDesc    = refund_desc,
                NotifyUrl     = notify_url
            };
            var response = await _client.ExecuteAsync(request, "wechatpayCertificateName");

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

            Dictionary <string, string> result = new Dictionary <string, string>();

            result.Add("return_code", response.ReturnCode);
            result.Add("return_msg", response.ReturnMsg);

            if (response.ReturnCode == "SUCCESS" && response.ResultCode == "SUCCESS")
            {
                responseModel.code = HTTPResponseCode.Successful;
            }
            else
            {
                responseModel.code = HTTPResponseCode.BadRequest;
                result.Add("err_code", response.ErrCode);
                result.Add("err_code_des", response.ErrCodeDes);
            }
            responseModel.message = JsonConvert.SerializeObject(result);
            return(Json(responseModel));
        }
コード例 #6
0
ファイル: WeChatController.cs プロジェクト: EzrealJ/EasyPay
        public async Task <WeChatPayRefundResponse> Refund([FromQuery] WeChatSignSettings weChatSignSettings, [FromBody] WeChatPayRefundRequest refundRequest)
        {
            try
            {
                WeChatPayRefundResponse result = await _weChatPayClient.Refund(weChatSignSettings, refundRequest);

                return(result);
            }
            catch (Exception ex)
            {
                throw;
            }
        }