Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            mcode = this.Request.QueryString["mcode"];
            if (!string.IsNullOrEmpty(mcode))
            {
                mcode = EncryptHelper.XorEncryptStr(mcode);
                message = mcode;
                return;
            }
            //创建ResponseHandler实例
            ResponseHandler resHandler = new ResponseHandler(Context);
            resHandler.setKey(PayConfig.AppKey);
            //判断签名
            try
            {
                string error = "";
                if (resHandler.isWXsign(out error))
                {
                    #region 协议参数=====================================
                    //--------------协议参数--------------------------------------------------------
                    string return_code = resHandler.getParameter("return_code");
                    string return_msg = resHandler.getParameter("return_msg");
                    string appid = resHandler.getParameter("appid");
                    //以下字段在 return_code 为 SUCCESS 的时候有返回--------------------------------
                    string mch_id = resHandler.getParameter("mch_id");
                    string device_info = resHandler.getParameter("device_info");
                    string nonce_str = resHandler.getParameter("nonce_str");
                    string result_code = resHandler.getParameter("result_code");
                    string err_code = resHandler.getParameter("err_code");
                    string err_code_des = resHandler.getParameter("err_code_des");

                    //以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回---------------
                    string openid = resHandler.getParameter("openid");
                    string is_subscribe = resHandler.getParameter("is_subscribe");
                    string trade_type = resHandler.getParameter("trade_type");
                    string bank_type = resHandler.getParameter("bank_type");
                    string total_fee = resHandler.getParameter("total_fee");
                    string fee_type = resHandler.getParameter("fee_type");
                    string transaction_id = resHandler.getParameter("transaction_id");
                    string out_trade_no = resHandler.getParameter("out_trade_no");
                    string attach = resHandler.getParameter("attach");
                    string time_end = resHandler.getParameter("time_end");
                    #endregion
                    //支付成功
                    if (!out_trade_no.Equals("") && return_code.Equals("SUCCESS") && result_code.Equals("SUCCESS"))
                    {
                        /**
                         *  这里输入用户逻辑操作,比如更新订单的支付状态
                         *  这里可以发给用户信息操作
                         * **/
                        LogUtil.WriteLog("============ 支付成功 ===============");
                        //Response.Write("success");
                        var packageReqHandler = new RequestHandler(Context);
                        packageReqHandler.init();
                        packageReqHandler.setParameter("return_code", "SUCCESS");
                        packageReqHandler.setParameter("return_msg", "OK");
                        string data = packageReqHandler.parseXML();
                        LogUtil.WriteLog("Notify 页面  package(XML):" + data);
                        Response.Write(data);
                    }
                    else
                    {
                        message = err_code + err_code_des;
                        LogUtil.WriteLog("Notify  支付失败 " + err_code + ":" + err_code_des);
                    }
                }
                else
                {
                    //这里为我们自己调用显示的内容
                    LogUtil.WriteLog("Notify 页面  isWXsign= false ,显示自定义消息:" + mcode);

                }
            }
            catch (Exception ee)
            {
                LogUtil.WriteLog("Notify 页面  发送异常错误:" + ee.Message);
            }
        }
Esempio n. 2
0
        protected string UserOpenId = "";//微信用户openid

        protected void Page_Load(object sender, EventArgs e)
        {
           
            this.BindData();

            LogUtil.WriteLog("============ 单次支付开始 ===============");
            LogUtil.WriteLog(string.Format("传递支付参数:OrderSN={0}、Body={1}、TotalFee={2}、Attach={3}、UserOpenId={4}",
           this.OrderSN, this.Body, this.TotalFee, this.Attach,  this.UserOpenId));


            #region 支付操作============================


            #region 基本参数===========================
            //时间戳 
            TimeStamp = TenpayUtil.getTimestamp();
            //随机字符串 
            NonceStr = TenpayUtil.getNoncestr();

            int  wid = MyCommFun.RequestInt("wid");
            BLL.wx_payment_wxpay wxPayBll = new BLL.wx_payment_wxpay();
            Model.wx_payment_wxpay paymentInfo = wxPayBll.GetModelByWid(wid);

            //创建支付应答对象
            var packageReqHandler = new RequestHandler(Context);
            //初始化
            packageReqHandler.init();

            //设置package订单参数  具体参数列表请参考官方pdf文档,请勿随意设置
            packageReqHandler.setParameter("body", this.Body); //商品信息 127字符
            packageReqHandler.setParameter("appid", PayConfig.AppId);
            packageReqHandler.setParameter("mch_id", PayConfig.MchId);
            packageReqHandler.setParameter("nonce_str", NonceStr.ToLower());
            packageReqHandler.setParameter("notify_url", PayConfig.NotifyUrl);
            packageReqHandler.setParameter("openid", this.UserOpenId);
            packageReqHandler.setParameter("out_trade_no", this.OrderSN); //商家订单号
            packageReqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP
            packageReqHandler.setParameter("total_fee", this.TotalFee); //商品金额,以分为单位(money * 100).ToString()
            packageReqHandler.setParameter("trade_type", "JSAPI");
            if (!string.IsNullOrEmpty(this.Attach))
                packageReqHandler.setParameter("attach", this.Attach);//自定义参数 127字符
       
            #endregion

            #region sign===============================
            Sign = packageReqHandler.CreateMd5Sign("key", PayConfig.AppKey);
            LogUtil.WriteLog("WeiPay 页面  sign:" + Sign);
            #endregion

            #region 获取package包======================
            packageReqHandler.setParameter("sign", Sign);

            string data = packageReqHandler.parseXML();
            LogUtil.WriteLog("WeiPay 页面  package(XML):" + data);

            string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");
            LogUtil.WriteLog("WeiPay 页面  package(Back_XML):" + prepayXml);

            //获取预支付ID
            var xdoc = new XmlDocument();
            xdoc.LoadXml(prepayXml);
            XmlNode xn = xdoc.SelectSingleNode("xml");
            XmlNodeList xnl = xn.ChildNodes;
            if (xnl.Count > 7)
            {
                PrepayId = xnl[7].InnerText;
                Package = string.Format("prepay_id={0}", PrepayId);
                LogUtil.WriteLog("WeiPay 页面  package:" + Package);
            }
            #endregion

            #region 设置支付参数 输出页面  该部分参数请勿随意修改 ==============
            var paySignReqHandler = new RequestHandler(Context);
            paySignReqHandler.setParameter("appId", PayConfig.AppId);
            paySignReqHandler.setParameter("timeStamp", TimeStamp);
            paySignReqHandler.setParameter("nonceStr", NonceStr);
            paySignReqHandler.setParameter("package", Package);
            paySignReqHandler.setParameter("signType", "MD5");
            PaySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);

            LogUtil.WriteLog("WeiPay 页面  paySign:" + PaySign);
            #endregion
            #endregion
        }