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"); } }
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"; }
public static int BuyChapter(PayEntity payEntity) { int a = 0; using (var db = new DataContext()) { db.Pay.Add(payEntity); a = db.SaveChanges(); } return(a); }
public object CreateObject(CreatePayDto input) { var tweet = new PayEntity { PayAmount = input.PayAmount, PayTime = DateTime.Now, PayBy = "test" }; var o = PayRepository.Insert(tweet); return(o); }
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); }
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); } }
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(); } } }
/// <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); }