/// <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);
        }
Example #5
0
        /// <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);
        }
Example #7
0
        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));
        }
Example #10
0
        /***
         * 申请退款完整业务流程逻辑
         * @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());
        }
Example #11
0
 public abstract void ReturnRequest(PayOrderRebackEntity rebackEntity);
Example #12
0
 /// <summary>
 /// 更新一条PayOrderReback记录。
 /// 该方法提供给界面等UI层调用
 /// </summary>
 /// <param name="payOrderReback">待更新的实体对象</param>
 /// <param name="columns">要更新的列名,不提供任何列名时默认将更新主键之外的所有列</param>
 public int UpdatePayOrderReback(PayOrderRebackEntity payOrderReback)
 {
     return(PayOrderRebackDA.Instance.UpdatePayOrderReback(payOrderReback));
 }
Example #13
0
 /// <summary>
 /// 判断对象是否存在
 /// </summary>
 /// <param name="dicEnum"></param>
 /// <returns></returns>
 public bool IsExist(PayOrderRebackEntity payOrderReback)
 {
     return(PayOrderRebackDA.Instance.ExistNum(payOrderReback) > 0);
 }