Example #1
0
        /// <summary>
        /// 记录支付宝订单
        /// author:陶林辉
        /// </summary>
        /// <param name="aliPayOrder"></param>
        /// <returns></returns>
        public async Task <bool> RecordAlipayOrderAsync(AliPayOrderDto aliPayOrder)
        {
            var entity = _mapper.Map <AliPayOrderDto, AliPayOrderEntity>(aliPayOrder);

            _context.AliPayOrder.Add(entity);
            return(await _context.SaveChangesAsync() > 0);
        }
Example #2
0
        public async Task <ResponseViewModel <string> > AliPaySign([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.CreateAlipaySign(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);
        }
Example #3
0
        /// <summary>
        /// 根据商户订单获取订单详情,
        /// author:陶林辉
        /// </summary>
        /// <param name="aliPayOrder">支付宝商户订单</param>
        /// <returns></returns>
        public async Task <bool> UpdateAlipayOrderAsync(AliPayOrderDto aliPayOrder)
        {
            var entity = await _context.AliPayOrder.Where(m => m.Out_trade_no == aliPayOrder.Out_trade_no).FirstOrDefaultAsync();

            entity.trade_no     = aliPayOrder.Trade_no;
            entity.Trade_status = aliPayOrder.Trade_status;
            entity.Gmt_payment  = aliPayOrder.Gmt_payment;
            entity.updatetime   = aliPayOrder.Updatetime;
            entity.Buyer_id     = aliPayOrder.Buyer_id;
            entity.Fund_channel = aliPayOrder.Fund_channel;
            return(await _context.SaveChangesAsync() > 0);
        }
Example #4
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);
        }
        public async Task Notify(Dictionary <string, string> sArray)
        {
            _log.Info($"支付宝回调{sArray}");
            AliPayOrderDto aliPayOrder = new AliPayOrderDto();

            if (sArray.Count != 0)
            {
                string out_trade_no = sArray["out_trade_no"];
                bool   flag         = _alipayService.RSACheckV1(sArray);
                if (flag)
                {
                    string status = "1";
                    //查询订单是否存在
                    aliPayOrder = await _recharge.GetAliPayOrderByIdAsync(out_trade_no);

                    //查询商品信息
                    var rechargeCommodity = await _recharge.GetRechargeCommodityByIdAsync(int.Parse(aliPayOrder.Commodity_id.ToString()));

                    if (aliPayOrder.Out_trade_no == "" && aliPayOrder.Out_trade_no == null)
                    {
                        /*订单不存在*/
                        return;
                    }
                    aliPayOrder.Out_trade_no = sArray["out_trade_no"];                //商户订单号
                    aliPayOrder.Fund_channel = sArray["fund_bill_list"];
                    aliPayOrder.Trade_no     = sArray["trade_no"];                    //支付宝交易订单号
                    aliPayOrder.Gmt_payment  = DateTime.Parse(sArray["gmt_payment"]); //付款时间
                    aliPayOrder.Updatetime   = DateTime.Now;
                    aliPayOrder.Trade_status = sArray["trade_status"];
                    aliPayOrder.Buyer_id     = sArray["buyer_logon_id"]; //买家支付宝账号
                    //更新数据库的支付宝订单状态
                    await _recharge.UpdateAlipayOrderAsync(aliPayOrder);

                    //判断支付状态
                    switch (aliPayOrder.Trade_status)
                    {
                    case "TRADE_SUCCESS":
                        status = "2";
                        break;

                    case "TRADE_CLOSED":
                        status = "3";
                        break;

                    case "WAIT_BUYER_PAY":
                        status = "1";
                        break;

                    case "TRADE_FINISHED":
                        status = "2";
                        break;

                    default:
                        break;
                    }
                    if (status == "2")
                    {
                        //关闭章鱼充值
                        // if (_biz.Recharge(aliPayOrder.Userid, aliPayOrder.Out_trade_no, double.Parse(rechargeCommodity.Amount.ToString()), "hiAlipay"))
                        if (_accout.Recharge_php(aliPayOrder.Userid, aliPayOrder.Out_trade_no, double.Parse(rechargeCommodity.Amount.ToString()), "充值", "yibiyibaidekey"))
                        {
                            await _recharge.UpdateRechargeLogAsync(status, aliPayOrder.Out_trade_no);
                        }
                    }
                }
                else
                {
                    _log.Info($"{out_trade_no}验签名失败");
                }
            }
        }