Esempio n. 1
0
        /// <summary>
        /// 记录支付宝返回信息到数据库
        /// </summary>
        /// <param name="info"></param>
        /// <param name="jysj"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private int LogAlipayRetInfo(AlipayReplyInfo info, DateTime jysj, out string msg)
        {
            OracleConnection connection = new OracleConnection(WebConfigParameter.ConnectionHisString);
            OracleDataReader dr         = null;

            int ret = -1;

            msg = "";

            long count = 0;

            try
            {
                string sql = _builder.AlipayShtzCountSql(info.tradeno);
                dr = DbHelperOra.ExecuteReader(sql, connection);

                if (dr.Read())
                {
                    count = !dr.IsDBNull(0) ? dr.GetInt64(0) : 0;
                }

                if (count > 0)
                {
                    msg = "已经交易记录,无需插入";
                    ret = 38;
                    return(ret);
                }

                //记录支付宝返回记录
                ret = WriteAlipayRetInfoToDB(info, jysj, out msg);
                if (ret != 0)
                {
                    msg += "记录日志失败";
                    ret  = 39;
                }

                return(ret);
            }
            catch (Exception ex)
            {
                msg = GetExceptionInfo(ex);
                return(-1);
            }
            finally
            {
                if (null != dr)
                {
                    dr.Close();
                }

                if (null != connection && connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 支付宝返回信息写入到数据库
        /// </summary>
        /// <param name="info"></param>
        /// <param name="jysj"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private int WriteAlipayRetInfoToDB(AlipayReplyInfo info, DateTime jysj, out string msg)
        {
            int ret = -1;

            OracleConnection conn1 = new OracleConnection(WebConfigParameter.ConnectionHisString);

            if (conn1.State != ConnectionState.Open)
            {
                conn1.Open();
            }
            OracleTransaction tx1 = conn1.BeginTransaction();

            try
            {
                string ylcode = "", ylmc = "支付宝服务窗";

                string insertSql = _builder.InsertAlipaySHTZSql(info, jysj);

                string updateStatus = _builder.UpdateAlipayDDStatusSql(info, ylcode, ylmc);

                ArrayList listSql = new ArrayList();
                int       exeSql;
                listSql.Add(insertSql);
                listSql.Add(updateStatus);

                exeSql = -1;

                DbHelperOra.ExecuteSqlTran(conn1, tx1, listSql, out exeSql, out msg);

                if (exeSql != 0)
                {
                    tx1.Rollback();
                    return(exeSql);
                }

                tx1.Commit();
                return(0);
            }
            catch (Exception ex)
            {
                msg = GetExceptionInfo(ex);
                ret = -1;
                return(ret);
            }
            finally
            {
                if (null != conn1 && ConnectionState.Open == conn1.State)
                {
                    conn1.Close();
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 订单表中是否存在订单
        /// </summary>
        /// <param name="info"></param>
        /// <param name="brid"></param>
        /// <param name="brlx"></param>
        /// <param name="czje"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private int ExistAlipayOrder(AlipayReplyInfo info, out string brid, out string brlx, out double czje, out string msg)
        {
            OracleConnection connection = new OracleConnection(WebConfigParameter.ConnectionHisString);
            OracleDataReader dr         = null;
            int ret = -1;

            msg  = "";
            brid = "";
            brlx = "";
            czje = 0;

            try
            {
                string findId = _builder.QueryOrderInfoSql(info.tradeno);
                dr = DbHelperOra.ExecuteReader(findId, connection);
                if (dr.Read())
                {
                    brid = !dr.IsDBNull(0) ? Convert.ToString(dr.GetInt64(0)) : "";
                    czje = !dr.IsDBNull(1) ? dr.GetDouble(1) : 0;
                    brlx = !dr.IsDBNull(2) ? Convert.ToString(dr.GetInt32(2)) : "";
                    ret  = 0;
                }
                else
                {
                    msg = "没有该订单,数据非法";
                    ret = 40;
                }

                return(ret);
            }
            catch (Exception ex)
            {
                msg = GetExceptionInfo(ex);
                ret = -1;
                return(ret);
            }
            finally
            {
                if (null != dr)
                {
                    dr.Close();
                }
                if (null != connection && ConnectionState.Open == connection.State)
                {
                    connection.Close();
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 充值金额是否正常
        /// </summary>
        /// <param name="info"></param>
        /// <param name="czje"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private int AlipayValidAmount(AlipayReplyInfo info, double czje, out string msg)
        {
            int ret = -1;

            msg = "";

            if (czje <= 0 || czje > 10000 || (Convert.ToDouble(info.money) != czje))
            {
                msg = "充值金额异常";
                ret = 41;
            }
            else
            {
                ret = 0;
            }

            return(ret);
        }
Esempio n. 5
0
        /// <summary>
        /// 商户通知预存成功
        /// </summary>
        /// <param name="openid">用户标识</param>
        /// <param name="patientname">病人姓名</param>
        /// <param name="patientid">病人ID</param>
        /// <param name="tradeno">订单号</param>
        /// <param name="paymenttradeno">支付平台订单号</param>
        /// <param name="money">金额</param>
        /// <param name="paymentparameters">通知参数</param>
        /// <returns></returns>
        public XmlDocument PredepositSuccess(AlipayReplyInfo info, string brlx)
        {
            XmlDocument doc = new XmlDocument();

            try
            {
                //以下实现数据操作逻辑
                AilpayPaymentDB pdb = new AilpayPaymentDB();
                string          error_msg;
                int             ret = pdb.DB_InsertAlipay(info, brlx, out error_msg);
                if (ret == 0)
                {
                    XmlElement root = doc.CreateElement(AppUtils.Tag_REXML_Root);
                    doc.AppendChild(root);

                    XmlElement eleResult = doc.CreateElement(AppUtils.Tag_REXML_Result);
                    eleResult.InnerText = AppUtils.Value_Return_Success;
                    root.AppendChild(eleResult);

                    XmlElement eleMsg = doc.CreateElement(AppUtils.Tag_REXML_Message);
                    root.AppendChild(eleMsg);

                    XmlElement eleValue = doc.CreateElement(AppUtils.Tag_REXML_Value);
                    eleMsg.AppendChild(eleValue);

                    XmlElement eleYylsh = doc.CreateElement(AppUtils.Tag_User_Tradeno);
                    eleValue.AppendChild(eleYylsh);
                    eleYylsh.InnerText = StringHelper.YylshHasPrefix(info.tradeno);
                }
                else
                {
                    doc = ErrorReturnXml(ret, error_msg);
                }
            }
            catch (Exception ex)
            {
                doc = ReplyXmlDoc.GetExceptionXML(AppUtils.Default_Exception_Code, ex);
            }
            return(doc);
        }
Esempio n. 6
0
        /// <summary>
        /// 商户通知
        /// </summary>
        /// <param name="info">通知信息</param>
        /// <param name="brlx">病人类型</param>
        /// <returns>0:成功  大于0:出错  小于0:异常</returns>
        public int DB_InsertAlipay(AlipayReplyInfo info, string brlx, out string msg)
        {
            UtilLog.GetInstance().WriteOrderLog("Order: ", info.AlipayInfoToString());

            msg = "";

            DateTime jysj;

            if (DB_Sysdate(out jysj) == false)
            {
                msg = "读取系统时间出错";
                return(24);
            }

            int ret = -1;

            try
            {
                //记录支付宝返回信息到数据库
                ret = LogAlipayRetInfo(info, jysj, out msg);
                if (ret != 0)
                {
                    return(ret);
                }

                if (string.IsNullOrEmpty(info.paymenttradeno) || string.IsNullOrEmpty(info.paymentparameters))
                {
                    msg = "银联返回充值不成功";
                    return(25);
                }

                //判断订单是否存在
                double czje = 0;
                string brid = null, brlx2 = null;
                ret = ExistAlipayOrder(info, out brid, out brlx2, out czje, out msg);
                if (ret != 0)
                {
                    return(ret);
                }

                if (brlx != brlx2)
                {
                    msg = "订单病人类型异常";
                    return(26);
                }

                //充值金额是否正常
                ret = AlipayValidAmount(info, czje, out msg);
                if (ret != 0)
                {
                    return(ret);
                }

                //更新HIS
                ret = DB_InsertAlipayForHis(info, brid, brlx, czje, jysj, out msg);
                return(ret);
            }
            catch (Exception ex)
            {
                UtilLog.GetInstance().WriteProgramLog(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);

                msg = GetExceptionInfo(ex);
                return(-1);
            }
        }
Esempio n. 7
0
        private int DB_InsertAlipayForHis(AlipayReplyInfo info, string brid, string brlx, double czje, DateTime jysj, out string msg)
        {
            int ret = -1;

            msg = "";

            OracleConnection conn = new OracleConnection(WebConfigParameter.ConnectionHisString);

            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
            OracleTransaction tx = conn.BeginTransaction();

            try
            {
                //更新HIS表记录
                if (WebConfigParameter.HospitalName() == AppUtils.HOSPITALNAME.WZSDQRMYY)
                {
                    int otherResult = -99;

                    if (!string.IsNullOrEmpty(info.paymenttradeno) && !string.IsNullOrEmpty(info.paymentparameters))
                    {
                        otherResult = DB_AlipayUpdateHisCharge(conn, tx, info.paymenttradeno, czje, brid, brlx, jysj, out msg);
                        if (otherResult != 0)
                        {
                            tx.Rollback();
                            msg = "HIS更新数据不成功。";
                            return(36);
                        }

                        msg = "充值成功。";
                        ret = 00;
                    }
                    else
                    {
                        msg = "银联返回失败";
                        ret = 37;
                    }
                }

                tx.Commit();
                ret = 0;

                return(ret);
            }
            catch (Exception ex)
            {
                tx.Rollback();

                UtilLog.GetInstance().WriteProgramLog(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);

                msg = GetExceptionInfo(ex);
                ret = -1;
                return(ret);
            }
            finally
            {
                if (null != conn && conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
        }