public async Task <ResponseViewModel <string> > AcquireAliPaySign([FromBody] RequestViewModel obj)
        {
            ResponseViewModel <string> response = null;
            string result = string.Empty;

            obj = JsonHelper.DeserializeJsonToObject <RequestViewModel>(Content(User.Identity.Name).Content);
            var  sysCode = SysCode.Ok;
            bool isLog   = _token.VerifyToken(obj.HendInfo.UserOpenId, obj.HendInfo.SessionToken);

            if (isLog)
            {
                string json    = RedisHelper.StringGet($"{CacheKey.Token}{obj.HendInfo.UserOpenId}", RedisFolderEnum.token, RedisEnum.Three);
                var    userLog = JsonHelper.DeserializeJsonToObject <UserLoginDto>(json);
                int    itemId  = StringExtension.ToInt((string)obj.Data.itemId); //; //商品Id
                RechargeCommodityDto rechargeCommodity = await _recharge.GetRechargeCommodityByIdAsync(itemId);

                if (rechargeCommodity == null)
                {
                    sysCode = SysCode.RechargeCommodityIsNULL; //充值商品不存在,
                }
                if (sysCode == SysCode.Ok)
                {
                    string order = Guid.NewGuid().ToString();
                    result = _recharge.CreateAlipayReceipt(rechargeCommodity, order);
                    AliPayOrderDto AliPayOrder = new AliPayOrderDto()
                    {
                        Commodity_id = itemId,
                        Out_trade_no = order,
                        Createtime   = DateTime.Now,
                        Updatetime   = DateTime.Now,
                        Gmt_payment  = DateTime.Now,
                        Userid       = userLog.Userid,
                        Total_amount = rechargeCommodity.Money
                    };
                    await _recharge.RecordAlipayOrderAsync(AliPayOrder);//记录支付宝订单。

                    RechargeDto recharge = new RechargeDto()
                    {
                        Amount     = rechargeCommodity.Amount,
                        createtime = DateTime.Now,
                        Pay_type   = 1, //支付类型 1支付宝,2微信,3苹果内购
                        Status     = 1, //1 待处理 2 已支付 3 支付失败 4 超时
                        updatetime = DateTime.Now,
                        UserId     = userLog.Userid,
                        Order_id   = AliPayOrder.Out_trade_no,
                    };
                    await _recharge.RecordRechargeLogAsync(recharge); //记录充值订
                }
            }
            else
            {
                /*短令牌失效*/
                sysCode = SysCode.SessionTokenLose;
            }
            response = new ResponseViewModel <string>(sysCode, sysCode == SysCode.Ok ? result : null, obj.Encrypt, _sys, obj.Secret);
            return(response);
        }
Exemple #2
0
        public async Task <H5ResponseViewModel <AliPayH5View> > PayRequest([FromBody] H5RequestViewModel Parameters)
        {
            var sysCode = _sys.CheckParameters(Parameters.data, "payrequest");
            H5ResponseViewModel <AliPayH5View> response = null;
            AliPayH5View result = null;
            string       token  = Parameters.data.token;
            bool         isLog  = _token.VerifyToken(token);

            if (sysCode == SysCode.Ok)
            {
                if (isLog)
                {
                    string       json              = RedisHelper.StringGet($"{CacheKey.Token}{token}", RedisFolderEnum.token, RedisEnum.Five);
                    UserLoginDto userLogin         = JsonHelper.DeserializeJsonToObject <UserLoginDto>(json);
                    int          id                = int.Parse((string)Parameters.data.id);
                    var          rechargeCommodity = await _recharge.GetRechargeCommodityByIdAsync(id);

                    string order = Guid.NewGuid().ToString();
                    result = _recharge.CreateAlipayH5Receipt(rechargeCommodity, order);
                    AliPayOrderDto AliPayOrder = new AliPayOrderDto()
                    {
                        Commodity_id = id,
                        Out_trade_no = order,
                        Createtime   = DateTime.Now,
                        Updatetime   = DateTime.Now,
                        Gmt_payment  = DateTime.Now,
                        Userid       = userLogin.Userid,
                        Total_amount = rechargeCommodity.Money           //人名币
                    };
                    await _recharge.RecordAlipayOrderAsync(AliPayOrder); //记录支付宝订单。

                    RechargeDto recharge = new RechargeDto()
                    {
                        Amount     = rechargeCommodity.Amount, //虚拟币
                        createtime = DateTime.Now,
                        Pay_type   = 1,                        //支付类型 1支付宝,2微信,3苹果内购
                        Status     = 1,                        //1 待处理 2 已支付 3 支付失败 4 超时
                        updatetime = DateTime.Now,
                        UserId     = userLogin.Userid,
                        Order_id   = AliPayOrder.Out_trade_no,
                    };
                    await _recharge.RecordRechargeLogAsync(recharge); //记录充值订
                }
                else
                {
                    sysCode = SysCode.TokenLose;
                }
            }
            response = new H5ResponseViewModel <AliPayH5View>(sysCode, result ?? null);
            return(response);
        }