コード例 #1
0
 public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ)
 {
     System.Collections.Generic.List <System.Data.Common.DbParameter> list = new System.Collections.Generic.List <System.Data.Common.DbParameter>();
     list.Add(base.Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID));
     list.Add(base.Database.MakeInParam("strVersion", returnKQ.Version));
     list.Add(base.Database.MakeInParam("dwLanguage", returnKQ.Language));
     list.Add(base.Database.MakeInParam("dwSignType", returnKQ.SignType));
     list.Add(base.Database.MakeInParam("strPayType", returnKQ.PayType));
     list.Add(base.Database.MakeInParam("strBankID", returnKQ.BankID));
     list.Add(base.Database.MakeInParam("strOrderID", returnKQ.OrderID));
     list.Add(base.Database.MakeInParam("dtOrderTime", returnKQ.OrderTime));
     list.Add(base.Database.MakeInParam("fOrderAmount", returnKQ.OrderAmount));
     list.Add(base.Database.MakeInParam("strDealID", returnKQ.DealID));
     list.Add(base.Database.MakeInParam("strBankDealID", returnKQ.BankDealID));
     list.Add(base.Database.MakeInParam("dtDealTime", returnKQ.DealTime));
     list.Add(base.Database.MakeInParam("fPayAmount", returnKQ.PayAmount));
     list.Add(base.Database.MakeInParam("fFee", returnKQ.Fee));
     list.Add(base.Database.MakeInParam("strPayResult", returnKQ.PayResult));
     list.Add(base.Database.MakeInParam("strErrCode", returnKQ.ErrCode));
     list.Add(base.Database.MakeInParam("strSignMsg", returnKQ.SignMsg));
     list.Add(base.Database.MakeInParam("strExt1", returnKQ.Ext1));
     list.Add(base.Database.MakeInParam("strExt2", returnKQ.Ext2));
     list.Add(base.Database.MakeInParam("CardNumber", returnKQ.CardNumber));
     list.Add(base.Database.MakeInParam("CardPwd", returnKQ.CardPwd));
     list.Add(base.Database.MakeInParam("BossType", returnKQ.BossType));
     list.Add(base.Database.MakeInParam("ReceiveBossType", returnKQ.ReceiveBossType));
     list.Add(base.Database.MakeInParam("ReceiverAcctId", returnKQ.ReceiverAcctId));
     base.Database.RunProc("NET_PW_AddReturnKQInfo", list);
 }
コード例 #2
0
        /// <summary>
        /// 写快钱返回记录
        /// </summary>
        /// <param name="returnKQ"></param>
        public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ)
        {
            var parms = new List <DbParameter>();

            parms.Add(Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID));
            parms.Add(Database.MakeInParam("strVersion", returnKQ.Version));
            parms.Add(Database.MakeInParam("dwLanguage", returnKQ.Language));
            parms.Add(Database.MakeInParam("dwSignType", returnKQ.SignType));
            parms.Add(Database.MakeInParam("strPayType", returnKQ.PayType));
            parms.Add(Database.MakeInParam("strBankID", returnKQ.BankID));
            parms.Add(Database.MakeInParam("strOrderID", returnKQ.OrderID));
            parms.Add(Database.MakeInParam("dtOrderTime", returnKQ.OrderTime));
            parms.Add(Database.MakeInParam("fOrderAmount", returnKQ.OrderAmount));
            parms.Add(Database.MakeInParam("strDealID", returnKQ.DealID));
            parms.Add(Database.MakeInParam("strBankDealID", returnKQ.BankDealID));
            parms.Add(Database.MakeInParam("dtDealTime", returnKQ.DealTime));
            parms.Add(Database.MakeInParam("fPayAmount", returnKQ.PayAmount));
            parms.Add(Database.MakeInParam("fFee", returnKQ.Fee));
            parms.Add(Database.MakeInParam("strPayResult", returnKQ.PayResult));
            parms.Add(Database.MakeInParam("strErrCode", returnKQ.ErrCode));
            parms.Add(Database.MakeInParam("strSignMsg", returnKQ.SignMsg));
            parms.Add(Database.MakeInParam("strExt1", returnKQ.Ext1));
            parms.Add(Database.MakeInParam("strExt2", returnKQ.Ext2));

            parms.Add(Database.MakeInParam("CardNumber", returnKQ.CardNumber));
            parms.Add(Database.MakeInParam("CardPwd", returnKQ.CardPwd));
            parms.Add(Database.MakeInParam("BossType", returnKQ.BossType));
            parms.Add(Database.MakeInParam("ReceiveBossType", returnKQ.ReceiveBossType));
            parms.Add(Database.MakeInParam("ReceiverAcctId", returnKQ.ReceiverAcctId));

            Database.RunProc("NET_PW_AddReturnKQInfo", parms);
        }
コード例 #3
0
        /// <summary>
        /// 获取快钱返回记录实体
        /// </summary>
        /// <param name="detailID"></param>
        /// <returns></returns>
        public ReturnKQDetailInfo GetKQDetailInfo(int detailID)
        {
            string             sqlQuery   = string.Format("(NOLOCK) WHERE DetailID= {0}", detailID);
            ReturnKQDetailInfo detailInfo = aideKQDetailProvider.GetObject <ReturnKQDetailInfo>(sqlQuery);

            return(detailInfo);
        }
コード例 #4
0
ファイル: TreasureDataProvider.cs プロジェクト: bylu/baiyiWeb
        /// <summary>
        /// 写快钱返回记录
        /// </summary>
        /// <param name="returnKQ"></param>
        public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ)
        {
            var parms = new List <DbParameter>();

            parms.Add(Database.MakeInParam("strMerchantAcctID", returnKQ.MerchantAcctID));
            parms.Add(Database.MakeInParam("strVersion", returnKQ.Version));
            parms.Add(Database.MakeInParam("dwLanguage", returnKQ.Language));
            parms.Add(Database.MakeInParam("dwSignType", returnKQ.SignType));
            parms.Add(Database.MakeInParam("strPayType", returnKQ.PayType));
            parms.Add(Database.MakeInParam("strBankID", returnKQ.BankID));
            parms.Add(Database.MakeInParam("strOrderID", returnKQ.OrderID));
            parms.Add(Database.MakeInParam("dtOrderTime", returnKQ.OrderTime));
            parms.Add(Database.MakeInParam("dcOrderAmount", returnKQ.OrderAmount));
            parms.Add(Database.MakeInParam("strDealID", returnKQ.DealID));
            parms.Add(Database.MakeInParam("strBankDealID", returnKQ.BankDealID));
            parms.Add(Database.MakeInParam("dtDealTime", returnKQ.DealTime));
            parms.Add(Database.MakeInParam("dcPayAmount", returnKQ.PayAmount));
            parms.Add(Database.MakeInParam("dcFee", returnKQ.Fee));
            parms.Add(Database.MakeInParam("strPayResult", returnKQ.PayResult));
            parms.Add(Database.MakeInParam("strErrCode", returnKQ.ErrCode));
            parms.Add(Database.MakeInParam("strSignMsg", returnKQ.SignMsg));
            parms.Add(Database.MakeInParam("strExt1", returnKQ.Ext1));
            parms.Add(Database.MakeInParam("strExt2", returnKQ.Ext2));

            Database.RunProc("WEB_WriteReturnKQDetail", parms);
        }
コード例 #5
0
        private void KQDetailDataBind()
        {
            if (id <= 0)
            {
                return;
            }

            //获取站点信息
            ReturnKQDetailInfo kQDetailInfo = FacadeManage.aideTreasureFacade.GetKQDetailInfo(id);

            if (kQDetailInfo == null)
            {
                ShowError("信息不存在");
                return;
            }

            CtrlHelper.SetText(litOrderID, "<a class='l' href='javascript:void(0)' onclick=\"javascript:openWindowOwn('OnLineOrderInfo.aspx?OrderID=" + kQDetailInfo.OrderID + "','online_" + kQDetailInfo.OrderID + "',600,465)\">" + kQDetailInfo.OrderID + "</a>");
            CtrlHelper.SetText(litOrderTime, kQDetailInfo.OrderTime.ToString("yyyy-MM-dd HH:ss:mm"));
            CtrlHelper.SetText(litOrderAmount, kQDetailInfo.OrderAmount.ToString("N"));
            CtrlHelper.SetText(litPayAmount, kQDetailInfo.PayAmount.ToString("N"));
            CtrlHelper.SetText(litFee, kQDetailInfo.Fee.ToString("f3"));
            CtrlHelper.SetText(litRevenue, (kQDetailInfo.PayAmount - kQDetailInfo.Fee).ToString("f3"));
            if (kQDetailInfo.PayResult == "10")
            {
                CtrlHelper.SetText(litPayResult, "<span class='lan'>成功</span>");
            }
            else
            {
                CtrlHelper.SetText(litPayResult, "<span class='hong'>失败</span>");
            }
            CtrlHelper.SetText(litDealID, kQDetailInfo.DealID);
            CtrlHelper.SetText(litDealTime, kQDetailInfo.DealTime.ToString("yyyy-MM-dd HH:mm:ss"));
            CtrlHelper.SetText(litBankDealID, kQDetailInfo.BankDealID);
            CtrlHelper.SetText(litPayType, billPayType.GetBillPayType(kQDetailInfo.PayType.Trim()));
            CtrlHelper.SetText(litBankID, billBanks.GetBillBanksByCode(kQDetailInfo.BankID.Trim()));
            CtrlHelper.SetText(litErrCode, kQDetailInfo.ErrCode);
            CtrlHelper.SetText(litVersion, kQDetailInfo.Version);
            CtrlHelper.SetText(litLanguage, "中文");
            CtrlHelper.SetText(litExt1, kQDetailInfo.Ext1 + "&nbsp;&nbsp;" + IPQuery.GetAddressWithIP(kQDetailInfo.Ext1));
            CtrlHelper.SetText(litExt2, kQDetailInfo.Ext2);
            CtrlHelper.SetText(litSignType, "与提交订单时的签名类型保持一致");
            CtrlHelper.SetText(litSignMsg, kQDetailInfo.SignMsg);
        }
コード例 #6
0
ファイル: TreasureFacade.cs プロジェクト: archangelwin/QY
 /// <summary>
 /// 写快钱返回记录
 /// </summary>
 /// <param name="returnKQ"></param>
 public void WriteReturnKQDetail(ReturnKQDetailInfo returnKQ)
 {
     treasureData.WriteReturnKQDetail(returnKQ);
 }
コード例 #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //初始化结果及地址
            ReturnKQDetailInfo result = new ReturnKQDetailInfo();

            string showUrl = "http://" + HttpContext.Current.Request.Url.Authority + "/Pay/PayShow.aspx";

            //获取网关账户号
            string merchantAcctId = Request["merchantAcctId"].ToString().Trim();

            result.MerchantAcctID = merchantAcctId;

            //设置网关密钥
            ///区分大小写
            string bossType1 = Request["bossType"].ToString().Trim();//根据获取的支付卡类型判断加载相应的密钥
            string key       = bossType1 == "0" ? ApplicationSettings.Get("keyValueYD") : bossType1 == "1" ? ApplicationSettings.Get("keyValueLT") : ApplicationSettings.Get("keyValueDX");

            //获取网关版本.固定值
            ///本代码版本号固定为v2.0
            string version = Request["version"].ToString().Trim();

            result.Version = version.Trim();

            //获取语言种类.固定选择值。
            ///只能选择1、2
            ///1代表中文;2代表英文
            string language = Request["language"].ToString().Trim();

            result.Language = Convert.ToInt32(language.Trim());

            //获取支付方式
            ///可选择00、41、42、52
            ///00 代表快钱默认支付方式,目前为神州行卡密支付和快钱账户支付;41 代表快钱账户支付;42 代表神州行卡密支付和快钱账户支付;52 代表神州行卡密支付
            string payType = Request["payType"].ToString().Trim();

            result.PayType = payType.Trim();

            //神州行卡序号
            ///如果通过神州行卡直接支付时返回
            string cardNumber = Request["cardNumber"].ToString().Trim();

            result.CardNumber = cardNumber;

            //获取神州行卡密码
            ///如果通过神州行卡直接支付时返回
            string cardPwd = Request["cardPwd"].ToString().Trim();

            result.CardPwd = cardPwd;

            //获取商户订单号
            string orderId = Request["orderId"].ToString().Trim();

            result.OrderID = orderId.Trim();

            //获取原始订单金额
            ///订单提交到快钱时的金额,单位为分。
            ///比方2 ,代表0.02元
            string orderAmount = Request["orderAmount"].ToString().Trim();

            result.OrderAmount = Convert.ToDecimal(orderAmount.Trim()) / 100;

            //获取快钱交易号
            ///获取该交易在快钱的交易号
            string dealId = Request["dealId"].ToString().Trim();

            result.DealID = dealId.Trim();

            //获取商户提交订单时的时间
            ///14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]
            ///如:20080101010101
            string orderTime = Request["orderTime"].ToString().Trim();

            //获取扩展字段1
            ///与商户提交订单时的扩展字段1保持一致
            string ext1 = Request["ext1"].ToString().Trim();

            result.Ext1 = ext1.Trim();

            //获取扩展字段2
            ///与商户提交订单时的扩展字段2保持一致
            string ext2 = Request["ext2"].ToString().Trim();

            result.Ext2 = ext2.Trim();

            //获取实际支付金额
            ///单位为分
            ///比方 2 ,代表0.02元
            string payAmount = Request["payAmount"].ToString().Trim();

            result.PayAmount = Convert.ToDecimal(payAmount.Trim()) / 100;

            //获取快钱处理时间
            string billOrderTime = Request["billOrderTime"].ToString().Trim();

            //获取处理结果
            ///10代表支付成功; 11代表支付失败
            string payResult = Request["payResult"].ToString().Trim();

            result.PayResult = payResult.Trim();

            //获取签名类型
            ///1代表MD5签名
            ///当前版本固定为1
            string signType = Request["signType"].ToString().Trim();

            result.SignType = Convert.ToInt32(signType.Trim());

            //充值卡类型
            ////与提交订单时的充值卡类型保持一致
            string bossType = Request["bossType"].ToString().Trim();

            result.BossType = bossType;

            //支付卡类型
            ////固定选择值:0、1、3、4、9,用户实际支付的卡类型
            ////0 代表神州行充值卡
            ////1 代表联通充值卡
            ////3 代表电信充值卡
            ////4 代表骏网一卡通
            ////9 代表已开通任一卡类型
            ////比喻商户提交bossType类型为9,用户实际支付卡类型为0,则receiveBossType返回为0
            string receiveBossType = Request["receiveBossType"].ToString().Trim();

            result.ReceiveBossType = receiveBossType;

            //实际收款账号
            ////用户实际支付的卡类型对应收款帐号必须对应receiveBossType卡类型收款帐号
            ////比如提交的merchantAcctId=1000300079902,bossType=9,是全部支付方式都有,但实际支付时选择的是联通充值卡支付
            ////那返回的receiveBossType=1,返回的bossType,返回的merchantAcctId=1000300079902,返回的receiverAcctId=1000300079909
            string receiverAcctId = Request["receiverAcctId"].ToString().Trim();

            result.ReceiverAcctId = receiverAcctId;

            //获取加密签名串
            string signMsg = Request["signMsg"].ToString().Trim();

            result.SignMsg = signMsg.Trim();


            //生成加密串。必须保持如下顺序。
            string merchantSignMsgVal = "";

            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "version", version);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "language", language);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payType", payType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardNumber", cardNumber);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardPwd", cardPwd);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderAmount", orderAmount);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderTime", orderTime);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", ext1);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", ext2);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "billOrderTime", billOrderTime);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "signType", signType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bossType", bossType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "receiveBossType", receiveBossType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "receiverAcctId", receiverAcctId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key);

            string merchantSignMsg = FormsAuthentication.HashPasswordForStoringInConfigFile(merchantSignMsgVal, "MD5").ToUpper();

            //订单提交时间
            orderTime        = orderTime.Substring(0, 4) + "-" + orderTime.Substring(4, 2) + "-" + orderTime.Substring(6, 2) + " " + orderTime.Substring(8, 2) + ":" + orderTime.Substring(10, 2) + ":" + orderTime.Substring(12, 2);
            result.OrderTime = Convert.ToDateTime(orderTime);

            //快钱交易时间
            billOrderTime   = billOrderTime.Substring(0, 4) + "-" + billOrderTime.Substring(4, 2) + "-" + billOrderTime.Substring(6, 2) + " " + billOrderTime.Substring(8, 2) + ":" + billOrderTime.Substring(10, 2) + ":" + billOrderTime.Substring(12, 2);
            result.DealTime = Convert.ToDateTime(billOrderTime);

            //快钱支付结果入库
            treasureFacade.WriteReturnKQDetail(result);

            //商家进行数据处理,并跳转回商家显示支付结果的页面
            ///首先进行签名字符串验证
            if (signMsg.ToUpper() == merchantSignMsg.ToUpper())
            {
                switch (payResult)
                {
                case "10":
                    /*
                     * // 商户网站逻辑处理,比方更新订单支付状态为成功
                     * // 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功!
                     */

                    //报告给快钱处理结果,并提供将要重定向的地址。
                    rtnOk = 1;

                    ShareDetialInfo detailInfo = new ShareDetialInfo();
                    detailInfo.OrderID   = result.OrderID;
                    detailInfo.IPAddress = Utility.UserIP;
                    detailInfo.PayAmount = result.PayAmount;

                    //写充值记录
                    try
                    {
                        Message msg = treasureFacade.FilliedOnline(detailInfo, 0);
                        if (msg.Success)
                        {
                            rtnUrl = showUrl + "?msg=1";    //在线充值成功
                        }
                        else
                        {
                            rtnUrl = showUrl + "?msg=2";    //在线充值成功,数据正在更新中
                        }
                    }
                    catch
                    {
                        rtnUrl = showUrl + "?msg=2";    //在线充值成功,数据正在更新中
                    }
                    break;

                default:
                    rtnOk  = 1;
                    rtnUrl = showUrl + "?msg=3";     //在线充值失败!
                    break;
                }
            }
            else
            {
                rtnOk  = 1;
                rtnUrl = showUrl + "?msg=3";
            }
        }
コード例 #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //初始化结果及地址
            ReturnKQDetailInfo result = new ReturnKQDetailInfo( );

            //获取充值卡网关账户号
            String merchantAcctId = Request["merchantAcctId"].ToString( ).Trim( );

            result.MerchantAcctID = merchantAcctId;

            //设置充值卡网关密钥
            //区分大小写
            String key = ApplicationSettings.Get("keyValueGame");

            //获取处理结果
            ///支付结果0为成功,3为失败
            string payResult = Request["payResult"].ToString( ).Trim( );

            result.PayResult = payResult;

            //获取快钱交易号 快钱多卡种订单号
            ///获取该交易的交易号
            String dealId = Request["dealId"].ToString( ).Trim( );

            result.DealID = dealId;


            //获取商户订单号商户请求支付提交的订单号
            String orderId = Request["orderId"].ToString( ).Trim( );

            result.OrderID = orderId;

            //获取实际支付金额
            ///单位为分
            ///比方 2 ,代表0.02元
            String payAmount = Request["payAmount"].ToString( ).Trim( );

            result.PayAmount = Convert.ToDecimal(payAmount.Trim( ));

            //获取请求时充值卡卡号

            String cardNumber = Request["cardNumber"].ToString( ).Trim( );

            result.CardNumber = cardNumber.Trim( );

            //获取商户扩展字段1
            String ext1 = Request["ext1"].ToString( ).Trim( );

            result.Ext1 = ext1.Trim( );

            //获取商户扩展字段2

            String ext2 = Request["ext2"].ToString( ).Trim( );

            if (!string.IsNullOrEmpty(ext2))
            {
                result.Ext2 = ext2.Trim( ).Split('/')[0];

                //订单金额
                result.OrderAmount = Convert.ToDecimal(ext2.Trim( ).Split('/')[1]);
            }
            else
            {
                result.Ext2 = "";
            }

            //获取错误信息返回
            String errInfo = Request["errInfo"].ToString( ).Trim( );

            result.ErrCode = errInfo;

            //获取加密签名串
            String signMsg = Request["signMsg"].ToString( ).Trim( );

            result.SignMsg = signMsg;

            //生成加密串。必须保持如下顺序。
            String merchantSignMsgVal = "";

            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult.ToString( ));
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "cardNumber", cardNumber);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", HttpUtility.UrlEncode(ext1, Encoding.GetEncoding("gb2312")).Trim( ));
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", HttpUtility.UrlEncode(ext2, Encoding.GetEncoding("gb2312")).Trim( ));
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key);

            String merchantSignMsg = TextEncrypt.EncryptPassword(merchantSignMsgVal).ToUpper( );

            //订单提交时间
            result.OrderTime = DateTime.Now;

            //快钱交易时间
            result.DealTime = DateTime.Now;

            //快钱支付结果入库
            treasureFacade.WriteReturnKQDetail(result);

            //支付金额小于订单金额不做任何处理
            //if( result.PayAmount != result.OrderAmount )
            //{
            //    Response.Write( "OK" );
            //    Response.End( );
            //}

            //商家进行数据处理,并跳转会商家显示支付结果的页面
            ///首先进行签名字符串验证
            if (signMsg.ToUpper( ) == merchantSignMsg.ToUpper( ))
            {
                switch (payResult)
                {
                case "0":
                    /*
                     * // 商户网站逻辑处理,比方更新订单支付状态为成功
                     * // 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功!
                     */

                    //报告给快钱处理结果,并提供将要重定向的地址。
                    ShareDetialInfo detailInfo = new ShareDetialInfo( );
                    detailInfo.OrderID   = result.OrderID;
                    detailInfo.PayAmount = result.PayAmount;
                    detailInfo.IPAddress = Utility.UserIP;

                    //写充值记录
                    Message msg = treasureFacade.FilliedOnline(detailInfo, 0);
                    Response.Write("OK");
                    break;

                default:
                    Response.Write("OK");
                    break;
                }
            }
            else
            {
                Response.Write("OK");
            }
        }
コード例 #9
0
ファイル: PayReceive.aspx.cs プロジェクト: archangelwin/QY
        protected void Page_Load(object sender, EventArgs e)
        {
            #region  获取快钱支付结果,并且保存在数据库中-->跳转

            //初始化结果及地址
            ReturnKQDetailInfo result = new ReturnKQDetailInfo();

            string showUrl = "http://" + HttpContext.Current.Request.Url.Authority + "/Pay/PayShow.aspx";

            //人民币网关账户号
            String merchantAcctId = Request["merchantAcctId"];
            if (String.IsNullOrEmpty(merchantAcctId))
            {
                merchantAcctId = ApplicationSettings.Get("merchantIdRMB");
            }
            result.MerchantAcctID = merchantAcctId.Trim();

            //人民币网关密钥--区分大小写
            String key = ApplicationSettings.Get("keyValueRMB");

            //网关版本.固定值
            ///快钱会根据版本号来调用对应的接口处理程序。
            ///本代码版本号固定为v2.0
            String version = Request["version"];
            if (String.IsNullOrEmpty(version))
            {
                version = "v2.0";
            }
            result.Version = version.Trim();

            //语言种类.固定选择值。
            ///只能选择1、2、3
            ///1代表中文;2代表英文
            ///默认值为1
            String language = Request["language"];
            if (String.IsNullOrEmpty(language))
            {
                language = "1";
            }
            result.Language = Convert.ToInt32(language.Trim());

            //签名类型.固定值--1代表MD5签名
            ///当前版本固定为1
            String signType = Request["signType"];
            if (String.IsNullOrEmpty(signType))
            {
                signType = "1";
            }
            result.SignType = Convert.ToInt32(signType.Trim());

            //支付方式--值为:10、11、12、13、14
            //00:组合支付(网关支付页面显示快钱支持的各种支付方式,推荐使用)10:银行卡支付(网关支付页面只显示银行卡支付).11:电话银行支付(网关支付页面只显示电话支付).12:快钱账户支付(网关支付页面只显示快钱账户支付).13:线下支付(网关支付页面只显示线下支付方式).14:B2B支付(网关支付页面只显示B2B支付,但需要向快钱申请开通才能使用)
            String payType = Request["payType"];
            if (String.IsNullOrEmpty(payType))
            {
                payType = "00";
            }
            result.PayType = payType.Trim();


            //银行代码-参见银行代码列表
            String bankId = Request["bankId"];
            if (String.IsNullOrEmpty(bankId))
            {
                bankId = "";
            }
            result.BankID = bankId.Trim();


            //商户订单号
            String orderId = Request["orderId"];
            //String orderId = "KQ20120321094644143608554";
            if (String.IsNullOrEmpty(orderId))
            {
                orderId = "";
            }
            result.OrderID = orderId.Trim();

            //订单提交时间
            ///商户提交订单时的时间.14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]
            ///如:20080101010101
            String orderTime = Request["orderTime"];
            if (String.IsNullOrEmpty(orderTime))
            {
                orderTime = "19000101010101";
            }

            //原始订单金额-单位为分。
            String orderAmount = Request["orderAmount"];
            if (String.IsNullOrEmpty(orderAmount))
            {
                orderAmount = "0";
            }
            result.OrderAmount = Convert.ToDecimal(orderAmount.Trim()) / 100;

            //快钱交易号
            String dealId = Request["dealId"];
            if (String.IsNullOrEmpty(dealId))
            {
                dealId = "";
            }
            result.DealID = dealId.Trim();


            //银行交易号--如未通过银行支付,则为空
            String bankDealId = Request["bankDealId"];
            if (String.IsNullOrEmpty(bankDealId))
            {
                bankDealId = "";
            }
            result.BankDealID = bankDealId.Trim();


            //快钱交易时间-14位数字。年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]
            ///如;20080101010101
            String dealTime = Request["dealTime"];
            if (String.IsNullOrEmpty(dealTime))
            {
                dealTime = "19000101010101";
            }

            //实际支付金额-单位为分
            String payAmount = Request["payAmount"];
            //String payAmount = "3000";
            if (String.IsNullOrEmpty(payAmount))
            {
                payAmount = "0";
            }
            result.PayAmount = Convert.ToDecimal(payAmount.Trim()) / 100;


            //交易手续费-单位为分
            String fee = Request["fee"];
            //String fee = "30";
            if (String.IsNullOrEmpty(fee))
            {
                fee = "0";
            }
            result.Fee = Convert.ToDecimal(fee.Trim()) / 100;

            //扩展字段1 --损耗比例
            String ext1 = Request["ext1"];
            //String ext1 = "10";
            if (String.IsNullOrEmpty(ext1))
            {
                ext1 = "0";
            }
            result.Ext1 = ext1.Trim();


            //扩展字段2
            String ext2 = Request["ext2"];
            //String ext2 = "1000";
            if (String.IsNullOrEmpty(ext2))
            {
                ext2 = "";
            }
            result.Ext2 = ext2.Trim();


            //处理结果  10:成功; 11:失败
            String payResult = Request["payResult"];
            //payResult = "10";
            if (String.IsNullOrEmpty(payResult))
            {
                payResult = "11";
            }
            result.PayResult = payResult.Trim();


            //错误代码
            String errCode = Request["errCode"];
            if (String.IsNullOrEmpty(errCode))
            {
                errCode = "";
            }
            result.ErrCode = errCode.Trim();


            //加密签名
            String signMsg = Request["signMsg"];
            if (String.IsNullOrEmpty(signMsg))
            {
                signMsg = "";
            }
            result.SignMsg = signMsg.Trim();


            //生成加密串
            String merchantSignMsgVal = "";
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "merchantAcctId", merchantAcctId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "version", version);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "language", language);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "signType", signType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payType", payType);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bankId", bankId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderId", orderId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderTime", orderTime);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "orderAmount", orderAmount);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealId", dealId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "bankDealId", bankDealId);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "dealTime", dealTime);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payAmount", payAmount);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "fee", fee);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext1", ext1);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "ext2", ext2);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "payResult", payResult);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "errCode", errCode);
            merchantSignMsgVal = AppendParam(merchantSignMsgVal, "key", key);

            String merchantSignMsg = FormsAuthentication.HashPasswordForStoringInConfigFile(merchantSignMsgVal, "MD5");

            //订单提交时间
            orderTime        = orderTime.Substring(0, 4) + "-" + orderTime.Substring(4, 2) + "-" + orderTime.Substring(6, 2) + " " + orderTime.Substring(8, 2) + ":" + orderTime.Substring(10, 2) + ":" + orderTime.Substring(12, 2);
            result.OrderTime = Convert.ToDateTime(orderTime);

            //快钱交易时间
            dealTime        = dealTime.Substring(0, 4) + "-" + dealTime.Substring(4, 2) + "-" + dealTime.Substring(6, 2) + " " + dealTime.Substring(8, 2) + ":" + dealTime.Substring(10, 2) + ":" + dealTime.Substring(12, 2);
            result.DealTime = Convert.ToDateTime(dealTime);

            //快钱支付结果入库
            treasureFacade.WriteReturnKQDetail(result);

            ///签名验证
            if (signMsg.ToUpper() == merchantSignMsg.ToUpper())
            {
                switch (payResult)
                {
                case "10":

                    /* 商户网站逻辑处理,比方更新订单支付状态为成功
                     * 特别注意:只有signMsg.ToUpper() == merchantSignMsg.ToUpper(),且payResult=10,才表示支付成功!同时将订单金额与提交订单前的订单金额进行对比校验。*/

                    //报告给快钱处理结果,并提供将要重定向的地址。
                    rtnOk = 1;

                    ShareDetialInfo detailInfo = new ShareDetialInfo();

                    detailInfo.OrderID   = result.OrderID;
                    detailInfo.IPAddress = Utility.UserIP;
                    detailInfo.PayAmount = result.PayAmount;

                    //写充值记录
                    try
                    {
                        Message umsg = treasureFacade.FilliedOnline(detailInfo, 0);
                        if (umsg.Success)
                        {
                            rtnUrl = showUrl + "?msg=1";    //在线充值成功
                        }
                        else
                        {
                            rtnUrl = showUrl + "?msg=2";    //在线充值成功,数据正在更新中
                        }
                    }
                    catch
                    {
                        rtnUrl = showUrl + "?msg=2";    //在线充值成功,数据正在更新中
                    }
                    break;

                default:
                    rtnOk  = 1;
                    rtnUrl = showUrl + "?msg=3";     //在线充值失败!
                    break;
                }
            }
            else
            {
                rtnOk  = 1;
                rtnUrl = showUrl + "?msg=3";
            }

            #endregion
        }