Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //创建ResponseHandler实例
        ResponseHandler resHandler = new ResponseHandler(Context);

        resHandler.setKey(PayConfig.AppKey);
        LogUtil.WriteLog("Notify 页面  支付成功");

        //判断签名
        try
        {
            string error = "";
            if (resHandler.isWXsign(out error))
            {
                #region 协议参数=====================================
                //--------------协议参数--------------------------------------------------------
                //SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查
                string return_code = resHandler.getParameter("return_code");
                //返回信息,如非空,为错误原因签名失败参数格式校验错误
                string return_msg = resHandler.getParameter("return_msg");
                //微信分配的公众账号 ID
                string appid = resHandler.getParameter("appid");

                //以下字段在 return_code 为 SUCCESS 的时候有返回--------------------------------
                //微信支付分配的商户号
                string mch_id = resHandler.getParameter("mch_id");
                //微信支付分配的终端设备号
                string device_info = resHandler.getParameter("device_info");
                //微信分配的公众账号 ID
                string nonce_str = resHandler.getParameter("nonce_str");
                //业务结果 SUCCESS/FAIL
                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 的时候有返回---------------
                //-------------业务参数---------------------------------------------------------
                //用户在商户 appid 下的唯一标识
                string openid = resHandler.getParameter("openid");
                //用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
                string is_subscribe = resHandler.getParameter("is_subscribe");
                //JSAPI、NATIVE、MICROPAY、APP
                string trade_type = resHandler.getParameter("trade_type");
                //银行类型,采用字符串类型的银行标识
                string bank_type = resHandler.getParameter("bank_type");
                //订单总金额,单位为分
                string total_fee = resHandler.getParameter("total_fee");
                //货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY
                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");
                //支 付 完 成 时 间 , 格 式 为yyyyMMddhhmmss,如 2009 年12 月27日 9点 10分 10 秒表示为 20091227091010。时区为 GMT+8 beijing。该时间取自微信支付服务器
                string time_end = resHandler.getParameter("time_end");

                #endregion

                //支付成功
                // LogUtil.WriteLog("return_code" + return_code);
                string[] arr       = attach.Split(',');
                var      uid       = arr[0];
                var      fid       = arr[1] == null ? "0" : arr[1].ToString() == "" ? "0" : arr[1].ToString();
                var      price     = arr[2];
                var      ordercode = arr[3];
                var      pid       = arr[4];
                // LogUtil.WriteLog(uid + ";" + fid + ";" + price + ";" + ordercode + ";" + pid);


                Video vd = new Video();
                if (!string.IsNullOrEmpty(vd.GetVideoPrice(pid)))//查不到才用传过来的
                {
                    price = vd.GetVideoPrice(pid);
                }
                //判断是否已经是会员
                if (ph.Memberisfxs(uid))
                {
                    //再次购买,产品打1折
                    price = (Convert.ToDouble(price) * 0.1).ToString();
                }
                else
                {
                    //生成二维码,用户ID,FatherFXSID,
                    DeletePhoto(uid);//删除原有图片

                    string    sql     = "select headimgurl,nickname from ML_Member where nID=" + uid;
                    DataTable dt      = her.ExecuteDataTable(sql);
                    var       url     = makeUrl(uid);
                    var       picName = "";
                    if (dt.Rows.Count > 0)
                    {
                        var touurl = dt.Rows[0]["headimgurl"].ToString();
                        if (string.IsNullOrEmpty(touurl))
                        {
                            touurl = "http://tv.gongxue168.com/upload_img/getheadimg.jpg";
                        }
                        string pathtou = saveimage(touurl);
                        string erma    = sa.GetQrcode(uid);
                        string pathMs  = Server.MapPath("../upload_Img/maseters.jpg");
                        picName = Guid.NewGuid().ToString() + ".png";
                        string strPath  = HttpContext.Current.Request.FilePath + "/../../upload_Img/Pic"; //项目根路径
                        string SavePath = Server.MapPath(strPath + "/" + picName);                        //保存文件的路径
                        string text     = dt.Rows[0]["nickname"].ToString();

                        CombinImage(pathMs, saveQrcode(erma), pathtou, text).Save(SavePath);
                    }
                    //else
                    //{
                    //    picName = ImageAdd(url);
                    //}



                    bool success = Menber.MemberUpdateFxs(uid, 1, url, picName);//支付的时候就不改变,上级来源
                    if (success)
                    {
                        LogUtil.WriteLog("微店成功");
                    }
                    else
                    {
                        LogUtil.WriteLog("微店失败");
                    }
                }



                //插入订单
                LogUtil.WriteLog("notify:插入订单");
                if (ph.IsOrder(ordercode) == false)//已经存在就不要入库了
                {
                    bool   falg = false;
                    tongji tj   = new tongji();

                    string fatherID = "0";
                    //一旦用户的父级不是 总部,则该用户下的订单都属于 同一个父级
                    string sql = "select FatherFXSID from ML_Member where nID=" + uid;
                    if (Convert.ToInt32(her.ExecuteScalar(sql)) > 0)//已经有父级,就用之前的父级别
                    {
                        fatherID = her.ExecuteScalar(sql) == null ? "0" : her.ExecuteScalar(sql).ToString();
                    }


                    int pri = Convert.ToInt32(price);//测试结束,要注销掉* 10000
                    //插入订单
                    falg = ph.InsertOrder(uid, fatherID, ordercode, pri, pid, "微信支付");
                    LogUtil.WriteLog("notify:" + falg.ToString() + "订单号:" + ordercode + "__用户ID:" + uid);
                    //判断是否已经是会员
                    if (ph.Memberisfxs(uid) == false)
                    {
                        if (or.UpdateUserState(uid))
                        {
                            LogUtil.WriteLog("notify:会员成功");
                        }
                        else
                        {
                            LogUtil.WriteLog("notify:会员失败");
                        }
                    }
                    else
                    {
                        LogUtil.WriteLog("notify:已经是会员不更新");
                    }
                    LogUtil.WriteLog("佣金分配");
                    tj.insetTop1User(Convert.ToInt32(uid), Convert.ToInt32(fatherID), pri);
                    tj.insetTop2User(Convert.ToInt32(uid), Convert.ToInt32(fatherID), pri);
                    tj.insetTop3User(Convert.ToInt32(uid), Convert.ToInt32(fatherID), pri);
                    LogUtil.WriteLog("绩效分配");
                    tj.InsertJxBZ(Convert.ToInt32(uid), pri);
                    tj.InsertJxBZE(Convert.ToInt32(uid), pri);
                    tj.InsertJxXZ(Convert.ToInt32(uid), pri);
                    //3.会员等级升级
                    DateTime dt   = System.DateTime.Now;
                    string   time = dt.ToString("yyyy-MM-dd HH:mm:ss");
                    if (tj.UpdateLevel1())
                    {
                        WeiPay.LogUtil.WriteLog("班长查询,更新成功!" + time);
                    }
                    if (tj.UpdateLevel2())
                    {
                        WeiPay.LogUtil.WriteLog("班主任查询,更新成功!" + time);
                    }
                    if (tj.UpdateLevel3())
                    {
                        WeiPay.LogUtil.WriteLog("校长查询,更新成功!" + time);
                    }
                }



                if (!out_trade_no.Equals("") && return_code.Equals("SUCCESS") && result_code.Equals("SUCCESS"))
                {
                    //LogUtil.WriteLog("Notify 页面  支付成功,支付信息:商家订单号:" + out_trade_no + "、支付金额(分):" + total_fee + "、自定义参数:" + attach);

                    /**
                     *  这里输入用户逻辑操作,比如更新订单的支付状态**/
                    //or.UpdateUserState(attach);

                    /** * **/
                    //插入订单

                    //LogUtil.WriteLog("============ 单次支付结束 ===============");
                    Response.Write("success");
                    return;
                }
                else
                {
                    LogUtil.WriteLog("Notify 页面  支付失败,支付信息   total_fee= " + total_fee + "、err_code_des=" + err_code_des + "、result_code=" + result_code);
                }
            }
            else
            {
                LogUtil.WriteLog("Notify 页面  isWXsign= false ,错误信息:" + error);
            }
        }
        catch (Exception ee)
        {
            LogUtil.WriteLog("Notify 页面  发送异常错误:" + ee.Message);
        }

        Response.End();
    }