public ActionResult Payment(int id, FormCollection collection)
        {
            var Integral = YunShop.Core.DataProvider.GlobeInfo.GetIntegralRequest();
            var prepaidCar = 0.0;
            var trade = YunClient.Instance.Execute(new GetTradeRequest {Id = id}).Trade;
            if (trade != null)
            {
                var rr = YunShop.Core.Extension.Member.GetCurrentUser();
                var overMoney = collection["Money"].TryTo(0.0);
                if (!string.IsNullOrWhiteSpace(trade.Ext))
                {
                    var Userintegral = YunShop.Core.DataProvider.Integral.UserIntegral();
                    if (Userintegral < (trade.Ext.IndexOf(',') >= 0 ? int.Parse(trade.Ext.Split(',')[1]) : int.Parse(trade.Ext)))
                    {
                        return Json(new { error = "该订单需要" + (trade.Ext.IndexOf(',') >= 0 ? trade.Ext.Split(',')[1] : trade.Ext) + "积分,您积分不足" });
                    }
                    if (Math.Round(YunShop.Core.Extension.Member.GetPrepaidCard(), 0) > (trade.Ext.IndexOf(',') >= 0 ? int.Parse(trade.Ext.Split(',')[1]) : int.Parse(trade.Ext)))
                    {
                        prepaidCar = (trade.Ext.IndexOf(',') >= 0 ? int.Parse(trade.Ext.Split(',')[1]) : int.Parse(trade.Ext));
                    }
                    else
                    {
                        prepaidCar = Math.Round(YunShop.Core.Extension.Member.GetPrepaidCard(), 0);
                    }
                }
                //余额付款流程
                if (overMoney  >= trade.Money)
                {
                    if (!string.IsNullOrWhiteSpace(trade.Ext))
                    {
                        YunShop.Core.Extension.Trade.ModifyPriceRequests(id, int.Parse(Math.Round(prepaidCar, 0).ToString()));
                    }
                    var ss = new GeneratePayTradeRequest
                    {
                        OverMoney = overMoney,
                        Ip = Request.UserHostAddress,
                        ClientType = "MOBILE",
                        Id = id,
                        PrepaidCard = prepaidCar,
                    };
                    var flowId = YunClient.Instance.Execute(ss, Member.Token);
                    if (!flowId.IsError && !string.IsNullOrEmpty(flowId.Result))
                    {
                        var payResult = YunClient.Instance.Execute(new CompletePayRequest
                        {
                            Id = flowId.Result.TryTo(0)
                        }, Member.Token);
                        if (payResult.Result)
                        {
                            if (!string.IsNullOrWhiteSpace(trade.Ext))
                            {
                                YunShop.Core.DataProvider.Integral.DeductionIntegral(id);
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrWhiteSpace(trade.Ext))
                            {
                                YunShop.Core.Extension.Trade.ModifyPriceRequest(id, int.Parse(Math.Round(prepaidCar, 0).ToString()));
                            }
                        }
                        return Json(new { error = payResult.ErrMsg, id = id });
                    }
                    else
                    {
                        if (!string.IsNullOrWhiteSpace(trade.Ext))
                        {
                            YunShop.Core.Extension.Trade.ModifyPriceRequest(id, int.Parse(Math.Round(prepaidCar, 0).ToString()));
                        }
                    }

                    return Json(new {error = flowId.ErrMsg});
                }
                var r = YunClient.Instance.Execute(new GeneratePayTradeRequest
                {
                    ClientType = "MOBILE",
                    Ip = Request.UserHostAddress,
                    OnlineMoney = trade.Money - overMoney,
                    Id = id,
                    PaymentIns = collection["PayType"],
                    OverMoney = overMoney,
                    PrepaidCard = prepaidCar,
                }, Member.Token);

                return Json(new {error = r.ErrMsg, id = r.Result});
            }

            return Json(new {error = "订单不存在"});
        }
Beispiel #2
0
 /// <summary>
 /// 生成支付订单
 /// </summary>
 public static string GeneratePayRequest(int id, string onlinemoney, string overmoney, string ip, string clienttype, string paymentins, string bankcode, double cash, string payChannel)
 {
     var rr = new GeneratePayTradeRequest
     {
         Id = id,
         OnlineMoney = double.Parse(onlinemoney),
         OverMoney = double.Parse(overmoney),
         Ip = ip,
         ClientType = clienttype,
         PaymentIns = paymentins,
         BankCode = bankcode,
         Cash = cash,
         PayChannel = payChannel,
     };
     var r = YunClient.Instance.Execute(rr, Member.Token);
     return r.Result;
 }