Ejemplo n.º 1
0
        public async Task Test_PayIns_CreateRefund_CardDirect()
        {
            try
            {
                PayInDTO payIn = await this.GetNewPayInCardDirect();

                WalletDTO wallet = await this.GetJohnsWalletWithMoney();

                WalletDTO walletBefore = await this.Api.Wallets.GetAsync(wallet.Id);

                RefundDTO refund = await this.GetNewRefundForPayIn(payIn);

                WalletDTO walletAfter = await this.Api.Wallets.GetAsync(wallet.Id);

                Assert.IsTrue(refund.Id.Length > 0);
                Assert.IsTrue(refund.DebitedFunds.Amount == payIn.DebitedFunds.Amount);
                Assert.IsTrue(walletBefore.Balance.Amount == (walletAfter.Balance.Amount + payIn.DebitedFunds.Amount));
                Assert.AreEqual(TransactionType.PAYOUT, refund.Type);
                Assert.AreEqual(TransactionNature.REFUND, refund.Nature);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundQueryResult RefundQuery(RefundDTO dto)
        {
            WeixinDataHelper data = new WeixinDataHelper(this._weixinKey);

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

            WeixinDataHelper response = weixinPayApi.RefundQuery(data);//提交退款查询给API,接收返回数据
            var result = new RefundQueryResult();

            result.SetWeixiResult(response);
            return(result);
        }
Ejemplo n.º 3
0
        public void Test_Refund_GetRefundsForPayIn()
        {
            try
            {
                PayInDTO  payIn  = GetNewPayInCardDirect();
                RefundDTO refund = GetNewRefundForPayIn(payIn);

                var pagination = new Pagination(1, 1);

                var filter = new FilterRefunds
                {
                    ResultCode = payIn.ResultCode,
                    Status     = payIn.Status
                };

                var sort = new Sort();
                sort.AddField("CreationDate", SortDirection.desc);

                var refunds = Api.Refunds.GetRefundsForPayIn(payIn.Id, pagination, filter, sort);

                Assert.IsTrue(refunds.Count > 0);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
Ejemplo n.º 4
0
        public void Test_Refund_GetRefundsForTransfer()
        {
            try
            {
                var         wallet   = this.GetNewJohnsWalletWithMoney(10000);
                TransferDTO transfer = this.GetNewTransfer(wallet);
                RefundDTO   refund   = this.GetNewRefundForTransfer(transfer);

                var pagination = new Pagination(1, 1);

                var filter = new FilterRefunds
                {
                    ResultCode = transfer.ResultCode,
                    Status     = transfer.Status
                };

                var sort = new Sort();
                sort.AddField("CreationDate", SortDirection.desc);

                var refunds = Api.Refunds.GetRefundsForTransfer(transfer.Id, pagination, filter, sort);

                Assert.IsTrue(refunds.Count > 0);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.Message);
            }
        }
        public void Test_Idempotency_PayinsCreateRefunds()
        {
            string    key    = DateTime.Now.Ticks.ToString();
            PayInDTO  payIn  = this.GetNewPayInCardDirect();
            RefundDTO refund = this.GetNewRefundForPayIn(payIn, key);

            var result = Api.Idempotency.Get(key);

            Assert.IsInstanceOf <RefundDTO>(result.Resource);
        }
Ejemplo n.º 6
0
        public void Test_Refund_GetForPayIn()
        {
            PayInDTO       payIn  = this.GetNewPayInCardDirect();
            RefundDTO      refund = this.GetNewRefundForPayIn(payIn);
            UserNaturalDTO user   = this.GetJohn();

            RefundDTO getRefund = this.Api.Refunds.Get(refund.Id);

            Assert.AreEqual(getRefund.Id, refund.Id);
            Assert.AreEqual(getRefund.InitialTransactionId, payIn.Id);
            Assert.AreEqual(getRefund.AuthorId, user.Id);
            Assert.AreEqual(getRefund.Type, TransactionType.PAYOUT);
        }
Ejemplo n.º 7
0
        public void Test_Refund_GetForTransfer()
        {
            TransferDTO    transfer = this.GetNewTransfer();
            RefundDTO      refund   = this.GetNewRefundForTransfer(transfer);
            UserNaturalDTO user     = this.GetJohn();

            RefundDTO getRefund = this.Api.Refunds.Get(refund.Id);

            Assert.AreEqual(getRefund.Id, refund.Id);
            Assert.AreEqual(getRefund.InitialTransactionId, transfer.Id);
            Assert.AreEqual(getRefund.AuthorId, user.Id);
            Assert.AreEqual(getRefund.Type, TransactionType.TRANSFER);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 订单退款
 /// </summary>
 /// <returns></returns>
 public ActionResult RefundOrderWeixin(RefundDTO dto)
 {
     try
     {
         IF2FTradeService service = new WeixinTradeService();
         service.SetAuthToken("1366316402");
         dto.OperatorId = "111";
         var result = service.Refund(dto);
         return(Content(string.Format("传参值:{0}<br/>请求结果:{1}<br/>子商户:{2}", new JavaScriptSerializer().Serialize(dto), result.ResponseBody, "1366316402")));
     }
     catch (Exception e)
     {
         return(Content(string.Format("发生异常:{0}", e.Message)));
     }
 }
Ejemplo n.º 9
0
        public void Test_Transfers_CreateRefund()
        {
            WalletDTO   wallet       = this.GetNewJohnsWalletWithMoney(10000);
            TransferDTO transfer     = this.GetNewTransfer(wallet);
            WalletDTO   walletBefore = this.Api.Wallets.Get(wallet.Id);

            RefundDTO refund      = this.GetNewRefundForTransfer(transfer);
            WalletDTO walletAfter = this.Api.Wallets.Get(wallet.Id);

            Assert.IsTrue(refund.Id.Length > 0);
            Assert.IsTrue(refund.DebitedFunds.Amount == transfer.DebitedFunds.Amount);
            Assert.IsTrue(walletBefore.Balance.Amount == (walletAfter.Balance.Amount - transfer.DebitedFunds.Amount));
            Assert.AreEqual(TransactionType.TRANSFER, refund.Type);
            Assert.AreEqual(TransactionNature.REFUND, refund.Nature);
        }
Ejemplo n.º 10
0
        public void Test_Refund_GetForTransfer()
        {
            WalletDTO      wallet   = this.GetNewJohnsWalletWithMoney(10000);
            TransferDTO    transfer = this.GetNewTransfer(wallet);
            RefundDTO      refund   = this.GetNewRefundForTransfer(transfer);
            UserNaturalDTO user     = this.GetJohn();

            RefundDTO getRefund = this.Api.Refunds.Get(refund.Id);

            Assert.AreEqual(getRefund.Id, refund.Id);
            Assert.AreEqual(getRefund.InitialTransactionId, transfer.Id);
            Assert.AreEqual(getRefund.AuthorId, user.Id);
            Assert.AreEqual(getRefund.Type, TransactionType.TRANSFER);
            Assert.IsNotNull(getRefund.RefundReason);
            Assert.AreEqual(getRefund.RefundReason.RefundReasonType, RefundReasonType.OTHER);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// 订单退款
 /// </summary>
 /// <returns></returns>
 public ActionResult RefundOrder(RefundDTO dto)
 {
     try
     {
         IF2FTradeService service = new AliPayTradeService();
         if (Session["CurrentAlipayAuthToken"] != null && !string.IsNullOrEmpty(Session["CurrentAlipayAuthToken"].ToString()))
         {
             service.SetAuthToken(Session["CurrentAlipayAuthToken"].ToString());
         }
         var result = service.Refund(dto);
         return(Content(string.Format("传参值:{0}<br/>请求结果:{1}<br/>CurrentAlipayAuthToken:{2}", new JavaScriptSerializer().Serialize(dto), result.ResponseBody, Session["CurrentAlipayAuthToken"])));
     }
     catch (Exception e)
     {
         return(Content(string.Format("发生异常:{0}", e.Message)));
     }
 }
Ejemplo n.º 12
0
        public async Task Test_Refund_GetForPayIn()
        {
            PayInDTO payIn = await this.GetNewPayInCardDirect();

            RefundDTO refund = await this.GetNewRefundForPayIn(payIn);

            UserNaturalDTO user = await this.GetJohn();

            RefundDTO getRefund = await this.Api.Refunds.GetAsync(refund.Id);

            Assert.AreEqual(getRefund.Id, refund.Id);
            Assert.AreEqual(getRefund.InitialTransactionId, payIn.Id);
            Assert.AreEqual(getRefund.AuthorId, user.Id);
            Assert.AreEqual(getRefund.Type, TransactionType.PAYOUT);
            Assert.IsNotNull(getRefund.RefundReason);
            Assert.AreEqual(getRefund.RefundReason.RefundReasonType, RefundReasonType.INITIALIZED_BY_CLIENT);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 退款查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundQueryResult RefundQuery(RefundDTO dto)
        {
            AlipayTradeRefundQueryDTO refundQueryDto = new AlipayTradeRefundQueryDTO();

            refundQueryDto.trade_no       = dto.OnlineTradeNo;
            refundQueryDto.out_trade_no   = dto.OutTradeNo;
            refundQueryDto.out_request_no = dto.OutRefundNo;

            AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();

            request.BizContent = refundQueryDto.BuildJson();
            AlipayTradeFastpayRefundQueryResponse response = Execute(request);

            var result = new RefundQueryResult();

            result.SetAlipayResult(response);

            return(result);
        }
        public void Test_PayIns_CreateRefund_CardDirect()
        {
            try
            {
                PayInDTO  payIn        = TestHelper.GetNewPayInCardDirect();
                WalletDTO wallet       = TestHelper.GetJohnsWalletWithMoney();
                WalletDTO walletBefore = TestHelper.WalletsApi.Get(wallet.Id).Result;

                RefundDTO refund      = TestHelper.GetNewRefundForPayIn(payIn);
                WalletDTO walletAfter = TestHelper.WalletsApi.Get(wallet.Id).Result;

                Assert.True(refund.Id.Length > 0);
                Assert.True(refund.DebitedFunds.Amount == payIn.DebitedFunds.Amount);
                Assert.True(walletBefore.Balance.Amount == (walletAfter.Balance.Amount + payIn.DebitedFunds.Amount));
                Assert.Equal(TransactionType.PAYOUT, refund.Type);
                Assert.Equal(TransactionNature.REFUND, refund.Nature);
            }
            catch (Exception ex)
            {
                Assert.True(false, ex.Message);
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 申请退款
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundResult Refund(RefundDTO dto)
        {
            WeixinDataHelper data = new WeixinDataHelper(this._weixinKey);

            if (!string.IsNullOrEmpty(dto.OnlineTradeNo))//微信订单号存在的条件下,则已微信订单号为准
            {
                data.SetValue("transaction_id", dto.OnlineTradeNo);
            }
            else//微信订单号不存在,才根据商户订单号去退款
            {
                data.SetValue("out_trade_no", dto.OutTradeNo);
            }

            data.SetValue("total_fee", int.Parse(((Convert.ToDouble(dto.TotalFee)) * 100).ToString()));   //订单总金额
            data.SetValue("refund_fee", int.Parse(((Convert.ToDouble(dto.RefundFee)) * 100).ToString())); //退款金额
            data.SetValue("out_refund_no", dto.OutRefundNo);                                              //随机生成商户退款单号
            data.SetValue("op_user_id", dto.OperatorId);                                                  //操作员,默认为商户号
            WeixinDataHelper respose = weixinPayApi.Refund(data);                                         //提交退款申请给API,接收返回数据
            var result = new RefundResult();

            result.SetWeixiResult(respose);
            return(result);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 退款申请
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public RefundResult Refund(RefundDTO dto)
        {
            RefundResult result = new RefundResult();

            try
            {
                AlipayTradeRefundDTO refundDto = new AlipayTradeRefundDTO();
                refundDto.out_request_no = dto.OutRefundNo;
                refundDto.out_trade_no   = dto.OutTradeNo;
                refundDto.refund_amount  = dto.RefundFee;
                refundDto.refund_reason  = dto.RefundReason;
                refundDto.trade_no       = dto.OnlineTradeNo;
                AlipayTradeRefundRequest refundRequest = new AlipayTradeRefundRequest();
                refundRequest.BizContent = refundDto.BuildJson();
                AlipayTradeRefundResponse response = Execute(refundRequest);
                result.SetAlipayResult(response);
                return(result);
            }
            catch (Exception e)
            {
                throw new F2FPayException(e.Message);
            }
        }