Exemplo n.º 1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string code    = Request["code"]; //支付接口编号
        string type    = Request["type"]; //支付类型, OD为订单
        string num     = Request["num"];  //相应的单号
        string md5sign = Request["key"];  //MD5 Sign
        string payno   = num;

        //检查数据传递完整
        if (!PayHepler.dataCheck(num + type + code, md5sign))
        {
            Response.Redirect("~/default.aspx");
            Response.End();
        }
        PayEntity entity  = new PayEntity(code);                     //生成一个接口类型
        PayType   paytype = PayTypeFac.getPayType(type, num, payno); //生成一个支付类型


        string status = Request["payment_status"];

        if (status == "Completed" || status == "Pending")
        {
            paytype.success();
            Common.WriteToFile.WriteToTxt("PayPal支付异常----支付单号:" + Request["txn_id"] + "----" + Request["business"] + "----" + DateTime.Now.ToString(), "pay/PayPal/Log/");
            //Response.Redirect("../payend.aspx?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num + "&status=success");
        }
        else
        {
            paytype.failed();
            Common.WriteToFile.WriteToTxt("PayPal支付异常----支付单号:" + Request["txn_id"] + "----" + Request["business"] + "----" + DateTime.Now.ToString(), "pay/PayPal/Log/");
            //Response.Redirect("../payend.aspx?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num + "&status=failed");
        }
    }
Exemplo n.º 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string code    = Request.QueryString["code"]; //支付接口编号
        string type    = Request.QueryString["type"]; //支付类型, OD为订单
        string num     = Request.QueryString["num"];  //相应的单号
        string md5sign = Request.QueryString["key"];  //MD5 Sign
        string webSite = "http://" + Request.Url.Host;

        //检查数据传递完整
        if (!PayHepler.dataCheck(num + type + code, md5sign))
        {
            Response.Redirect("~/default.aspx");
            Response.End();
        }
        PayEntity entity  = new PayEntity(code);              //生成一个接口类型
        PayType   paytype = PayTypeFac.getPayType(type, num); //生成一个支付类型

        business      = entity.payAccount;
        item_name     = paytype.num;
        item_number   = paytype.num;
        a3            = paytype.amount.ToString("f2");
        notify_url    = webSite + "/" + entity.notifyURL + "?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num;
        returnUrl     = webSite + "/" + entity.returnURL + "?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num;
        cancel_return = webSite + "/pay/payend.aspx?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num + "&status=failed";
    }
Exemplo n.º 3
0
        public static int BuyChapter(PayEntity payEntity)
        {
            int a = 0;

            using (var db = new DataContext())
            {
                db.Pay.Add(payEntity);
                a = db.SaveChanges();
            }
            return(a);
        }
Exemplo n.º 4
0
        public object CreateObject(CreatePayDto input)
        {
            var tweet = new PayEntity
            {
                PayAmount = input.PayAmount,
                PayTime   = DateTime.Now,
                PayBy     = "test"
            };
            var o = PayRepository.Insert(tweet);

            return(o);
        }
Exemplo n.º 5
0
        private static PayEntity MySqlRead2Pay(MySqlDataReader reader)
        {
            var entity = new PayEntity
            {
                Id      = reader.GetString("Id"),
                UserId  = reader.GetString("UserId"),
                Type    = reader.GetString("Type"),
                Chapter = reader.GetString("Chapter"),
                PayTime = reader.GetDateTime("PayTime"),
                Money   = reader.GetInt32("Money")
            };

            return(entity);
        }
Exemplo n.º 6
0
        public static int BuyChapter(PayEntity payEntity)
        {
            if (payEntity == null)
            {
                return(0);
            }
            //INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
            var sql = $"INSERT INTO pay (Id,UserId,Type,Chapter,PayTime,Money) " +
                      $"VALUES ('{payEntity.Id}','{payEntity.UserId}','{payEntity.Type}','{payEntity.Chapter}','{payEntity.PayTime}','{payEntity.Money}')";

            using (var cmd = new MySqlCommand(sql, HyMySqlHelper.MySqlConnection))
            {
                var num = cmd.ExecuteNonQuery();
                return(num);
            }
        }
Exemplo n.º 7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string code    = Request["code"]; //支付接口编号
        string type    = Request["type"]; //支付类型, OD为订单
        string num     = Request["num"];  //相应的单号
        string md5sign = Request["key"];  //MD5 Sign

        //检查数据传递完整
        if (!PayHepler.dataCheck(num + type + code, md5sign))
        {
            Response.Redirect("~/default.aspx");
            Response.End();
        }
        PayEntity entity  = new PayEntity(code);              //生成一个接口类型
        PayType   paytype = PayTypeFac.getPayType(type, num); //生成一个支付类型

        string status = Request["payment_status"];

        Response.Write(status);

        if (!string.IsNullOrEmpty(status))
        {
            if (status == "Completed" || status == "Pending")
            {
                try
                {
                    paytype.payNo   = Request["txn_id"];
                    paytype.Sj      = Request["business"];
                    paytype.Mj      = Request["payer_email"];
                    paytype.payCode = code;
                    paytype.success();
                    Response.Redirect("../payend.aspx?code=" + code + "&type=" + type + "&key=" + md5sign + "&num=" + num + "&status=success");
                }
                catch (Exception ex)
                {
                    Common.WriteToFile.WriteToTxt("PayPal支付异常----支付单号:" + paytype.num + "----" + ex.Message + "----" + DateTime.Now.ToString(), "pay/PayPal/Log/");
                }
            }
            else
            {
                paytype.failed();
            }
        }
    }
Exemplo n.º 8
0
        /// <summary>
        /// 付款
        /// </summary>
        /// <param name="pay"></param>
        /// <returns></returns>
        public OptResult Pay(PayEntity pay)
        {
            OptResult rst = null;

            var operation = CardOperation.Pay;
            var optDesc   = operation.GetDescription();

            if (pay == null)
            {
                rst = OptResult.Build(ResultCode.ParamError, optDesc + "——参数不能为空!");
                return(rst);
            }
            string msg = string.Empty;

            if (!pay.Check(out msg))
            {
                rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——{1}!", optDesc, msg));
                return(rst);
            }
            //1、账户是否存在
            var card = GetByIdcard(pay.idcard);

            if (card == null)
            {
                rst = OptResult.Build(ResultCode.DataNotFound, string.Format("{0}——指定身份证号{1}的账户不存在!", optDesc, pay.idcard));
                return(rst);
            }
            //2、如果一卡通号存在,看是否和身份证号对应
            if (!string.IsNullOrEmpty(pay.number) && !string.Equals(card.card_number, pay.number))
            {
                rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——身份证号{1}与一卡通号{2}不匹配!", optDesc, pay.idcard, pay.number));
                return(rst);
            }
            //3、一卡通状态是否正常
            if (card.State != CardState.Normal)
            {
                rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——一卡通状态异常[{1}]!", optDesc, card.State.GetDescription()));
                return(rst);
            }
            //4、余额是否充足
            if (pay.amount > card.card_govmoney + card.card_mymoney)
            {
                rst = OptResult.Build(ResultCode.ParamError, string.Format("{0}——余额不足!", optDesc));
                return(rst);
            }
            //5、是否已经支付过(该一卡通和订单号下,存在"支付"流水或"退款"流水)
            var pg = new PredicateGroup {
                Operator = GroupOperator.And, Predicates = new List <IPredicate>()
            };

            pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_idcard, Operator.Eq, card.card_idcard));
            pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_order, Operator.Eq, pay.order));
            pg.Predicates.Add(Predicates.Field <CardBill>(b => b.bill_type, Operator.Eq, new string[] { CardOperation.Pay.ToString(), CardOperation.Refund.ToString() }));
            var count = _cardBillRep.Count(pg);

            if (count > 0)
            {
                //已付款或退款
                rst = OptResult.Build(ResultCode.OptRepeat, optDesc + "——已付款或退款,不能再次支付!");
                return(rst);
            }
            //6、支付

            /*
             * 消费扣费逻辑:
             * 优先扣除gov:if pay > govnow,govchanged=govnow,govnew=0;mychanged=pay-govnow,mynew=mynow-mychanged;
             *                   else         govchanged=pay,govnew=govnow-govchanged;mychanged=0,mynew=mynow;
             *      优先扣除my: if pay > mynow, mychanged=mynow,mynew=0;govchanged=pay-mynow,govnew=govnow-govchanged;
             *                   else         mychanged=pay,mynew=mynow-mychanged;govchanged=0,govnew=govnow;
             * 1)更新card_info,
             * 2)新增操作记录,type:付款
             * 3)新增一卡通流水,type:付款
             * 注:扣费时,变动额为负数
             */
            decimal govnew, govchanged, mynew, mychanged;

            if (pay.priority == MoneyEnum.gov)
            {
                if (pay.amount > card.card_govmoney)
                {
                    govchanged = -card.card_govmoney;
                    govnew     = 0;
                    mychanged  = -(pay.amount - card.card_govmoney);
                    mynew      = card.card_mymoney + mychanged;//因为mychanged是负数
                }
                else
                {
                    govchanged = -pay.amount;
                    govnew     = card.card_govmoney - pay.amount;
                    mychanged  = 0;
                    mynew      = card.card_mymoney;
                }
            }
            else
            {
                if (pay.amount > card.card_mymoney)
                {
                    mychanged  = -card.card_mymoney;
                    mynew      = 0;
                    govchanged = -(pay.amount - card.card_mymoney);
                    govnew     = card.card_govmoney + govchanged;//因为govchanged是负数
                }
                else
                {
                    mychanged  = -pay.amount;
                    mynew      = card.card_mymoney - pay.amount;
                    govchanged = 0;
                    govnew     = card.card_govmoney;
                }
            }
            //
            var      rec_id     = GuidExtension.GetOne();//操作记录id
            DateTime optTime    = DateTime.Now;
            var      cardRecord = new CardRecord
            {
                rec_id       = rec_id,
                rec_number   = card.card_number,
                rec_idcard   = card.card_idcard,
                rec_type     = operation.ToString(),
                rec_time     = optTime,
                rec_username = card.card_username,
                rec_remark   = string.Format("付款金额:{0}", pay.amount),
                rec_operator = pay.opt
            };
            var cardBill = new CardBill
            {
                bill_id        = GuidExtension.GetOne(),
                bill_number    = card.card_number,
                bill_idcard    = card.card_idcard,
                bill_agoall    = card.card_govmoney + card.card_mymoney,
                bill_agogov    = card.card_govmoney,
                bill_agomy     = card.card_mymoney,
                bill_changegov = govchanged,
                bill_changemy  = mychanged,
                bill_nowall    = mynew + govnew,
                bill_nowgov    = govnew,
                bill_nowmy     = mynew,
                bill_type      = operation.ToString(),
                bill_time      = optTime,
                bill_order     = pay.order,
                bill_src       = pay.src,
                bill_record    = rec_id,
                bill_remark    = pay.remark
            };
            var tran = base.Begin();

            try
            {
                //
                count = _cardInfoRep.UpdateBySqlName(SqlName_Update,
                                                     new { card_govmoney = govnew, card_mymoney = mynew, card_modifier = pay.opt, card_modifytime = optTime, card_idcard = pay.idcard },
                                                     new string[] { "card_govmoney", "card_mymoney", "card_modifier", "card_modifytime" },
                                                     tran);
                if (count < 1)
                {
                    tran.Rollback();
                    rst = OptResult.Build(ResultCode.Fail, optDesc + "——未知错误!");
                    return(rst);
                }
                //
                _cardRecordRep.Insert(cardRecord);
                //
                _cardBillRep.Insert(cardBill);

                tran.Commit();

                rst = OptResult.Build(ResultCode.Success, optDesc + "——idcard:" + pay.idcard);
            }
            catch (Exception ex)
            {
                LogHelper.LogError(optDesc, ex);
                rst = OptResult.Build(ResultCode.DbError, optDesc);
            }

            return(rst);
        }