Example #1
0
        public async Task <PayOutput> Pay(PayInput input)
        {
            var orderInfo = _sellAppService.GetOrderInfo(input.OrderId);

            if (orderInfo == null)
            {
                throw new LotteryDataException("下单失败,请稍后重试");
            }
            if (!orderInfo.OrderCost.Equals(input.Price))
            {
                throw new LotteryDataException("订单金额错误,请核对订单信息");
            }
            if (input.IsType != PayType.AliPay && input.IsType != PayType.Wechat)
            {
                throw new LotteryDataException("请选择支付方式");
            }
            var paysApiInfo = _sellAppService.GetPaysApiInfo();
            var payInfo     = new PayOrderDto()
            {
                Uid    = paysApiInfo.Uid,
                Price  = input.Price.ToString("#0.00"),
                Istype = (int)input.IsType,
                //  Goodsname = input.GoodsName,
                Notify_url = paysApiInfo.NotifyUrl,
                Return_url = paysApiInfo.ReturnUrl,
                Orderid    = input.OrderId,
                Orderuid   = _lotterySession.UserName,
            };

            payInfo.Key = GetPayKey(payInfo, paysApiInfo.Token);

            return(_sellAppService.GetPayOrderInfo(payInfo, paysApiInfo.PaysApi));
        }
Example #2
0
        public ResultMessage <string> ClientCompleteServiceOrder(PayOrderDto payOrder)
        {
            string msg    = string.Empty;
            var    result = _rechargeService.ClientCompleteServiceOrder(payOrder.MapTo <CompleteServiceOrder>(), out msg);

            try
            {
                if (result)
                {
                    return(new ResultMessage <string>(msg, "Success"));
                }
                return(new ResultMessage <string>(ResultCode.Fail, "FAIL", msg));
            }
            catch (Exception e)
            {
                return(new ResultMessage <string>(ResultCode.Fail, "FAIL", e.Message));
            }
        }
Example #3
0
        public ResultMessage <string> ClientCompleteServiceOrder(PayOrderDto payOrder)
        {
            var result = _purchaseService.ClientCompleteServiceOrder(payOrder.MapTo <CompleteServiceOrder>());

            string msg = string.Empty;

            if (result == 0)
            {
                msg = "服务购买成功!您可以重新登录App后,享受我们提供的服务!";
                return(new ResultMessage <string>(msg));
            }
            switch (result)
            {
            case -1:
                msg = "异常失败";
                break;

            case -2:
                msg = "订单不存在";
                break;

            case -3:
                msg = "金额不一致";
                break;

            case 1:
                msg = "订单之前已处理过,无需重复处理 ";
                break;

            case 2:
                msg = "客户已有更高授权";
                break;

            case 3:
                msg = "客户已有此版本的终身授权";
                break;

            default:
                msg = "未知原因,购买失败!";
                break;
            }
            return(new ResultMessage <string>(ResultCode.Fail, "FAIL", msg));
        }
Example #4
0
        private string GetPayKey(PayOrderDto payInfo, string token)
        {
            var keyLine = string.Empty; // payInfo.Goodsname + payInfo.Istype + payInfo.Notify_url + payInfo.Orderid + payInfo.Orderuid

            //+ payInfo.Price + payInfo.Return_url + token + payInfo.Uid;
            if (!payInfo.Goodsname.IsNullOrEmpty())
            {
                keyLine += payInfo.Goodsname;
            }

            keyLine += payInfo.Istype;

            if (!payInfo.Notify_url.IsNullOrEmpty())
            {
                keyLine += payInfo.Notify_url;
            }
            if (!payInfo.Orderid.IsNullOrEmpty())
            {
                keyLine += payInfo.Orderid;
            }
            if (!payInfo.Orderuid.IsNullOrEmpty())
            {
                keyLine += payInfo.Orderuid;
            }
            keyLine += payInfo.Price;
            if (!payInfo.Return_url.IsNullOrEmpty())
            {
                keyLine += payInfo.Return_url;
            }
            keyLine += token;
            if (!payInfo.Uid.IsNullOrEmpty())
            {
                keyLine += payInfo.Uid;
            }

            return(EncryptHelper.Md5(keyLine));
        }
Example #5
0
        public PayOutput GetPayOrderInfo(PayOrderDto payInfo, string payApi)
        {
            var formData = new Dictionary <string, object>();

            formData.Add("uid", payInfo.Uid);
            formData.Add("price", payInfo.Price);
            formData.Add("istype", payInfo.Istype);
            formData.Add("notify_url", payInfo.Notify_url);
            formData.Add("return_url", payInfo.Return_url);
            formData.Add("orderid", payInfo.Orderid);
            formData.Add("orderuid", payInfo.Orderuid);
            formData.Add("goodsname", payInfo.Goodsname);
            formData.Add("key", payInfo.Key);

            dynamic result;

            try
            {
                var response = _httpClient.Post(payApi, formData, null, new { format = "json" });
                result = response.RawText.ToObject();
            }
            catch (Exception e)
            {
                _logger.Error(e);
                string payType          = string.Empty;
                string recommendPaytype = string.Empty;
                if (payInfo.Istype == 1)
                {
                    payType          = "支付宝";
                    recommendPaytype = "微信";
                }
                else
                {
                    payType          = "微信";
                    recommendPaytype = "支付宝";
                }
                throw new LotteryException(string.Format("{0}支付系统异常,推荐使用{1}支付,或稍后重试", payType, recommendPaytype));
            }

            string qrcodeLink = result.data.qrcode.ToString();

            if (qrcodeLink.IsNullOrEmpty())
            {
                string payType          = string.Empty;
                string recommendPaytype = string.Empty;
                if (payInfo.Istype == 1)
                {
                    payType          = "支付宝";
                    recommendPaytype = "微信";
                }
                else
                {
                    payType          = "微信";
                    recommendPaytype = "支付宝";
                }
                throw new LotteryException(string.Format("{0}支付系统异常,推荐使用{1}支付,或稍后重试", payType, recommendPaytype));
            }
            var output = new PayOutput()
            {
                IsType             = result.data.istype,
                Msg                = payInfo.Goodsname,
                QrCodeImageAddress = string.Format(LotteryConstants.QrCodeUrl, result.data.qrcode),
                QrCode             = result.data.qrcode,
                RealPrice          = result.data.realprice
            };

            return(output);
        }