/// <summary> /// 插入一条记录到表PayOrderReback,如果表中存在自增字段,则返回值为新记录的自增字段值,否则返回0 /// </summary> /// <param name="db">数据库操作对象</param> /// <param name="payOrderReback">待插入的实体对象</param> public int AddPayOrderReback(PayOrderRebackEntity entity) { string sql = @"insert into PayOrderReback( [PayRebackCode],[PayOrderCode],[SysOrderCode],[SysType],[PayMethod],[ExternalCode],TotalPrice,[RebackPrice],[RebackRemark],[CreateTime],[Status])VALUES ( @PayRebackCode,@PayOrderCode,@SysOrderCode,@SysType,@PayMethod,@ExternalCode,@TotalPrice,@RebackPrice,@RebackRemark,@CreateTime,@Status); SELECT SCOPE_IDENTITY();" ; DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@PayRebackCode", DbType.String, entity.PayRebackCode); db.AddInParameter(cmd, "@PayOrderCode", DbType.String, entity.PayOrderCode); db.AddInParameter(cmd, "@SysOrderCode", DbType.String, entity.SysOrderCode); db.AddInParameter(cmd, "@SysType", DbType.Int32, entity.SysType); db.AddInParameter(cmd, "@PayMethod", DbType.Int32, entity.PayMethod); db.AddInParameter(cmd, "@ExternalCode", DbType.String, entity.ExternalCode); db.AddInParameter(cmd, "@TotalPrice", DbType.Decimal, entity.TotalPrice); db.AddInParameter(cmd, "@RebackPrice", DbType.Decimal, entity.RebackPrice); db.AddInParameter(cmd, "@RebackRemark", DbType.String, entity.RebackRemark); db.AddInParameter(cmd, "@CreateTime", DbType.DateTime, entity.CreateTime); db.AddInParameter(cmd, "@Status", DbType.Int32, entity.Status); object identity = db.ExecuteScalar(cmd); if (identity == null || identity == DBNull.Value) { return(0); } return(Convert.ToInt32(identity)); }
/// <summary> /// 判断当前节点是否已存在相同的 /// </summary> /// <param name="entity"></param> /// <returns></returns> public int ExistNum(PayOrderRebackEntity entity) { ///id=0,判断总数,ID>0判断除自己之外的总数 string sql = @"Select count(1) from dbo.[PayOrderReback] WITH(NOLOCK) "; string where = "where "; if (entity.Id == 0) { } else { } sql = sql + where; DbCommand cmd = db.GetSqlStringCommand(sql); if (entity.Id > 0) { db.AddInParameter(cmd, "@Id", DbType.Int32, entity.Id); } object identity = db.ExecuteScalar(cmd); if (identity == null || identity == DBNull.Value) { return(0); } return(Convert.ToInt32(identity)); }
/// <summary> /// 读取记录列表。 /// </summary> /// <param name="db">数据库操作对象</param> /// <param name="columns">需要返回的列,不提供任何列名时默认将返回所有列</param> public IList <PayOrderRebackEntity> GetRebackByPayCode(string paycode) { string sql = @"SELECT [Id],[PayRebackCode],[PayOrderCode],[SysOrderCode],[SysType],[PayMethod],[ExternalCode],[RebackPrice],[RebackRemark],[CreateTime],[Status] from dbo.[PayOrderReback] WITH(NOLOCK) where PayOrderCode=@PayOrderCode AND Status=1 "; IList <PayOrderRebackEntity> entityList = new List <PayOrderRebackEntity>(); DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@PayOrderCode", DbType.String, paycode); using (IDataReader reader = db.ExecuteReader(cmd)) { while (reader.Read()) { PayOrderRebackEntity entity = new PayOrderRebackEntity(); entity.Id = StringUtils.GetDbInt(reader["Id"]);; entity.PayRebackCode = StringUtils.GetDbString(reader["PayRebackCode"]);; entity.PayOrderCode = StringUtils.GetDbString(reader["PayOrderCode"]);; entity.SysOrderCode = StringUtils.GetDbString(reader["SysOrderCode"]);; entity.SysType = StringUtils.GetDbInt(reader["SysType"]);; entity.PayMethod = StringUtils.GetDbInt(reader["PayMethod"]);; entity.ExternalCode = StringUtils.GetDbString(reader["ExternalCode"]);; entity.RebackPrice = StringUtils.GetDbDecimal(reader["RebackPrice"]);; entity.RebackRemark = StringUtils.GetDbString(reader["RebackRemark"]);; entity.CreateTime = StringUtils.GetDbDateTime(reader["CreateTime"]);; entity.Status = StringUtils.GetDbInt(reader["Status"]);; entityList.Add(entity); } } return(entityList); }
/// <summary> /// 根据主键值读取记录。如果数据库不存在这条数据将返回null /// </summary> /// <param name="db">数据库操作对象</param> /// <param name="columns">需要返回的列,不提供任何列名时默认将返回所有列</param> public PayOrderRebackEntity GetPayOrderReback(int id) { string sql = @"SELECT [Id],[PayRebackCode],[PayOrderCode],[SysOrderCode],[SysType],[PayMethod],[ExternalCode],[RebackPrice],[RebackRemark],[CreateTime],[Status] FROM dbo.[PayOrderReback] WITH(NOLOCK) WHERE [Id]=@id" ; DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@Id", DbType.Int32, id); PayOrderRebackEntity entity = new PayOrderRebackEntity(); using (IDataReader reader = db.ExecuteReader(cmd)) { if (reader.Read()) { entity.Id = StringUtils.GetDbInt(reader["Id"]);; entity.PayRebackCode = StringUtils.GetDbString(reader["PayRebackCode"]);; entity.PayOrderCode = StringUtils.GetDbString(reader["PayOrderCode"]);; entity.SysOrderCode = StringUtils.GetDbString(reader["SysOrderCode"]);; entity.SysType = StringUtils.GetDbInt(reader["SysType"]);; entity.PayMethod = StringUtils.GetDbInt(reader["PayMethod"]);; entity.ExternalCode = StringUtils.GetDbString(reader["ExternalCode"]);; entity.RebackPrice = StringUtils.GetDbDecimal(reader["RebackPrice"]);; entity.RebackRemark = StringUtils.GetDbString(reader["RebackRemark"]);; entity.CreateTime = StringUtils.GetDbDateTime(reader["CreateTime"]);; entity.Status = StringUtils.GetDbInt(reader["Status"]);; } } return(entity); }
/// <summary> /// 插入一条记录到表PayOrderReback,如果表中存在自增字段,则返回值为新记录的自增字段值,否则返回0。 /// 该方法提供给界面等UI层调用 /// </summary> /// <param name="payOrderReback">要添加的PayOrderReback数据实体对象</param> public PayOrderRebackEntity AddPayOrderReback(PayOrderRebackEntity payOrderReback) { Random rd = new Random(); payOrderReback.PayRebackCode = XTCodeBLL.Instance.GetCodeFromProc(XTCodeType.PayRebackDayNo) + rd.Next(100, 999).ToString(); payOrderReback.CreateTime = DateTime.Now; payOrderReback.Id = PayOrderRebackDA.Instance.AddPayOrderReback(payOrderReback); return(payOrderReback); }
/// <summary> /// 读取记录列表。 /// </summary> /// <param name="db">数据库操作对象</param> /// <param name="columns">需要返回的列,不提供任何列名时默认将返回所有列</param> public IList <PayOrderRebackEntity> GetPayOrderRebackList(int pagesize, int pageindex, ref int recordCount) { string sql = @"SELECT [Id],[PayRebackCode],[PayOrderCode],[SysOrderCode],[SysType],[PayMethod],[ExternalCode],[RebackPrice],[RebackRemark],[CreateTime],[Status] FROM (SELECT ROW_NUMBER() OVER (ORDER BY Id desc) AS ROWNUMBER, [Id],[PayRebackCode],[PayOrderCode],[SysOrderCode],[SysType],[PayMethod],[ExternalCode],[RebackPrice],[RebackRemark],[CreateTime],[Status] from dbo.[PayOrderReback] WITH(NOLOCK) WHERE 1=1 ) as temp where rownumber BETWEEN ((@PageIndex - 1) * @PageSize + 1) AND @PageIndex * @PageSize" ; string sql2 = @"Select count(1) from dbo.[PayOrderReback] with (nolock) "; IList <PayOrderRebackEntity> entityList = new List <PayOrderRebackEntity>(); DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@PageIndex", DbType.Int32, pageindex); db.AddInParameter(cmd, "@PageSize", DbType.Int32, pagesize); using (IDataReader reader = db.ExecuteReader(cmd)) { while (reader.Read()) { PayOrderRebackEntity entity = new PayOrderRebackEntity(); entity.Id = StringUtils.GetDbInt(reader["Id"]);; entity.PayRebackCode = StringUtils.GetDbString(reader["PayRebackCode"]);; entity.PayOrderCode = StringUtils.GetDbString(reader["PayOrderCode"]);; entity.SysOrderCode = StringUtils.GetDbString(reader["SysOrderCode"]);; entity.SysType = StringUtils.GetDbInt(reader["SysType"]);; entity.PayMethod = StringUtils.GetDbInt(reader["PayMethod"]);; entity.ExternalCode = StringUtils.GetDbString(reader["ExternalCode"]);; entity.RebackPrice = StringUtils.GetDbDecimal(reader["RebackPrice"]);; entity.RebackRemark = StringUtils.GetDbString(reader["RebackRemark"]);; entity.CreateTime = StringUtils.GetDbDateTime(reader["CreateTime"]);; entity.Status = StringUtils.GetDbInt(reader["Status"]);; entityList.Add(entity); } } cmd = db.GetSqlStringCommand(sql2); using (IDataReader reader = db.ExecuteReader(cmd)) { if (reader.Read()) { recordCount = StringUtils.GetDbInt(reader[0]); } else { recordCount = 0; } } return(entityList); }
public override void ReturnRequest(PayOrderRebackEntity rebackEntity) { this.out_trade_no = rebackEntity.PayOrderCode.ToString(); this.subject = "易店心订单号:" + rebackEntity.SysOrderCode.ToString(); this.price = rebackEntity.RebackPrice.ToString(); this.batch_no = rebackEntity.PayRebackCode; this.batch_num = 1; this.refuncd_data = "";// rebackEntity.Refund_Data; SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("service", alipaymobileConfig.refundservice); sParaTemp.Add("partner", alipaymobileConfig.partner); sParaTemp.Add("_input_charset", alipaymobileConfig.input_charset.ToLower()); sParaTemp.Add("notify_url", alipaymobileConfig.rebacknotify_url); sParaTemp.Add("seller_user_id", alipaymobileConfig.seller_id); sParaTemp.Add("refund_date", alipaymobileConfig.refund_date); sParaTemp.Add("batch_no", batch_no); sParaTemp.Add("batch_num", batch_num.ToString()); sParaTemp.Add("detail_data", refuncd_data); ////待请求参数数组 //Dictionary<string, string> dicPara = new Dictionary<string, string>(); //dicPara = BuildRequestPara(sParaTemp); Dictionary <string, string> sPara = new Dictionary <string, string>(); //签名结果 string mysign = ""; //过滤签名参数数组 sPara = alipayCore.FilterPara(sParaTemp); //获得签名结果 mysign = BuildRequestMysign(sPara); sPara.Add("sign", mysign); sPara.Add("sign_type", sign_type); StringBuilder builder = new StringBuilder(); foreach (KeyValuePair <string, string> temp in sPara) { builder.Append(this.CreateField(temp.Key, temp.Value)); } this.SubmitPaymentForm(this.CreateForm(builder.ToString(), this.gateway + "_input_charset=" + alipaymobileConfig.input_charset.ToLower())); }
public string PayRebackSubmit() { ResultObj _obj = new ResultObj(); string paycode = FormString.SafeQ("paycode"); string rebackremark = FormString.SafeQ("rebackremark"); decimal rebackprice = FormString.DecimalSafeQ("rebackprice"); VWPayOrderEntity order = PayOrderBLL.Instance.GetVWPayOrderByPayCode(paycode); IList <PayOrderRebackEntity> rebacklist = PayOrderRebackBLL.Instance.GetRebackByPayCode(paycode); decimal hasreback = 0; if (rebacklist != null && rebacklist.Count > 0) { foreach (PayOrderRebackEntity reback in rebacklist) { hasreback += reback.RebackPrice; } } if (order.PayPrice - hasreback >= rebackprice)//金额满足退款条件(退款金额<=付款金额) { PayOrderRebackEntity reback = new PayOrderRebackEntity(); reback.ExternalCode = order.ExternalCode; reback.PayMethod = order.PayMethod; reback.PayOrderCode = order.PayOrderCode; reback.TotalPrice = order.PayPrice; reback.RebackPrice = rebackprice; reback.RebackRemark = rebackremark; reback.Status = 0; reback.SysOrderCode = order.SysOrderCode; reback.SysType = order.SysType; PayOrderRebackEntity rebackadd = PayOrderRebackBLL.Instance.AddPayOrderReback(reback); if (reback.PayMethod == (int)PayType.WeChat) { string result = Refund.Run(reback); _obj.Status = (int)CommonStatus.Success; } else if (reback.PayMethod == (int)PayType.AliPay || reback.PayMethod == (int)PayType.AliPayMobile) { _obj.Status = (int)CommonStatus.Success; } } return(JsonJC.ObjectToJson(_obj)); }
/// <summary> /// 根据主键值更新记录的全部字段(注意:该方法不会对自增字段、timestamp类型字段以及主键字段更新!如果要更新主键字段,请使用Update方法)。 /// 如果数据库有数据被更新了则返回True,否则返回False /// </summary> /// <param name="db">数据库操作对象</param> /// <param name="payOrderReback">待更新的实体对象</param> public int UpdatePayOrderReback(PayOrderRebackEntity entity) { string sql = @" UPDATE dbo.[PayOrderReback] SET [PayRebackCode]=@PayRebackCode,[PayOrderCode]=@PayOrderCode,[SysOrderCode]=@SysOrderCode,[SysType]=@SysType,[PayMethod]=@PayMethod,[ExternalCode]=@ExternalCode,[RebackPrice]=@RebackPrice,[RebackRemark]=@RebackRemark,[CreateTime]=@CreateTime,[Status]=@Status WHERE [Id]=@id"; DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@Id", DbType.Int32, entity.Id); db.AddInParameter(cmd, "@PayRebackCode", DbType.String, entity.PayRebackCode); db.AddInParameter(cmd, "@PayOrderCode", DbType.String, entity.PayOrderCode); db.AddInParameter(cmd, "@SysOrderCode", DbType.String, entity.SysOrderCode); db.AddInParameter(cmd, "@SysType", DbType.Int32, entity.SysType); db.AddInParameter(cmd, "@PayMethod", DbType.Int32, entity.PayMethod); db.AddInParameter(cmd, "@ExternalCode", DbType.String, entity.ExternalCode); db.AddInParameter(cmd, "@RebackPrice", DbType.Decimal, entity.RebackPrice); db.AddInParameter(cmd, "@RebackRemark", DbType.String, entity.RebackRemark); db.AddInParameter(cmd, "@CreateTime", DbType.DateTime, entity.CreateTime); db.AddInParameter(cmd, "@Status", DbType.Int32, entity.Status); return(db.ExecuteNonQuery(cmd)); }
/*** * 申请退款完整业务流程逻辑 * @param transaction_id 微信订单号(优先使用) * @param out_trade_no 商户订单号 * @param total_fee 订单总金额 * @param refund_fee 退款金额 * @return 退款结果(xml格式) */ public static string Run(PayOrderRebackEntity reback) { WxLog.Info("Refund", "Refund is processing..."); WxPayData data = new WxPayData(); if (!string.IsNullOrEmpty(reback.ExternalCode))//微信订单号存在的条件下,则已微信订单号为准 { data.SetValue("transaction_id", reback.ExternalCode); } else//微信订单号不存在,才根据商户订单号去退款 { data.SetValue("out_trade_no", reback.PayOrderCode); } data.SetValue("total_fee", int.Parse((reback.TotalPrice * 100).ToString())); //订单总金额 data.SetValue("refund_fee", int.Parse((reback.RebackPrice * 100).ToString())); //退款金额 data.SetValue("out_refund_no", reback.PayRebackCode); //随机生成商户退款单号 data.SetValue("op_user_id", WxPayConfig.MCHID); //操作员,默认为商户号 WxPayData result = WxPayApi.Refund(data); //提交退款申请给API,接收返回数据 WxLog.Info("Refund", "Refund process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }
public abstract void ReturnRequest(PayOrderRebackEntity rebackEntity);
/// <summary> /// 更新一条PayOrderReback记录。 /// 该方法提供给界面等UI层调用 /// </summary> /// <param name="payOrderReback">待更新的实体对象</param> /// <param name="columns">要更新的列名,不提供任何列名时默认将更新主键之外的所有列</param> public int UpdatePayOrderReback(PayOrderRebackEntity payOrderReback) { return(PayOrderRebackDA.Instance.UpdatePayOrderReback(payOrderReback)); }
/// <summary> /// 判断对象是否存在 /// </summary> /// <param name="dicEnum"></param> /// <returns></returns> public bool IsExist(PayOrderRebackEntity payOrderReback) { return(PayOrderRebackDA.Instance.ExistNum(payOrderReback) > 0); }