Exemplo n.º 1
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";
            }
        }
Exemplo n.º 2
0
        ///// <summary>
        ///// 在线充值
        ///// </summary>
        ///// <param name="olDetial"></param>
        ///// <returns></returns>
        //public void FilliedOnline(ShareDetailInfo olDetial)
        //{
        //    treasureData.FilliedOnline(olDetial);
        //}


        /// <summary>
        /// 在线充值
        /// </summary>
        /// <param name="olDetial"></param>
        /// <returns></returns>
        public Message FilliedOnline(ShareDetialInfo olDetial, int isVB)
        {
            return(treasureData.FilliedOnline(olDetial, isVB));
        }
Exemplo n.º 3
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");
            }
        }
Exemplo n.º 4
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string text   = ApplicationSettings.Get("key_ruiyun");
            string text2  = base.Request["orderid"];
            string text3  = base.Request["opstate"];
            string text4  = base.Request["ovalue"];
            string text5  = base.Request["sign"];
            string value  = base.Request["sysorderid"];
            string value2 = base.Request["completiontime"];
            string value3 = base.Request["attach"];
            string value4 = base.Request["msg"];

            System.Collections.Generic.Dictionary <string, string> dictionary = new System.Collections.Generic.Dictionary <string, string>();
            dictionary["orderid"]        = text2;
            dictionary["opstate"]        = text3;
            dictionary["ovalue"]         = text4;
            dictionary["sign"]           = text5;
            dictionary["sysorderid"]     = value;
            dictionary["completiontime"] = value2;
            dictionary["attach"]         = value3;
            dictionary["msg"]            = value4;
            string password = string.Format("orderid={0}&opstate={1}&ovalue={2}{3}", new object[]
            {
                text2,
                text3,
                text4,
                text
            });

            if (text5.Equals(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5").ToLower()))
            {
                if (text3.Equals("0") || text3.Equals("-3"))
                {
                    ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                    shareDetialInfo.OrderID   = text2;
                    shareDetialInfo.IPAddress = Utility.UserIP;
                    shareDetialInfo.PayAmount = System.Convert.ToDecimal(text4);
                    Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                    if (message.Success)
                    {
                        base.Response.Write("ErrCode=0");
                    }
                    else
                    {
                        Log.Write(message.Content + ":" + JsonHelper.SerializeObject(dictionary));
                    }
                }
                else
                {
                    if (text3.Equals("-1"))
                    {
                        Log.Write("卡号密码错误:" + JsonHelper.SerializeObject(dictionary));
                    }
                    else
                    {
                        if (text3.Equals("-2"))
                        {
                            Log.Write("卡实际面值和提交时面值不符:" + JsonHelper.SerializeObject(dictionary));
                        }
                        else
                        {
                            if (text3.Equals("-4"))
                            {
                                Log.Write("卡在提交之前已经被使用:" + JsonHelper.SerializeObject(dictionary));
                            }
                            else
                            {
                                if (text3.Equals("-5"))
                                {
                                    Log.Write("瑞云返回失败:" + JsonHelper.SerializeObject(dictionary));
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                Log.Write("签名无效:" + JsonHelper.SerializeObject(dictionary));
                base.Response.Write("签名错误");
            }
        }
Exemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Logger.Info("Game.Web.Pay.yifu.return_url开始");

            string payKey = Request["payKey"].Trim();

            Logger.Info("payKey" + payKey);
            string productName = Request["productName"].Trim();

            Logger.Info("productName" + productName);
            string productType = Request["productType"].Trim();

            Logger.Info("productType" + productType);
            string orderPrice = Request["orderPrice"].Trim();

            Logger.Info("orderPrice" + orderPrice);
            string orderTime = Request["orderTime"].Trim();

            Logger.Info("orderTime" + orderTime);
            string outTradeNo = Request["outTradeNo"].Trim();

            Logger.Info("outTradeNo" + outTradeNo);
            string tradeStatus = Request["tradeStatus"].Trim();

            Logger.Info("tradeStatus" + tradeStatus);
            string trxNo = Request["trxNo"].Trim();

            Logger.Info("trxNo" + trxNo);
            string successTime = Request["successTime"].Trim();

            Logger.Info("successTime" + successTime);

            string remark = Request["remark"].Trim();

            Logger.Info("remark" + remark);
            string sign = Request["sign"].Trim();

            Logger.Info("sign " + sign);
            if (!IsPostBack)
            {
                string str = "orderPrice=" + orderPrice + "&orderTime=" + orderTime + "&outTradeNo=" + outTradeNo + "&payKey=" + payKey + "&productName=" + productName + "&productType=" + productType + "&remark=" + remark + "&successTime=" + successTime + "&tradeStatus=" + tradeStatus + "&trxNo=" + trxNo + "&paySecret=" + paySecret;
                Logger.Info("str" + str);

                MD5    md = new MD5CryptoServiceProvider();
                byte[] ss = md.ComputeHash(UnicodeEncoding.UTF8.GetBytes(str));
                Game.Web.Pay.yifu.send send = new yifu.send();
                string sign1 = send.byteArrayToHexString(ss).ToUpper();

                Logger.Info("sign" + sign);
                Logger.Info("sign1" + sign1);
                if (sign == sign1 && tradeStatus == "SUCCESS")
                {
                    Logger.Info("处理订单开始");
                    //处理订单
                    ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                    shareDetialInfo.OrderID   = outTradeNo;
                    shareDetialInfo.IPAddress = Utility.UserIP;
                    shareDetialInfo.PayAmount = System.Convert.ToDecimal(orderPrice);
                    Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                    Logger.Info("message" + message.ToJson());
                    if (message.Success)
                    {
                        Logger.Info("充值成功");
                        base.Response.Write("充值成功");
                    }
                    else
                    {
                        Log.Write(message.Content);
                        base.Response.Write("充值失败:" + message.Content + "<br/>订单号:" + outTradeNo);
                    }
                    Response.Write("SUCCESS");
                }
            }
        }
Exemplo n.º 6
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string str = ApplicationSettings.Get("key_sl");

            byte[] array = new byte[base.Request.InputStream.Length];
            base.Request.InputStream.Read(array, 0, array.Length);
            string text = System.Text.Encoding.UTF8.GetString(array);

            text = System.Web.HttpUtility.UrlDecode(text);
            NameValueCollection nameValueCollection = System.Web.HttpUtility.ParseQueryString(text);
            string text2 = nameValueCollection.Get("orderid");
            string text3 = nameValueCollection.Get("opstate");
            string text4 = nameValueCollection.Get("ovalue");
            string text5 = nameValueCollection.Get("sign");

            nameValueCollection.Get("sysorderid");
            nameValueCollection.Get("systime");
            nameValueCollection.Get("attach");
            string text6 = nameValueCollection.Get("Sign2");

            if (!(text3 == "0"))
            {
                Log.Write("支付系统错误 opstate:" + text3 + " orderid:" + text2);
                base.Response.Write("支付系统错误");
            }
            else
            {
                string text7 = text2 + text4 + str;
                string text8 = TextEncrypt.EncryptPassword(text7);
                if (!(text6.ToLower() == text8.ToLower()))
                {
                    Log.Write(string.Concat(new string[]
                    {
                        "签名错误,signSource=",
                        text7,
                        " mySign=",
                        text8,
                        " Sign=",
                        text5,
                        " Sign2=",
                        text6
                    }));
                    base.Response.Write("签名错误");
                }
                else
                {
                    ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                    shareDetialInfo.OrderID   = text2;
                    shareDetialInfo.IPAddress = Utility.UserIP;
                    shareDetialInfo.PayAmount = System.Convert.ToDecimal(text4);
                    Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                    if (message.Success)
                    {
                        base.Response.Write("success");
                    }
                    else
                    {
                        Log.Write(message.Content);
                    }
                }
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// 苹果充值
 /// </summary>
 /// <param name="olDetial"></param>
 /// <returns></returns>
 public Message FilliedApp(ShareDetialInfo olDetial, string productID)
 {
     return(treasureData.FilliedApp(olDetial, productID));
 }
Exemplo 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("无通知参数");
            }
        }
Exemplo n.º 9
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string value  = base.Request["merchant_code"];
            string value2 = base.Request["notify_type"];
            string text   = base.Request["sign"];
            string text2  = base.Request["order_no"];
            string text3  = base.Request["order_amount"];
            string text4  = base.Request["order_time"];
            string value3 = base.Request["return_params"];
            string value4 = base.Request["trade_no"];
            string value5 = base.Request["trade_time"];
            string text5  = base.Request["trade_status"];
            string str    = ApplicationSettings.Get("key_41");
            SortedDictionary <string, string> sortedDictionary = new SortedDictionary <string, string>();

            sortedDictionary.Add("merchant_code", value);
            sortedDictionary.Add("notify_type", value2);
            sortedDictionary.Add("order_no", text2);
            sortedDictionary.Add("order_amount", text3);
            sortedDictionary.Add("order_time", text4);
            sortedDictionary.Add("return_params", value3);
            sortedDictionary.Add("trade_no", value4);
            sortedDictionary.Add("trade_time", value5);
            sortedDictionary.Add("trade_status", text5);
            string text6 = "";

            foreach (System.Collections.Generic.KeyValuePair <string, string> current in sortedDictionary)
            {
                string text7 = text6;
                text6 = string.Concat(new string[]
                {
                    text7,
                    current.Key,
                    "=",
                    current.Value,
                    "&"
                });
            }
            string text8 = text6 + "key=" + str;

            text6 = Jiami.MD5(text8, "UTF-8");
            string text9;

            if (text6 == text)
            {
                if ("success" == text5)
                {
                    ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                    shareDetialInfo.OrderID   = text2;
                    shareDetialInfo.IPAddress = Utility.UserIP;
                    shareDetialInfo.PayAmount = System.Convert.ToDecimal(text3);
                    Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                    if (message.Success)
                    {
                        Log.Write("充值成功");
                        text9 = "充值成功";
                    }
                    else
                    {
                        Log.Write(message.Content);
                        text9 = message.Content;
                    }
                }
                else
                {
                    Log.Write("支付失败");
                    text9 = "支付失败";
                }
            }
            else
            {
                Log.Write(string.Concat(new string[]
                {
                    "签名错误—加密前:",
                    text8,
                    "—加密后:",
                    text6,
                    "—sign:",
                    text
                }));
                text9 = "签名错误";
            }
            this.label_result.Text       = text9;
            this.label_order_no.Text     = text2;
            this.label_order_amount.Text = text3;
            this.label_order_time.Text   = text4;
        }
Exemplo n.º 10
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string text     = base.Request["customerid"];
            string text2    = base.Request["sdorderno"];
            string text3    = base.Request["total_fee"];
            string text4    = base.Request["status"];
            string text5    = base.Request["paytype"];
            string text6    = base.Request["sdpayno"];
            string arg_78_0 = base.Request["remark"];
            string text7    = base.Request["sign"];

            if (!(text4 == "1"))
            {
                Log.Write("支付系统错误 opstate:" + text4 + " orderid:" + text2);
                base.Response.Write("支付系统错误");
            }
            else
            {
                string text8 = ApplicationSettings.Get("key_wt");
                string text9 = string.Format("customerid={0}&status={1}&sdpayno={2}&sdorderno={3}&total_fee={4}&paytype={5}&{6}", new object[]
                {
                    text,
                    text4,
                    text6,
                    text2,
                    text3,
                    text5,
                    text8
                });
                string text10 = TextEncrypt.EncryptPassword(text9);
                if (!(text7.ToLower() == text10.ToLower()))
                {
                    Log.Write(string.Concat(new string[]
                    {
                        "签名错误,signSource=",
                        text9,
                        " mySign=",
                        text10,
                        " Sign=",
                        text7
                    }));
                    base.Response.Write("签名错误");
                }
                else
                {
                    ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                    shareDetialInfo.OrderID   = text2;
                    shareDetialInfo.IPAddress = Utility.UserIP;
                    shareDetialInfo.PayAmount = System.Convert.ToDecimal(text3);
                    Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                    if (message.Success)
                    {
                        base.Response.Write("success");
                    }
                    else
                    {
                        Log.Write(message.Content);
                    }
                }
            }
        }
Exemplo n.º 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string partner = ApplicationSettings.Get("parter_jr");  //商户ID

            Log.Write("partner" + partner);
            string Key = ApplicationSettings.Get("key_jr");  //商户KEY

            Log.Write("Key" + Key);
            int orderstatus = Convert.ToInt32(Request["orderstatus"]);

            Log.Write("orderstatus" + orderstatus);
            string ordernumber = Request["ordernumber"];

            Log.Write("ordernumber" + ordernumber);
            string paymoney = Request["paymoney"];

            Log.Write("paymoney" + paymoney);
            string sign = Request["sign"];

            Log.Write("sign" + sign);
            string attach = Request["attach"];

            Log.Write("attach" + attach);
            string signSource = string.Format("partner={0}&ordernumber={1}&orderstatus={2}&paymoney={3}{4}", partner, ordernumber, orderstatus, paymoney, Key);

            Log.Write("sign" + sign);
            Log.Write("signSource" + signSource);
            if (sign.ToUpper() == JRAPI_NET_DEMO.JRAPICommon.MD5(signSource, false).ToUpper())//签名正确
            {
                ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                shareDetialInfo.OrderID   = ordernumber;
                shareDetialInfo.IPAddress = Utility.UserIP;
                shareDetialInfo.PayAmount = System.Convert.ToDecimal(paymoney);
                Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                if (message.Success)
                {
                    Log.Write("充值成功");
                    base.Response.Write("充值成功!订单号:" + ordernumber);
                }
                else
                {
                    var dt = aideTreasureFacade.GetDataSetBySql("select OrderStatus from OnLineOrder where orderid = '" + ordernumber + "'").Tables[0];
                    if (dt.Rows.Count > 0)
                    {
                        if (dt.Rows[0][0].ToStringOrEmpty() == "2")
                        {
                            Log.Write(message.Content);
                            base.Response.Write("充值成功!订单号:" + ordernumber);
                        }
                        else
                        {
                            Log.Write(message.Content);
                            base.Response.Write("充值失败:" + message.Content + "<br/>订单号:" + ordernumber);
                        }
                    }
                    else
                    {
                        Log.Write(message.Content);
                        base.Response.Write("充值失败:" + message.Content + "<br/>订单号:" + ordernumber);
                    }
                }
            }
            Response.Write("ok");
            Response.End();
        }
Exemplo n.º 12
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
        }
Exemplo n.º 13
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");
                }
            }
        }
Exemplo n.º 14
0
 /// <summary>
 /// 实卡充值
 /// </summary>
 /// <param name="associator"></param>
 /// <param name="operUserID"></param>
 /// <param name="accounts"></param>
 /// <param name="ip"></param>
 /// <returns></returns>
 public Message FilledLivcard(ShareDetialInfo detialInfo, string password)
 {
     return(treasureData.FilledLivcard(detialInfo, password));
 }
Exemplo n.º 15
0
 /// <summary>
 /// 手游充值
 /// </summary>
 /// <param name="olDetial"></param>
 /// <returns></returns>
 public Message FilliedMobile(ShareDetialInfo olDetial)
 {
     return(treasureData.FilliedMobile(olDetial));
 }
Exemplo n.º 16
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string text     = ApplicationSettings.Get("partner_qianyifu");
            string text2    = ApplicationSettings.Get("key_qianyifu");
            string text3    = base.Request["returncode"];
            string text4    = base.Request["orderid"];
            string text5    = base.Request["money"];
            string text6    = base.Request["sign"];
            string arg_6C_0 = base.Request["ext"];
            string password = string.Format("returncode={0}&userid={1}&orderid={2}&money={3}&keyvalue={4}", new object[]
            {
                text3,
                text,
                text4,
                text5,
                text2
            });

            if (!(text6.ToLower() == TextEncrypt.EncryptPassword(password).ToLower()))
            {
                Log.Write("签名错误");
                base.Response.Write("签名错误");
            }
            else
            {
                if (!(text3 == "1"))
                {
                    Log.Write("商户业务数据失败处理:" + text4);
                    base.Response.Write("商户业务数据失败处理");
                }
                else
                {
                    string url = "http://wangguan.qianyifu.com:8881/gateway/query.asp";
                    System.Collections.Generic.Dictionary <string, string> dictionary = new System.Collections.Generic.Dictionary <string, string>();
                    dictionary["userid"]  = text;
                    dictionary["orderid"] = text4;
                    password           = string.Format("userid={0}&orderid={1}&keyvalue={2}", dictionary["userid"], dictionary["orderid"], text2);
                    dictionary["sign"] = TextEncrypt.EncryptPassword(password).ToLower();
                    string param = PayHelper.PrepareSign(dictionary);
                    string text7 = HttpHelper.HttpRequest(url, param, "get", "GB2312");
                    if (!text7.Contains("成功"))
                    {
                        Log.Write(text7 + ":" + text4);
                        base.Response.Write(text7);
                    }
                    else
                    {
                        text5 = text7.Substring(text7.IndexOf(":") + 1).Replace("元", "");
                        ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                        shareDetialInfo.OrderID   = text4;
                        shareDetialInfo.IPAddress = Utility.UserIP;
                        shareDetialInfo.PayAmount = System.Convert.ToDecimal(text5);
                        Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                        if (message.Success)
                        {
                            base.Response.Write("success");
                        }
                        else
                        {
                            Log.Write(message.Content);
                        }
                    }
                }
            }
        }
Exemplo n.º 17
0
 /// <summary>
 /// 写苹果返回记录
 /// </summary>
 /// <param name="detialInfo"></param>
 /// <param name="receipt"></param>
 public void WriteReturnAppDetail(ShareDetialInfo detialInfo, AppReceiptInfo receipt)
 {
     treasureData.WriteReturnAppDetail(detialInfo, receipt);
 }
Exemplo n.º 18
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'字符串
                            ShareDetialInfo detailInfo = new ShareDetialInfo();
                            detailInfo.OrderID   = resultYB.R6_Order;
                            detailInfo.IPAddress = Utility.UserIP;
                            detailInfo.PayAmount = resultYB.R3_Amt;
                            treasureFacade.FilliedOnline(detailInfo, 0);

                            Response.Write("SUCCESS");
                        }
                    }
                    else
                    {
                        Response.Write("支付失败!");
                    }
                }
                else
                {
                    Response.Write("交易签名无效!");
                }
            }
        }
Exemplo n.º 19
0
        private void QueryOrder(string orgCode, string orgNo, string key)
        {
            string value = "2003";

            System.Collections.Generic.Dictionary <string, string> dictionary = new System.Collections.Generic.Dictionary <string, string>();
            dictionary["oldOrgNo"] = orgNo;
            string password = string.Format("orgCode={0}&oldOrgNo={1}&md5={2}", orgCode, orgNo, key);
            string value2   = TextEncrypt.EncryptPassword(password).ToLower();

            System.Collections.Generic.Dictionary <string, string> dictionary2 = new System.Collections.Generic.Dictionary <string, string>();
            dictionary2["orgCode"]     = orgCode;
            dictionary2["serviceCode"] = value;
            dictionary2["orgNo"]       = PayHelper.GetOrderIDByPrefix("");
            dictionary2["jsonData"]    = JsonHelper.SerializeObject(dictionary);
            dictionary2["sign"]        = value2;
            string param = PayHelper.PrepareSign(dictionary2);
            string json  = HttpHelper.HttpRequest(ApplicationSettings.Get("url_ft"), param);

            System.Collections.Generic.Dictionary <string, string> dictionary3 = JsonHelper.DeserializeJsonToObject <System.Collections.Generic.Dictionary <string, string> >(json);
            if (dictionary3.ContainsKey("respCode"))
            {
                if (!(dictionary3["respCode"] == "0000") && !(dictionary3["respCode"] == "0001"))
                {
                    base.Response.Write(dictionary3["respDesc"]);
                    Log.Write(dictionary3["respDesc"]);
                }
                else
                {
                    string json2 = dictionary3["jsonData"];
                    System.Collections.Generic.Dictionary <string, string> dictionary4 = JsonHelper.DeserializeJsonToObject <System.Collections.Generic.Dictionary <string, string> >(json2);
                    if (dictionary4.ContainsKey("status"))
                    {
                        if (!(dictionary4["status"] == "3"))
                        {
                            base.Response.Write(((notify_url.PayStatus)System.Convert.ToInt32(dictionary4["status"])).ToString());
                            Log.Write(((notify_url.PayStatus)System.Convert.ToInt32(dictionary4["status"])).ToString());
                        }
                        else
                        {
                            ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                            shareDetialInfo.OrderID   = orgNo;
                            shareDetialInfo.IPAddress = Utility.UserIP;
                            shareDetialInfo.PayAmount = System.Convert.ToDecimal(dictionary4["amt"]);
                            Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                            if (message.Success)
                            {
                                base.Response.Write("success");
                            }
                            else
                            {
                                Log.Write(message.Content);
                            }
                        }
                    }
                }
            }
            else
            {
                base.Response.Write("查询订单失败");
                Log.Write("查询订单失败");
            }
        }
Exemplo n.º 20
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();
        }
Exemplo n.º 21
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);
                        }
                    }
                }
            }
        }