Пример #1
0
        // 查询
        public async Task <Pay_Order> Query(Pay_Order order)
        {
            var model = new AlipayTradeQueryModel
            {
                OutTradeNo = order.Order_SN
            };
            var req = new AlipayTradeQueryRequest();

            req.SetBizModel(model);

            var res = await client.ExecuteAsync(req, options.Value);

            if (res.TradeStatus == "TRADE_SUCCESS")
            {
                if (order.State == OrderState.Pending)
                {
                    return(OrderService.Paidup(
                               order,
                               res.TradeNo,
                               res.TotalAmount.ToObject <decimal>(),
                               res.SendPayDate,
                               PayType.Alipay
                               ));
                }
            }
            return(order);
        }
Пример #2
0
        // 查询订单
        public async Task <OrderResult> Query(Pay_Order order)
        {
            var req = new WeChatPayOrderQueryRequest
            {
                OutTradeNo = order.Order_SN
            };

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

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                logger.LogDebug($"Wepay Query end with: {order.Id} {res.TradeState}");
                if (order.State == OrderState.Pending)
                {
                    if (res.TradeState == "SUCCESS")
                    {
                        logger.LogDebug($"Wepay Query Paidup with: {order.Id}");
                        order = OrderService.Paidup(
                            order,
                            res.TransactionId,
                            (decimal)(res.TotalFee / 100.0),
                            res.TimeEnd,
                            PayType.Wechat
                            );
                    }
                    else if (res.TradeState == "CLOSED")
                    {
                        order = OrderService.Close(order, PayType.Wechat);
                    }
                    else if (res.TradeState == "REFUND")
                    {
                        order = OrderService.Refund(order, PayType.Wechat);
                    }
                    else if (res.TradeState == "REVOKED")
                    {
                        order = OrderService.Reverse(order, PayType.Wechat);
                    }
                }

                return(new OrderResult
                {
                    Success = true,
                    Order = order
                });
            }

            logger.LogDebug($"Wepay Query end with: {order.Id} FAIL: {res.ErrCode}:{res.ErrCodeDes}");
            return(new OrderResult
            {
                Success = false,
                Error = $"{res.ErrCode}:{res.ErrCodeDes}"
            });
        }
Пример #3
0
        public async Task <OrderResult> Reverse(Pay_Order order)
        {
            if (order.State != OrderState.Paidup)
            {
                // 只有已支付时可撤销订单
                return(new OrderResult
                {
                    Success = false,
                    Error = $"只有已支付的订单可撤销"
                });
            }

            var request = new WeChatPayReverseRequest
            {
                TransactionId = order.Pay_Id
            };

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

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                logger.LogDebug($"Wepay Reverse end with: {order.Id} SUCCESS");
                return(new OrderResult
                {
                    Success = true,
                    Order = OrderService.Reverse(order, PayType.Wechat)
                });
            }

            logger.LogDebug($"Wepay Reverse end with: {order.Id} FAIL: {res.ErrCode}:{res.ErrCodeDes}");
            return(new OrderResult
            {
                Success = false,
                Error = $"{res.ErrCode}:{res.ErrCodeDes}"
            });
        }
Пример #4
0
        public async Task <OrderResult> Close(Pay_Order order)
        {
            if (order.State != OrderState.Pending)
            {
                // 只有待支付时可关闭订单
                return(new OrderResult
                {
                    Success = false,
                    Error = $"只有未支付的订单可关闭"
                });
            }

            var request = new WeChatPayCloseOrderRequest
            {
                OutTradeNo = order.Order_SN
            };

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

            if (res.ReturnCode == "SUCCESS" && res.ResultCode == "SUCCESS")
            {
                logger.LogDebug($"Wepay Close end with: {order.Id} SUCCESS");
                return(new OrderResult
                {
                    Success = true,
                    Order = OrderService.Close(order, PayType.Wechat)
                });
            }

            logger.LogDebug($"Wepay Close end with: {order.Id} FAIL: {res.ErrCode}:{res.ErrCodeDes}");
            return(new OrderResult
            {
                Success = false,
                Error = $"{res.ErrCode}:{res.ErrCodeDes}"
            });
        }