Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 校验返回数据包
                BuyCallbackResult result = Buy.VerifyCallback(Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("p1_MerId"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r0_Cmd"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r1_Code"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r2_TrxId"),
                                                              Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r3_Amt"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r4_Cur"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r5_Pid"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r6_Order"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r7_Uid"),
                                                              Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r8_MP"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("r9_BType"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("rp_PayDate"), Game.Web.Pay.YbBuy.FormatQueryString.GetQueryString("hmac"));

                if (string.IsNullOrEmpty(result.ErrMsg))
                {
                    if (result.R1_Code == "1")
                    {
                        if (result.R9_BType == "1")
                        {
                            // 写充值记录
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = result.R6_Order;
                            detailInfo.IPAddress = Utility.UserIP;
                            detailInfo.PayAmount = decimal.Parse(result.R3_Amt);
                            Message msg = treasureFacade.FilliedOnline(detailInfo, 0);
                            // 下面的错误提示和成功提示要POST出去。这个判断力。用户访问不到,充值成功与否都得给用户提示。
                            // 卡密的页面也是如此。都要想办法给用户展示,最好这个页面影藏显示去。别给用户看。
                            // 你们测试的时候自己看下。
                            if (!msg.Success)
                            {
                                Response.Redirect("/WiteCard.html?OID=" + result.R6_Order);
                                Response.End();
                            }
                            else
                            {
                                Response.Redirect("/WiteCard.html?OID=" + result.R6_Order);
                            }
                            //  callback方式:浏览器重定向
                            // Response.Write("支付成功!<br>商品ID:" + result.R5_Pid + "<br>商户订单号:" + result.R6_Order + "<br>支付金额:" + result.R3_Amt + "<br>易宝支付交易流水号:" + result.R2_TrxId + "<BR>");
                        }
                        else if (result.R9_BType == "2")
                        {
                            // * 如果是服务器返回则需要回应一个特定字符串'SUCCESS',且在'SUCCESS'之前不可以有任何其他字符输出,保证首先输出的是'SUCCESS'字符串
                            // 这里用户可以看见。想办法不要用户看见。但这句绝对不能取消
                            Response.Write("SUCCESS");
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = result.R6_Order;
                            detailInfo.IPAddress = Utility.UserIP;
                            detailInfo.PayAmount = decimal.Parse(result.R3_Amt);
                            treasureFacade.FilliedOnline(detailInfo, 0);
                            Response.Redirect("/WiteCard.html?OID=" + result.R6_Order);
                        }
                    }
                    else
                    {
                        Response.Write("支付失败!请重试<a href='/'>点击返回</a>");
                    }
                }
                else
                {
                    Response.Write("交易签名无效!请重试<a href='/pay/payIndex.aspx'>点击返回</a>");
                }
            }
        }
Esempio n. 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string outOrder_no = Request["outOrder_no"].ToString();
            string sign        = Request["sign"].ToString();
            string realsign    = weixindes.Decrypt(sign, pwd);

            if (("?outOrder_no=" + outOrder_no).Equals(realsign))
            {
                ShareDetialInfo detailInfo = new ShareDetialInfo();
                detailInfo.OrderID   = outOrder_no;
                detailInfo.IPAddress = Utility.UserIP;
                OnLineOrder onlineorder = treasureFacade.GetOnlineOrder(outOrder_no);
                if (onlineorder != null)
                {
                    detailInfo.PayAmount = onlineorder.CardPrice;
                    Message msg = treasureFacade.FilliedOnline(detailInfo, 0);
                    if (!msg.Success)
                    {
                        Response.Write("Fail");
                    }
                    else
                    {
                        Response.Write("Success");
                    }
                }
                else
                {
                    Response.Write("Fail");
                }
            }
            else
            {
                Response.Write("Fail");
            }
        }
Esempio n. 3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            TreasureFacade treasureFacade = new TreasureFacade();
            string         yb_data        = Request["data"].ToString();
            string         yb_encryptkey  = Request["encryptkey"].ToString();
            Boolean        ok             = EncryptUtil.checkDecryptAndSign(yb_data, yb_encryptkey, Config.yibaoPublickey, Config.merchantPrivatekey);

            if (ok)
            {
                string AESKey   = RSA.Class.RSAFromPkcs8.decryptData(yb_encryptkey, Config.merchantPrivatekey, "UTF-8");
                string realData = payapi_mobile_demo.AES.Decrypt(yb_data, AESKey);


                SortedDictionary <string, object> sd = Newtonsoft.Json.JsonConvert.DeserializeObject <SortedDictionary <string, object> >(realData);


                /** 3.取得data明文sign。 */
                string sign = (string)sd["sign"];

                /** 4.对map中的值进行验证 */
                StringBuilder signData = new StringBuilder();
                foreach (var item in sd)
                {
                    /** 把sign参数隔过去 */
                    if (item.Key == "sign")
                    {
                        continue;
                    }
                    signData.Append(item.Value);
                }

                string          orderid    = (string)sd["orderid"];
                string          money      = (Convert.ToInt32(sd["amount"])).ToString();
                ShareDetialInfo detailInfo = new ShareDetialInfo();//请不要修改或删除
                detailInfo.PayAmount = decimal.Parse(money) / 100;
                detailInfo.OrderID   = orderid;
                detailInfo.IPAddress = GameRequest.GetUserIP();
                Message message = treasureFacade.FilliedOnline(detailInfo, 0);
                if (message.Success)
                {
                    Response.Write("success");
                }
                else
                {
                    Response.Write("sorry");
                }
            }
            else
            {
                Response.Write("sorry");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string key      = System.Configuration.ConfigurationSettings.AppSettings["DayKey"];            //密钥
            string merId    = System.Configuration.ConfigurationSettings.AppSettings["DayMerId"];          //商户ID
            string status   = GameRequest.GetFormString("status");                                         //交易状态
            string sign     = GameRequest.GetFormString("sign");                                           //签名
            string orderId  = GameRequest.GetFormString("orderId");                                        //订单号
            float  payMoney = GameRequest.GetFormFloat("payMoney", 0);                                     //金额
            string operDate = GameRequest.GetFormString("operDate");                                       //订单日期
            string userName = GameRequest.GetFormString("userName");                                       //用户名
            string showUrl  = "http://" + HttpContext.Current.Request.Url.Authority + "/Pay/PayShow.aspx"; //交易完成后提示地址
            string signStr  = merId + "|" + orderId + "|" + status + "|" + payMoney + "|" + operDate + "|" + userName + "|" + key;
            string testSign = EncryptMD5(signStr, false, 32);                                              //计算签名

            ReturnDayDetailInfo result = new ReturnDayDetailInfo( );

            result.OrderID  = orderId;
            result.PayMoney = Convert.ToDecimal(payMoney);
            result.Sign     = sign;
            result.UserName = userName;
            result.PayType  = 1;
            result.Status   = status;

            //天天付支付结果入库
            treasureFacade.WriteReturnDayDetail(result);

            if (signStr == testSign)
            {
                //交易状态为005时表示交易完成
                if (status == "055")
                {
                    ShareDetialInfo detailInfo = new ShareDetialInfo( );
                    detailInfo.OrderID   = orderId;
                    detailInfo.IPAddress = Utility.UserIP;
                    Message umsg = treasureFacade.FilliedOnline(detailInfo, 0);
                    if (umsg.Success)
                    {
                        rtnUrl = showUrl + "?msg=1";//在线充值成功
                    }
                    else
                    {
                        rtnUrl = showUrl + "?msg=2";//在线充值成功,数据正在更新中
                    }
                }
                else
                {
                    rtnOk  = 1;
                    rtnUrl = showUrl + "?msg=3"; //在线充值失败!
                }
            }
        }
Esempio n. 5
0
        protected void Logic(SZXCallbackResult result)
        {
            if (result.R1_Code == "1")
            {
                ShareDetialInfo detailInfo     = new ShareDetialInfo();
                TreasureFacade  treasureFacade = new TreasureFacade();

                detailInfo.OrderID   = result.P2_Order;
                detailInfo.IPAddress = Utility.UserIP;
                detailInfo.PayAmount = decimal.Parse(result.P7_realAmount);
                Message msg = treasureFacade.FilliedOnline(detailInfo, 0);
                Response.Write(detailInfo.PayAmount);
                Response.Write(msg.Content);
                Response.Write("支付成功");
            }
            else
            {
                Response.Write("支付失败");
            }
        }
Esempio n. 6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 校验返回数据包
                BuyCallbackResult result = Buy.VerifyCallback(FormatQueryString.GetQueryString("p1_MerId"), FormatQueryString.GetQueryString("r0_Cmd"), FormatQueryString.GetQueryString("r1_Code"), FormatQueryString.GetQueryString("r2_TrxId"),
                                                              FormatQueryString.GetQueryString("r3_Amt"), FormatQueryString.GetQueryString("r4_Cur"), FormatQueryString.GetQueryString("r5_Pid"), FormatQueryString.GetQueryString("r6_Order"), FormatQueryString.GetQueryString("r7_Uid"),
                                                              FormatQueryString.GetQueryString("r8_MP"), FormatQueryString.GetQueryString("r9_BType"), FormatQueryString.GetQueryString("rp_PayDate"), FormatQueryString.GetQueryString("hmac"));

                if (string.IsNullOrEmpty(result.ErrMsg))
                {
                    //写易宝记录
                    ReturnYPDetailInfo resultYB = new ReturnYPDetailInfo();
                    resultYB.P1_MerId       = FormatQueryString.GetQueryString("p1_MerId");
                    resultYB.R0_Cmd         = FormatQueryString.GetQueryString("r0_Cmd");
                    resultYB.R1_Code        = FormatQueryString.GetQueryString("r1_Code");
                    resultYB.R2_TrxId       = FormatQueryString.GetQueryString("r2_TrxId");
                    resultYB.R3_Amt         = Convert.ToDecimal(FormatQueryString.GetQueryString("r3_Amt"));
                    resultYB.R4_Cur         = FormatQueryString.GetQueryString("r4_Cur");
                    resultYB.R5_Pid         = FormatQueryString.GetQueryString("r5_Pid");
                    resultYB.R6_Order       = FormatQueryString.GetQueryString("r6_Order");
                    resultYB.R7_Uid         = FormatQueryString.GetQueryString("r7_Uid");
                    resultYB.R8_MP          = FormatQueryString.GetQueryString("r8_MP");
                    resultYB.R9_BType       = FormatQueryString.GetQueryString("r9_BType");
                    resultYB.Rb_BankId      = FormatQueryString.GetQueryString("rb_BankId");
                    resultYB.Ro_BankOrderId = FormatQueryString.GetQueryString("ro_BankOrderId");
                    resultYB.Rp_PayDate     = FormatQueryString.GetQueryString("rp_PayDate");
                    resultYB.Rq_CardNo      = FormatQueryString.GetQueryString("rq_CardNo");
                    resultYB.Ru_Trxtime     = FormatQueryString.GetQueryString("ru_Trxtime");
                    resultYB.Hmac           = FormatQueryString.GetQueryString("hmac");
                    treasureFacade.WriteReturnYBDetail(resultYB);

                    if (result.R1_Code == "1")
                    {
                        if (result.R9_BType == "1")
                        {
                            // 写充值记录
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = resultYB.R6_Order;
                            detailInfo.IPAddress = Utility.UserIP;
                            detailInfo.PayAmount = resultYB.R3_Amt;
                            treasureFacade.FilliedOnline(detailInfo, 0);

                            //  callback方式:浏览器重定向
                            Response.Write("支付成功!<br>商品ID:" + result.R5_Pid + "<br>商户订单号:" + result.R6_Order + "<br>支付金额:" + result.R3_Amt + "<br>易宝支付交易流水号:" + result.R2_TrxId + "<BR>");
                        }
                        else if (result.R9_BType == "2")
                        {
                            // * 如果是服务器返回则需要回应一个特定字符串'SUCCESS',且在'SUCCESS'之前不可以有任何其他字符输出,保证首先输出的是'SUCCESS'字符串
                            Response.Write("SUCCESS");
                        }
                    }
                    else
                    {
                        Response.Write("支付失败!");
                    }
                }
                else
                {
                    Response.Write("交易签名无效!");
                }
            }
        }
Esempio n. 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //创建ResponseHandler实例
            ResponseHandler resHandler = new ResponseHandler(Context);

            resHandler.setKey(TenpayUtil.tenpay_key);

            //判断签名
            if (resHandler.isTenpaySign())
            {
                ///通知id
                string notify_id = resHandler.getParameter("notify_id");
                //通过通知ID查询,确保通知来至财付通
                //创建查询请求
                RequestHandler queryReq = new RequestHandler(Context);
                queryReq.init();
                queryReq.setKey(TenpayUtil.tenpay_key);
                queryReq.setGateUrl("https://gw.tenpay.com/gateway/simpleverifynotifyid.xml");
                queryReq.setParameter("partner", TenpayUtil.bargainor_id);
                queryReq.setParameter("notify_id", notify_id);

                //通信对象
                TenpayHttpClient httpClient = new TenpayHttpClient();
                httpClient.setTimeOut(5);
                //设置请求内容
                httpClient.setReqContent(queryReq.getRequestURL());
                //后台调用
                if (httpClient.call())
                {
                    //设置结果参数
                    ClientResponseHandler queryRes = new ClientResponseHandler();
                    queryRes.setContent(httpClient.getResContent());
                    queryRes.setKey(TenpayUtil.tenpay_key);
                    //判断签名及结果
                    //只有签名正确,retcode为0,trade_state为0才是支付成功
                    if (queryRes.isTenpaySign())
                    {
                        //取结果参数做业务处理
                        string out_trade_no = queryRes.getParameter("out_trade_no");
                        //财付通订单号
                        string transaction_id = queryRes.getParameter("transaction_id");
                        //金额,以分为单位
                        string total_fee = queryRes.getParameter("total_fee");
                        //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee
                        string discount = queryRes.getParameter("discount");
                        //支付结果
                        string trade_state = resHandler.getParameter("trade_state");
                        //交易模式,1即时到帐 2中介担保
                        string trade_mode = resHandler.getParameter("trade_mode");
                        #region
                        //判断签名及结果
                        if ("0".Equals(queryRes.getParameter("retcode")))
                        {
                            //Response.Write("id验证成功");

                            if ("1".Equals(trade_mode))
                            {       //即时到账
                                if ("0".Equals(trade_state))
                                {
                                    //------------------------------
                                    //即时到账处理业务开始
                                    //------------------------------

                                    //处理数据库逻辑
                                    //注意交易单不要重复处理
                                    //注意判断返回金额

                                    //------------------------------
                                    //即时到账处理业务完毕
                                    //------------------------------

                                    //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                                    Response.Write("success");

                                    ShareDetialInfo detailInfo = new ShareDetialInfo();
                                    detailInfo.OrderID   = out_trade_no;
                                    detailInfo.IPAddress = Utility.UserIP;
                                    detailInfo.PayAmount = decimal.Parse(total_fee);
                                    Message msg = treasurefacade.FilliedOnline(detailInfo, 0);

                                    if (!msg.Success)
                                    {
                                        Response.Write(msg.Content);
                                    }
                                }
                                else
                                {
                                    Response.Write("即时到账支付失败");
                                }
                            }
                            else if ("2".Equals(trade_mode))
                            { //中介担保
                              //------------------------------
                              //中介担保处理业务开始
                              //------------------------------
                              //处理数据库逻辑
                              //注意交易单不要重复处理
                              //注意判断返回金额

                                int iStatus = Convert.ToInt32(trade_state);
                                switch (iStatus)
                                {
                                case 0:                 //付款成功
                                    ShareDetialInfo detailInfo = new ShareDetialInfo();
                                    detailInfo.OrderID   = out_trade_no;
                                    detailInfo.IPAddress = Utility.UserIP;
                                    detailInfo.PayAmount = decimal.Parse(total_fee);
                                    Message msg = treasurefacade.FilliedOnline(detailInfo, 0);
                                    if (!msg.Success)
                                    {
                                        Response.Write(msg.Content);
                                    }
                                    break;

                                case 1:                 //交易创建

                                    break;

                                case 2:                 //收获地址填写完毕

                                    break;

                                case 4:                 //卖家发货成功

                                    break;

                                case 5:                 //买家收货确认,交易成功

                                    break;

                                case 6:                 //交易关闭,未完成超时关闭

                                    break;

                                case 7:                 //修改交易价格成功

                                    break;

                                case 8:                 //买家发起退款

                                    break;

                                case 9:                 //退款成功

                                    break;

                                case 10:        //退款关闭

                                    break;
                                }


                                //------------------------------
                                //中介担保处理业务开始
                                //------------------------------


                                //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知
                                Response.Write("success");
                            }
                        }
                        else
                        {
                            //错误时,返回结果可能没有签名,写日志trade_state、retcode、retmsg看失败详情。
                            //通知财付通处理失败,需要重新通知
                            Response.Write("查询验证签名失败或id验证失败");
                            Response.Write("retcode:" + queryRes.getParameter("retcode"));
                        }
                        #endregion
                    }
                    else
                    {
                        Response.Write("通知ID查询签名验证失败");
                    }
                }
                else
                {
                    //通知财付通处理失败,需要重新通知
                    Response.Write("后台调用通信失败");
                    //写错误日志
                    Response.Write("call err:" + httpClient.getErrInfo() + "<br>" + httpClient.getResponseCode() + "<br>");
                }
            }
            else
            {
                Response.Write("签名验证失败");
            }
            Response.End();
        }
Esempio n. 8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, Request["notify_id"], Request["sign"]);

                if (verifyResult)//验证成功
                {
                    //商户订单号
                    string out_trade_no = Request["out_trade_no"];

                    //支付宝交易号
                    string trade_no = Request["trade_no"];

                    //交易状态
                    string trade_status = Request["trade_status"];

                    //交易金额
                    string total_fee = Request["total_fee"];

                    if (Request["trade_status"] == "TRADE_FINISHED")
                    {
                        ShareDetialInfo detailInfo = new ShareDetialInfo();
                        detailInfo.OrderID   = out_trade_no;
                        detailInfo.IPAddress = Utility.UserIP;
                        detailInfo.PayAmount = decimal.Parse(total_fee);
                        Message msg = treasurefacade.FilliedOnline(detailInfo, 0);
                        if (!msg.Success)
                        {
                            Response.Write(msg.Content);
                        }
                    }
                    else if (Request["trade_status"] == "TRADE_SUCCESS")
                    {
                        ShareDetialInfo detailInfo = new ShareDetialInfo();
                        detailInfo.OrderID   = out_trade_no;
                        detailInfo.IPAddress = Utility.UserIP;
                        detailInfo.PayAmount = decimal.Parse(total_fee);
                        Message msg = treasurefacade.FilliedOnline(detailInfo, 0);
                        if (!msg.Success)
                        {
                            Response.Write(msg.Content);
                        }
                    }
                    else
                    {
                    }
                    Response.Write("success");//请不要修改或删除
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }
        }
Esempio n. 9
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";
            }
        }
Esempio n. 10
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");
            }
        }
Esempio n. 11
0
        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
        }
Esempio n. 12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 校验返回数据包
                Buy.logstr(FormatQueryString.GetQueryString("r6_Order"), Request.Url.Query, "");
                BuyCallbackResult result = Buy.VerifyCallback(FormatQueryString.GetQueryString("p1_MerId"), FormatQueryString.GetQueryString("r0_Cmd"), FormatQueryString.GetQueryString("r1_Code"), FormatQueryString.GetQueryString("r2_TrxId"),
                                                              FormatQueryString.GetQueryString("r3_Amt"), FormatQueryString.GetQueryString("r4_Cur"), FormatQueryString.GetQueryString("r5_Pid"), FormatQueryString.GetQueryString("r6_Order"), FormatQueryString.GetQueryString("r7_Uid"),
                                                              FormatQueryString.GetQueryString("r8_MP"), FormatQueryString.GetQueryString("r9_BType"), FormatQueryString.GetQueryString("rp_PayDate"), FormatQueryString.GetQueryString("hmac"));

                if (string.IsNullOrEmpty(result.ErrMsg))
                {
                    //在接收到支付结果通知后,判断是否进行过业务逻辑处理,不要重复进行业务逻辑处理
                    if (result.R1_Code == "1")
                    {
                        if (result.R9_BType == "1")
                        {
                            Request.Cookies.Remove("ErrorMsg");

                            Response.Redirect("/showPayInfo.html");
                            //  callback方式:浏览器重定向
                            //  Response.Write("支付成功!" +
                            //     "<br>接口类型:" + result.R0_Cmd +
                            //      "<br>返回码:" + result.R1_Code +
                            //"<br>商户号:" + result.P1_MerId +
                            //      "<br>交易流水号:" + result.R2_TrxId +
                            //     "<br>商户订单号:" + result.R6_Order +

                            //       "<br>交易金额:" + result.R3_Amt +
                            //      "<br>交易币种:" + result.R4_Cur +
                            //       "<br>订单完成时间:" + result.Rp_PayDate +
                            //      "<br>回调方式:" + result.R9_BType +
                            //      "<br>错误信息:" + result.ErrMsg + "<BR>");
                        }
                        else if (result.R9_BType == "2")
                        {
                            // * 如果是服务器返回则需要回应一个特定字符串'SUCCESS',且在'SUCCESS'之前不可以有任何其他字符输出,保证首先输出的是'SUCCESS'字符串
                            Response.Write("SUCCESS");
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = result.R6_Order;
                            detailInfo.IPAddress = Utility.UserIP;
                            detailInfo.PayAmount = decimal.Parse(result.R3_Amt);
                            treasureFacade.FilliedOnline(detailInfo, 0);
                        }
                    }
                    else
                    {
                        HttpCookie UserCookie2 = new HttpCookie("ErrorMsg");
                        UserCookie2["error"] = HttpUtility.UrlEncode(result.ErrMsg);
                        UserCookie2.Expires  = DateTime.Now.AddMinutes(7);
                        Response.Cookies.Add(UserCookie2);
                        Response.Redirect("/showPayInfo.html");
                    }
                }
                else
                {
                    HttpCookie UserCookie2 = new HttpCookie("ErrorMsg");
                    UserCookie2["error"] = HttpUtility.UrlEncode("交易签名无效");
                    UserCookie2.Expires  = DateTime.Now.AddMinutes(7);
                    Response.Cookies.Add(UserCookie2);
                    Response.Redirect("/showPayInfo.html");
                }
            }
        }
Esempio n. 13
0
        //更新数据
        private void BindData()
        {
            ReturnVBDetailInfo result = new ReturnVBDetailInfo();

            string spid  = ApplicationSettings.Get("spId");       //'sp号码
            string sppwd = ApplicationSettings.Get("spKeyValue"); //'sp18位密码

            //'接受服务器url get参数
            string rtmd5 = Request.QueryString["v1"]; //   '服务器MD5

            result.Rtmd5 = rtmd5;

            string trka = Request.QueryString["v2"];  //  'V币号码15位

            result.Rtka = trka;

            string rtmi = Request.QueryString["v3"]; //   '密码'V币密码6位 (可能为空 老V币没有密码)

            result.Rtmi = rtmi;

            string rtmz = Request.QueryString["v4"];    //  '面值1-999 整数

            result.Rtmz = Convert.ToInt32(rtmz);

            string rtlx = Request.QueryString["v5"];    //  '卡的类型  1 2 3

            result.Rtlx = Convert.ToInt32(rtlx);

            string rtoid = Request.QueryString["v6"]; // '网盈一号通服务器端订单

            result.Rtoid = rtoid;

            string rtcoid = Request.QueryString["v7"];  //  '商户自己订单

            result.OrderID = rtcoid;

            string rtuserid = Request.QueryString["v8"];// '商户的用户ID

            result.Rtuserid = rtuserid;

            string rtcustom = Request.QueryString["v9"]; //'商户自己定义数据

            result.Rtcustom = rtcustom;

            string rtflag = Request.QueryString["v10"]; // '返回状态. 1正常发送 2补单发送

            result.Rtflag = Convert.ToInt32(rtflag);

            string get_key = trka + rtmi + rtoid + spid + sppwd + rtcoid + rtflag + rtmz;

            result.EcryptStr = get_key;
            //'卡+密+网盈一号通服务器端订单+ 5位spid+ 18位SP密码+商户订单+rtflag返回类型1或2 +面值
            //'LCase函数是将字符转换为小写; Ucase函数是将字符转换为大写
            //'全国声讯支付联盟全国声讯电话支付接口对MD5值只认大写字符串,所以小写的MD5值得转换为大写
            string md5password = TextEncrypt.EncryptPassword(get_key).ToUpper();  //  '先MD5 32 然后转大写

            result.SignMsg = md5password;

            //'流程 第1次访问此页面 是盈华讯方服务器调用此页面1次 ,你先判断订单(订单包含金额,面值,状态等消息)
            //'如果订单是没有使用状态并金额一致就MD5校验,校验通过 你发送“header("Data-Received:ok_vpay8"); ”
            //'给盈华讯方服务器,服务器接收到这个头 后判断( 你已经给用户加点了),然后就把本页面转向给你
            //,此时转发的数据和第一次服务器直接调用的一致 此次你只需要根据订单,给用户提示冲值成功就可以了。
            //如果你没有发送头或网络中断,我就会给用户提示补单的消息(他可以自己点击,也可以我方服务器自动
            //补发,补发数据的MD5和第一发送的不一样,里面的“$_GET['v10']”'返回状态. 1为正常发送回来 2为补单发送回来)
            // 做好加点后一定要把订单 状态改变。!并注意安全处理。
            //关于订单安全做法 如有不明请电话:0755-82126136 徐先生

            //此页面不要使用SEESION cooke  请用数据库管理你的订单 */
            //////////此处请商户自己编写求出订单状态代码 以备下方条件判断用!

            //写VB返回记录

            if (rtmd5 == "" || rtmd5 == null)
            {
                litMsg.Text = "没有此订单信息";
                return;
            }
            treasureFacade.WriteReturnVBDetail(result);

            //'步骤1  :包含A和B
            //'A步骤,盈华讯方服务器第一次探测商户服务器状态.并给该订单充值
            //'B步骤,检查该订单如果订单使用了 就把该订单的充值记录给用户打印.
            if (rtflag == "1")
            {
                if (md5password == rtmd5)
                {
                    //'校验商户订单号码状态
                    string      orderID = rtcoid.Trim();
                    OnLineOrder order   = treasureFacade.GetOnlineOrder(orderID);
                    if (order != null)
                    {
                        if (order.OrderStatus == 0)
                        {
                            //充值
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = orderID;
                            detailInfo.PayAmount = Convert.ToDecimal(rtmz);
                            detailInfo.IPAddress = Utility.UserIP;
                            Message msg = treasureFacade.FilliedOnline(detailInfo, 1);
                            if (msg.Success)
                            {
                                BindText(order);
                            }
                        }
                        else
                        {
                            BindText(order);
                        }
                    }
                }
            }

            //'步骤2  :包含A补单
            //'A补单:如果由于网络服务器中断或加点失败,会在5分钟内开始给用户补发数据.持续200次 24个小时
            if (rtflag == "2")
            {
                if (md5password == rtmd5)
                {
                    //'校验商户订单号码状态
                    string      orderID = rtcoid.Trim();
                    OnLineOrder order   = treasureFacade.GetOnlineOrder(orderID);
                    if (order != null)
                    {
                        if (order.OrderStatus == 0)
                        {
                            //充值
                            ShareDetialInfo detailInfo = new ShareDetialInfo( );
                            detailInfo.OrderID   = orderID;
                            detailInfo.PayAmount = Convert.ToDecimal(rtmz);
                            detailInfo.IPAddress = Utility.UserIP;
                            Message msg = treasureFacade.FilliedOnline(detailInfo, 1);
                            if (msg.Success)
                            {
                                BindText(order);
                            }
                        }
                        else
                        {
                            BindText(order);
                        }
                    }
                }
            }
        }