Example #1
0
    public string Get_signature()
    {
        //加密/校验流程:
        //string noncestr = "noncestr=Wm3WZYTPz0wzccnW";
        //string timestamp = "timestamp=1414587457";
        //string jsapi_ticket = "jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg";
        string noncestr     = "noncestr=" + TenpayUtil.getNoncestr();
        string timestamp    = "timestamp=" + TenpayUtil.getTimestamp();
        string jsapi_ticket = "";

        if (HttpRuntime.Cache["jsapi_ticket"] == null)
        {
            //重新获取jsapi_ticket
        }
        else
        {
            jsapi_ticket = "jsapi_ticket=" + HttpRuntime.Cache["jsapi_ticket"].ToString();
        }
        //string url = "url=http://mp.weixin.qq.com?params=value";
        string url = "url=" + Request.Url.ToString();

        //1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,
        //使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1
        string[] ArrTmp = { noncestr, timestamp, jsapi_ticket, url };
        Array.Sort(ArrTmp);//字典排序
        //2.将三个参数字符串拼接成一个字符串进行sha1加密
        string tmpStr = string.Join("&", ArrTmp);

        tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
        tmpStr = tmpStr.ToLower();
        return(tmpStr);
    }
Example #2
0
        /// <summary>
        /// 第一种扫码生成二维码----生成二维码
        /// </summary>
        /// <returns></returns>
        public string GetCode()
        {
            //   weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX



            string appid = tenpay.WeChartConfigItem.appid;

            string mch_id = tenpay.WeChartConfigItem.mch_id;

            string product_id = "888654444";

            string time_stamp = TenpayUtil.getTimestamp();

            string nonce_str = TenpayUtil.getNoncestr();


            SortedDictionary <string, string> dic = new SortedDictionary <string, string>();

            dic.Add("appid", appid);
            dic.Add("mch_id", mch_id);
            dic.Add("product_id", product_id);
            dic.Add("time_stamp", time_stamp);
            dic.Add("nonce_str", nonce_str);
            string sign = TenpayUtil.getsign(dic, "43804496F28A4F0FBF1195AA0F1Abcde");

            return("weixin://wxpay/bizpayurl?sign=" + sign + "&appid=" + appid + "&mch_id=" + mch_id + "&product_id=" + product_id + "&time_stamp=" + time_stamp + "&nonce_str=" + nonce_str);
        }
Example #3
0
            public static string unifiedorder(string appid, string mch_id, string openid, string key, string body, string notify_url,
                                              string out_trade_no, int total_fee)
            {
                //string appId = this.accessToken.AppId;
                //string parameterValue = this.partnerId;
                var            spbill_create_ip = "127.0.0.1";
                string         noncestr         = TenpayUtil.getNoncestr();
                string         parameterValue2  = "JSAPI";
                RequestHandler requestHandler   = new RequestHandler(Encoding.UTF8);

                requestHandler.setKey(key);
                requestHandler.setParameter("appid", appid);
                requestHandler.setParameter("body", body);
                requestHandler.setParameter("mch_id", mch_id);
                requestHandler.setParameter("nonce_str", noncestr);
                requestHandler.setParameter("notify_url", notify_url);
                requestHandler.setParameter("openid", openid);
                requestHandler.setParameter("out_trade_no", out_trade_no);
                requestHandler.setParameter("spbill_create_ip", spbill_create_ip);
                requestHandler.setParameter("total_fee", total_fee.ToString());
                requestHandler.setParameter("trade_type", parameterValue2);
                string text    = requestHandler.createMd5Sign();
                string data    = requestHandler.parseXML();
                string address = "https://api.mch.weixin.qq.com/pay/unifiedorder";
                string xml     = new WebClient
                {
                    Encoding = Encoding.UTF8
                }.UploadString(address, "post", data);
                XmlDocument xmlDocument = new XmlDocument();

                xmlDocument.LoadXml(xml);
                XmlElement[] source    = xmlDocument.FirstChild.ChildNodes.Cast <XmlElement>().ToArray <XmlElement>();
                string       innerText = source.Single((XmlElement o) => o.Name == "return_code").InnerText;

                if (!(innerText != "SUCCESS"))
                {
                    return(source.Single((XmlElement o) => o.Name == "prepay_id").InnerText);
                }
                string text2 = (
                    from o in source
                    where o.Name == "err_code"
                    select o.InnerText).SingleOrDefault <string>();
                string text3 = (
                    from o in source
                    where o.Name == "err_code_des"
                    select o.InnerText).SingleOrDefault <string>();

                if (text2 != null && text3 != null)
                {
                    throw Error.WeiXinError(text2, text3);
                }
                string msg = (
                    from o in source
                    where o.Name == "return_msg"
                    select o.InnerText).SingleOrDefault <string>() ?? "ERROR";

                throw Error.WeiXinError(innerText, msg);
            }
Example #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string sp_billno = Request["order_no"];
            //当前时间 yyyyMMdd
            string date = DateTime.Now.ToString("yyyyMMdd");

            if (null == sp_billno)
            {
                //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一
                sp_billno = DateTime.Now.ToString("HHmmss") + TenpayUtil.BuildRandomStr(4);
            }
            else
            {
                sp_billno = Request["order_no"].ToString();
            }

            sp_billno = TenpayUtil.partner + sp_billno;


            RequestHandler outParams = new RequestHandler(Context);

            outParams.init();
            string productid = sp_billno;
            string timeStamp = TenpayUtil.getTimestamp();
            string nonceStr  = TenpayUtil.getNoncestr();

            RequestHandler Params = new RequestHandler(Context);

            Params.setParameter("appid", TenpayUtil.appid);
            Params.setParameter("appkey", TenpayUtil.appkey);
            Params.setParameter("noncestr", nonceStr);
            Params.setParameter("timestamp", timeStamp);
            Params.setParameter("productid", productid);
            string sign = Params.createSHA1Sign();

            Params.setParameter("sign", sign);


            parm = "weixin://wxpay/bizpayurl?sign=" + sign + "&appid=" + TenpayUtil.appid + "&productid=" + productid + "&timeStamp=" + timeStamp + "&nonceStr=" + nonceStr;
            parm = QRfromGoogle(parm);
        }
Example #5
0
        /// <summary>
        /// NATIVE第二种扫码支付
        /// </summary>
        /// <returns></returns>
        public string Code()
        {
            //根据什么生成订单号   价格  商品名称  附加信息

            UnifiedOrder order = new UnifiedOrder();

            order.appid       = tenpay.WeChartConfigItem.appid;
            order.attach      = "vinson1";
            order.body        = "极客美家NATIVE支付正式测试";//订单描述
            order.device_info = "";
            order.mch_id      = tenpay.WeChartConfigItem.mch_id;
            order.nonce_str   = TenpayUtil.getNoncestr();                                                                   //随机字符串
            order.notify_url  = "http://mobile.mj100.com/test/h?id=100";                                                    //回调网址

            order.out_trade_no     = "20156666978542323" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(); //订单号
            order.trade_type       = "NATIVE";
            order.spbill_create_ip = Request.UserHostAddress;
            order.total_fee        = 1;
            //order.total_fee = 1;
            string Code_url = tenpay.TenpayUtil.getCode_url(order, tenpay.WeChartConfigItem.key);//商户key

            return(Code_url);
        }
Example #6
0
        public int isSetVisitDate = 0;           //是否指定日期使用

        public void Page_Load(object sender, EventArgs e)
        {
            string u = Request.ServerVariables["HTTP_USER_AGENT"];

            bo = detectmobilebrowser.HttpUserAgent(u);



            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Request.Url:" + Request.Url.ToString());

            id = Request["id"].ConvertTo <string>("");

            string temp_id         = Request["id"].ConvertTo <string>("");
            string temp_id_speciid = "0";

            if (id.Contains("_"))//检验是否为购物车订单
            {
                cart = 1;
                var id_arr = id.Replace('_', ',');

                //如果包含规格产品
                var prospeciid = new B2bOrderData().SearchCartListBycartid(id_arr);
                if (prospeciid != null)
                {
                    if (prospeciid.Count == 0)
                    {
                        //没有此购物车,跳转购物车重新选择产品
                        Response.Redirect("/h5/order/cart.aspx");
                    }

                    id = "";
                    for (int i = 0; i < prospeciid.Count; i++)
                    {
                        id         += prospeciid[i].Id + ",";
                        id_speciid += prospeciid[i].Speciid + ",";

                        temp_id         = prospeciid[i].Id.ToString();
                        pro_id          = temp_id;
                        temp_id_speciid = prospeciid[i].Speciid.ToString();
                    }
                }
                else
                {
                    //没有此购物车,跳转购物车重新选择产品
                    Response.Redirect("/h5/order/cart.aspx");
                }
            }
            else
            {
                if (id.Contains("g"))//检验是否带规格
                {
                    var id_arr = id.Split('g');
                    id = id_arr[0];
                    //只针对直销单产品顶哦故
                    if (id_arr[1].Contains("s"))
                    {
                        var ids_arr = id_arr[1].Split('s');
                        id_speciid      = ids_arr[0];
                        temp_id_speciid = ids_arr[0];
                        serverid        = ids_arr[1];
                        serverid        = serverid.Replace("A", ",");
                    }
                    else
                    {
                        id_speciid      = id_arr[1];
                        temp_id_speciid = id_arr[1];
                    }

                    temp_id = id_arr[0];
                    pro_id  = id_arr[0];
                }
            }

            //对规格默认赋值为0
            if (temp_id_speciid == "")
            {
                temp_id_speciid = "0";
            }



            if (Request.Cookies["temp_userid"] != null)
            {
                userid = Request.Cookies["temp_userid"].Value;
            }
            else
            {
                userid = Domain_def.HuoQu_Temp_UserId();
                //Response.Cookies("userid").val();

                HttpCookie cookie = new HttpCookie("temp_userid");     //实例化HttpCookie类并添加值
                cookie.Value   = userid;
                cookie.Expires = DateTime.Now.AddDays(365);
                Response.Cookies.Add(cookie);
            }



            num = Request["num"].ConvertTo <int>(1);

            string aRequestUrl = Request.ServerVariables["SERVER_NAME"].ToLower();

            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "aRequestUrl:" + aRequestUrl);
            if (Domain_def.Domain_yanzheng(aRequestUrl))//如果符合shop101.etown.cn的格式
            {
                //先通过正则表达式获取COMid
                comid = Int32.Parse(Domain_def.Domain_Huoqu(aRequestUrl).ToString());
            }

            if (comid == 0)//如果非标准格式,查询 是否有绑定的域名
            {
                var domaincomid = B2bCompanyData.GetComId(RequestUrl);
                if (domaincomid != null)
                {
                    comid = domaincomid.Com_id;
                }
            }



            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "comid:" + comid);
            #region 判断是否含有微信端传递过来的code值,不含有自刷新
            code = Request.QueryString["code"].ConvertTo <string>("");
            if (code == "")
            {
                selfrefreshurl = WeiXinJsonData.GetFollowOpenLinkUrlAboutPay(comid, "http://shop" + comid + ".etown.cn/wxpay/micromart_pay_" + num + "_" + id + ".aspx");
                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "selfrefreshurl:" + selfrefreshurl);
                //Response.Redirect(refreshurl);
            }
            #endregion


            //buyuid = Request["buyuid"].ConvertTo<int>(0);
            //tocomid = Request["tocomid"].ConvertTo<int>(0);
            //uid = Request["uid"].ConvertTo<int>(0);
            //获取IP地址
            uip = CommonFunc.GetRealIP();


            nowdate  = DateTime.Now.ToString("yyyy-MM-dd");
            nowtoday = DateTime.Now;

            if (temp_id != "")
            {
                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "a");
                B2b_com_pro pro = new B2bComProData().GetProById(temp_id);

                if (pro == null)
                {
                    //没有查询到产品,跳转购物车重新选择产品
                    Response.Redirect("/h5/order/cart.aspx");
                }


                if (pro != null)
                {
                    //判断微信 是否是认证服务号
                    WeiXinBasic mbasic = new WeiXinBasicData().GetWxBasicByComId(pro.Com_id);
                    if (mbasic == null)
                    {
                        iswxsubscribenum = false;
                    }
                    else
                    {
                        if (mbasic.Weixintype == 1 || mbasic.Weixintype == 2)
                        {
                            iswxsubscribenum = true;
                        }
                        else
                        {
                            iswxsubscribenum = false;
                        }
                    }

                    #region 微信端 共享收货地址接口 参数获取

                    //根据产品判断商家是否含有自己的微信支付:a.含有的话支付到商家;b.没有的话支付到平台的微信公众号账户中
                    B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(pro.Com_id);
                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "b");
                    if (model != null)
                    {
                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "c");
                        //商家微信支付的所有参数都存在
                        if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                        {
                            appId     = model.Wx_appid;
                            appsecret = model.Wx_appkey;
                            //appkey = model.Wx_paysignkey;
                            //mchid = model.Wx_partnerid;
                            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "d");
                            issetfinancepaytype = true;
                            if (code != "")
                            {
                                string url =
                                    string.Format(
                                        "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
                                        appId, appsecret, code);
                                string returnStr = HttpUtil.Send("", url);
                                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "returnStr:" + returnStr);

                                var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);
                                if (obj.openid == null)
                                {
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "微信转发页面打开的,returnStr:" + returnStr);

                                    selfrefreshurl = WeiXinJsonData.GetFollowOpenLinkUrlAboutPay(comid, "http://shop" + comid + ".etown.cn/wxpay/micromart_pay_" + num + "_" + id + ".aspx");
                                    Response.Redirect(selfrefreshurl);
                                }

                                if (obj != null)
                                {
                                    timeStamp          = TenpayUtil.getTimestamp();
                                    nonceStr           = TenpayUtil.getNoncestr();
                                    access_tokenstring = obj.access_token;
                                    openid             = obj.openid;

                                    HttpCookie newCookie = new HttpCookie("openid");
                                    //往Cookie里面添加值,均为键/值对。Cookie可以根据关键字寻找到相应的值
                                    newCookie.Values.Add("openid", openid);
                                    newCookie.Expires = DateTime.Now.AddDays(365);
                                    //Cookie的设置页面要用Response
                                    Response.AppendCookie(newCookie);

                                    //签名字段:appId、url(当前网页url)、timestamp、noncestr、accessToken
                                    var paySignReqHandler = new RequestHandler(Context);
                                    paySignReqHandler.setParameter("appid", appId);
                                    paySignReqHandler.setParameter("timestamp", timeStamp);
                                    paySignReqHandler.setParameter("noncestr", nonceStr);
                                    paySignReqHandler.setParameter("url", Request.Url.ToString());
                                    paySignReqHandler.setParameter("accesstoken", obj.access_token);
                                    //addrSign = paySignReqHandler.CreateAddrSign();
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", appId + ";" + timeStamp + ";" + nonceStr + ";" + Request.Url.ToString() + ";" + obj.access_token + ";" + addrSign);
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Request.Url:" + Request.Url.ToString());
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "addrSign:" + addrSign);
                                }
                            }
                        }
                    }

                    #endregion


                    //票务产品,判断 是否抢购/限购,是的话 作废超时未支付订单,完成回滚操作
                    if (pro_servertype == 1)
                    {
                        if (pro.Ispanicbuy == 1 || pro.Ispanicbuy == 2)
                        {
                            int rs = new B2bComProData().CancelOvertimeOrder(pro);
                        }
                    }

                    iscanbook      = new B2bComProData().IsYouxiao(pro.Id, pro.Server_type, pro.Pro_start, pro.Pro_end, pro.Pro_state);//判断产品是否有效:1.票务,直接判断有效期 和产品上线状态2.酒店,跟团游,当地游 则判断是否含有有效的房态/团期 以及产品上下线状态
                    pro_servertype = pro.Server_type;
                    pickuppoint    = pro.pickuppoint;
                    dropoffpoint   = pro.dropoffpoint;
                    issetidcard    = pro.issetidcard;
                    isSetVisitDate = pro.isSetVisitDate;
                    childreduce    = pro.Childreduce;
                    pro_start      = pro.Pro_start;
                    pro_end        = pro.Pro_end;
                }
                if (pro.Ispanicbuy == 1)
                {
                    panic_begintime  = pro.Panic_begintime;
                    panicbuy_endtime = pro.Panicbuy_endtime;


                    TimeSpan tss = pro.Panic_begintime - nowtoday;
                    var      day = tss.Days * 24 * 3600;;  //这是相差的天数
                    var      h   = tss.Hours * 3600;       //这是相差的小时数,
                    var      m   = tss.Minutes * 60;
                    var      s   = tss.Seconds;
                    shijiacha = day + h + m + s;
                }
                projectid = pro.Projectid;
                comid     = pro.Com_id;

                if (temp_id_speciid != "0") //如果规格非默认值,有规格传递,查询规格的价格 及名称
                {                           //如果含有规格
                    B2b_com_pro prospeciid = new B2bComProData().GetProspeciidById(temp_id, int.Parse(temp_id_speciid));
                    if (prospeciid != null)
                    {
                        pro_name = pro.Pro_name + prospeciid.Pro_name;
                        price    = prospeciid.Advise_price;
                    }
                }
                else
                {
                    pro_name = pro.Pro_name;
                    price    = pro.Advise_price;
                }

                //如果有服务,增加服务价格
                if (serverid != "")
                {
                    var server_arr = serverid.Split(',');
                    for (int i = 0; i < server_arr.Length; i++)
                    {
                        if (server_arr[i] != "")
                        {
                            var rentsrever = new RentserverData().Rentserverbyidandproid(int.Parse(server_arr[i]), int.Parse(temp_id));
                            if (rentsrever != null)
                            {
                                price += rentsrever.saleprice + rentsrever.serverDepositprice;
                            }
                        }
                    }
                }


                imgurl = FileSerivce.GetImgUrl(pro.Imgurl);
                if (price == 0)
                {
                    price = 0;
                }
                else
                {
                    CommonFunc.OperTwoDecimal(price.ToString());
                    //price = price.IndexOf(".") != -1 ? price.Substring(0, price.IndexOf(".")) : price;
                }

                nowdate = DateTime.Now.ToString("yyyy-MM-dd");
                if (pro.Service_Contain != "")
                {
                    summary = "包含服务:" + pro.Service_Contain;
                }

                if (pro.Service_NotContain != "")
                {
                    sumaryend = summary + "</br> 不包含服务:" + pro.Service_NotContain + "</br> 注意事项:" + pro.Precautions;
                }

                if (pro.Precautions != "")
                {
                    sumaryend = summary + "</br> 注意事项:" + pro.Precautions;
                }
                //如果服务类型是 票务;  则备注信息中 显示 电子码使用限制
                if (pro.Server_type == 1)
                {
                    if (pro.Iscanuseonsameday == 0)//电子码当天不可用
                    {
                        sumaryend = "此产品当天预订不可用<br>" + sumaryend;
                    }
                    if (pro.Iscanuseonsameday == 1)//电子码当天可用
                    {
                        sumaryend = "此产品当天预订可用<br>" + sumaryend;
                    }
                    if (pro.Iscanuseonsameday == 2)//电子码出票2小时内不可用
                    {
                        sumaryend = "此产品出票2小时内不可用<br>" + sumaryend;
                    }
                }
                if (summary.Length > 30)
                {
                    summary = summary.Substring(0, 30);
                }
                if (summary.Length > 150)
                {
                    summary = summary.Substring(0, 150) + "...";
                }
                remark  = pro.Pro_Remark;
                pro_num = pro.Pro_number;
                if (pro_num == 0)
                {
                    pro_max = 100;
                    pro_min = 1;
                }
                else
                {
                    pro_min = 1;
                    pro_max = pro_num;
                }
                pro_explain = pro.Pro_explain;



                #region 产品有效期判定(微信模板--门票订单预订成功通知 中也有用到)
                provalidatemethod = pro.ProValidateMethod; //判断 1按产品有效期,2指定有效期
                appointdate       = pro.Appointdata;       //1=一星期,,2=1个月,3=3个月,4=6个月,5=一年
                iscanuseonsameday = pro.Iscanuseonsameday; //1当天可用,0当天不可用

                pro_end = pro.Pro_end;
                //返回有效期
                pro_youxiaoqi = new B2bComProData().GetPro_Youxiaoqi(pro.Pro_start, pro.Pro_end, provalidatemethod, appointdate, iscanuseonsameday);

                #endregion



                var commodel = B2bCompanyData.GetCompany(comid);
                if (commodel != null)
                {
                    if (commodel.B2bcompanyinfo != null)
                    {
                        Wxfocus_url    = commodel.B2bcompanyinfo.Wxfocus_url;
                        Wxfocus_author = commodel.B2bcompanyinfo.Wxfocus_author;;
                    }
                }


                var saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                if (saleset != null)
                {
                    phone = saleset.Service_Phone;
                }

                //查询项目电话,如果有项目电话调取项目电话
                var projectdata  = new B2b_com_projectData();
                var projectmodel = projectdata.GetProject(projectid, comid);
                if (projectmodel != null)
                {
                    if (projectmodel.Mobile != "")
                    {
                        phone = projectmodel.Mobile;
                    }
                }


                //从cookie中得到微信号
                if (Request.Cookies["openid"] != null)
                {
                    openid = Request.Cookies["openid"].Value;
                }
                B2bCrmData b2b_crm = new B2bCrmData();
                if (openid != "")
                {
                    B2b_crm b2bmodle = b2b_crm.b2b_crmH5(openid, comid);
                    if (b2bmodle != null)
                    {
                        Imprest  = b2bmodle.Imprest;
                        Integral = b2bmodle.Integral;
                    }
                }
            }

            //如果是购物车产品,整体更换计算方式,以上至是读一个产品信息,并且读取用户的分销信息等
            if (cart == 1)
            {
                cart_num = ""; //数量
                price    = 0;  //单价


                //获取购物车 的用户ID

                if (Request.Cookies["temp_userid"] != null)
                {
                    userid = Request.Cookies["temp_userid"].Value;
                }


                cart_id = id; //赋值方便区分



                if (userid != "")
                {
                    var list = new B2bOrderData().SearchUserCartList(comid, userid, cart_id, id_speciid);
                    if (list != null)
                    {
                        cart_id = "";
                        for (int i = 0; i < list.Count; i++)
                        {
                            cart_num += list[i].U_num + ",";
                            cart_id  += list[i].Id + ",";

                            if (list[i].Speciid == 0)
                            {
                                price += list[i].U_num * list[i].Advise_price; //重新计算价格
                            }
                            else
                            {
                                B2b_com_pro prospeciid = new B2bComProData().GetProspeciidById(list[i].Id.ToString(), list[i].Speciid);//如果含有规格参数 读取规格
                                if (prospeciid != null)
                                {
                                    price += list[i].U_num * prospeciid.Advise_price; //重新计算价格
                                }
                            }
                        }

                        if (cart_num != "")
                        {
                            if (cart_num.Substring(cart_num.Length - 1, 1) == ",")
                            {
                                cart_num = cart_num.Substring(0, cart_num.Length - 1);
                            }
                        }
                        if (cart_id != "")
                        {
                            if (cart_id.Substring(cart_id.Length - 1, 1) == ",")
                            {
                                cart_id = cart_id.Substring(0, cart_id.Length - 1);
                            }
                        }
                    }
                }
            }


            if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
            {
                //先通过正则表达式获取COMid
                comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl).ToString());
                if (comid == 0)
                {
                    comid = new WeiXinBasicData().GetWeiXinBasicByDomain(RequestUrl).Comid;
                }
                if (comid != 0)
                {
                    var commodel = B2bCompanyData.GetCompany(comid);

                    if (commodel != null)
                    {
                        if (commodel.B2bcompanyinfo != null)
                        {
                            Wxfocus_url    = commodel.B2bcompanyinfo.Wxfocus_url;
                            Wxfocus_author = commodel.B2bcompanyinfo.Wxfocus_author;
                            weixinname     = commodel.B2bcompanyinfo.Weixinname;
                            Scenic_intro   = commodel.B2bcompanyinfo.Scenic_intro;
                        }

                        title = commodel.Com_name;
                    }


                    B2b_company_saleset pro = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                    if (pro != null)
                    {
                        comlogo = FileSerivce.GetImgUrl(pro.Smalllogo.ConvertTo <int>(0));
                        logoimg = comlogo;
                    }

                    ////获取微信平台端code
                    //string weixincode = Request["code"].ConvertTo<string>("");
                    ////获取微信号和一次性密码
                    //openid = Request["openid"].ConvertTo<string>("");
                    //string weixinpass = Request["weixinpass"].ConvertTo<string>("");

                    ////获得会员信息
                    //GetCrmInfo(weixincode, openid, weixinpass);
                }
            }


            //获取BANNER,及logo
            //if (comid != 0)
            //{


            //    //根据公司id得到 直销设置
            //    B2b_company_saleset saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
            //    if (saleset != null)
            //    {
            //        logoimg = FileSerivce.GetImgUrl(saleset.Smalllogo.ConvertTo<int>(0));
            //    }

            //}



            //微信转发访问归属渠道
            if (uid != 0)//必须记录转发用户信息才能继续统计
            {
                //判断有转发人的渠道
                var    crmdata       = new B2bCrmData();
                var    pro           = crmdata.Readuser(uid, comid);//读取转发人用户信息
                string zhuanfa_phone = "";
                if (pro != null)
                {
                    zhuanfa_phone = pro.Phone;
                }

                if (zhuanfa_phone != "")
                {                                                                                  //转发人手机存在
                    MemberChannelData channeldata = new MemberChannelData();
                    var channeinfo = channeldata.GetPhoneComIdChannelDetail(zhuanfa_phone, comid); //查询渠道
                    if (channeinfo != null)
                    {
                        //转发人渠道记录COOKI
                        HttpCookie cookie = new HttpCookie("ZF_ChanneId");     //实例化HttpCookie类并添加值
                        cookie.Value   = channeinfo.Id.ToString();
                        cookie.Expires = DateTime.Now.AddDays(120);
                        Response.Cookies.Add(cookie);
                    }
                }
            }
        }
Example #7
0
        /// <summary>
        /// 支付
        /// </summary>
        public ActionResult Pay()
        {
            //订单id
            int oid = WebHelper.GetQueryInt("oid");

            //订单信息
            OrderInfo orderInfo = Orders.GetOrderByOid(oid);

            if (orderInfo == null || orderInfo.OrderState != (int)OrderState.WaitPaying)
            {
                return(Content(""));
            }

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

            #region 基本参数===========================
            //商户订单号
            string outTradeNo = orderInfo.Oid.ToString() + Randoms.CreateRandomValue(10, false);
            //订单名称
            string subject = BSPConfig.ShopConfig.SiteTitle + "购物";
            //付款金额
            string totalFee = ((int)(orderInfo.SurplusMoney * 100)).ToString();
            //时间戳
            string timeStamp = TenpayUtil.getTimestamp();
            //随机字符串
            string nonceStr = TenpayUtil.getNoncestr();
            //服务器异步通知页面路径
            string notifyUrl = string.Format("http://{0}/app/wechat/notify", BSPConfig.ShopConfig.SiteUrl);

            LogUtil.WriteLog("totalFee" + totalFee);


            //string access_token = "";
            //string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", PayConfig.AppId, PayConfig.AppSecret);
            //string returnStr = HttpUtil.Get_Http(url, 120000);
            //LogUtil.WriteLog("returnStr 页面  returnStr:" + returnStr);
            //if (!returnStr.Contains("access_token"))
            //{
            //    return Content("");
            //}
            //else
            //{
            //    string[] list = returnStr.Split(',');
            //    access_token = list[0].Split(':')[1].Trim('"');
            //}

            //LogUtil.WriteLog("access_token 页面  access_token:" + access_token);

            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            //初始化
            packageReqHandler.init();

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

            #endregion

            #region sign===============================
            string 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
            string      prepayId = "";
            string      package  = "";
            XmlDocument 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 设置支付参数 输出页面  该部分参数请勿随意修改 ==============

            nonceStr = TenpayUtil.getNoncestr();
            RequestHandler paySignReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            paySignReqHandler.setParameter("appid", PayConfig.AppId);
            paySignReqHandler.setParameter("noncestr", nonceStr.ToLower());
            paySignReqHandler.setParameter("package", "Sign=WXPay");
            paySignReqHandler.setParameter("partnerid", PayConfig.MchId);
            paySignReqHandler.setParameter("prepayid", prepayId);
            paySignReqHandler.setParameter("timestamp", timeStamp);
            string paySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);

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

            return(Content(string.Format("{0}\"appId\":\"{1}\",\"partnerId\":\"{2}\",\"prepayId\":\"{3}\",\"packageValue\":\"{4}\",\"nonceStr\":\"{5}\",\"timeStamp\":\"{6}\",\"sign\":\"{7}\"{8}",
                                         "{",
                                         PayConfig.AppId,
                                         PayConfig.MchId,
                                         prepayId,
                                         "Sign=WXPay",
                                         nonceStr.ToLower(),
                                         timeStamp,
                                         paySign,
                                         "}")));
        }
Example #8
0
        public void Page_Load(object sender, EventArgs e)
        {
            string u = Request.ServerVariables["HTTP_USER_AGENT"];

            bo = detectmobilebrowser.HttpUserAgent(u);


            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Request.Url:" + Request.Url.ToString());

            id = Request["id"].ConvertTo <string>("");
            string temp_id = Request["id"].ConvertTo <string>("");


            if (Request.Cookies["temp_userid"] != null)
            {
                userid = Request.Cookies["temp_userid"].Value;
            }
            else
            {
                userid = Domain_def.HuoQu_Temp_UserId();
                //Response.Cookies("userid").val();

                HttpCookie cookie = new HttpCookie("temp_userid");     //实例化HttpCookie类并添加值
                cookie.Value   = userid;
                cookie.Expires = DateTime.Now.AddDays(365);
                Response.Cookies.Add(cookie);
            }


            //取消超时订单
            B2b_com_pro pro_cannelorder = new B2b_com_pro();

            pro_cannelorder.Server_type = 0;
            int rs_cannelorder = new B2bComProData().CancelOvertimeOrder(pro_cannelorder);



            num = Request["num"].ConvertTo <int>(1);

            string aRequestUrl = Request.ServerVariables["SERVER_NAME"].ToLower();

            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "aRequestUrl:" + aRequestUrl);
            if (Domain_def.Domain_yanzheng(aRequestUrl))//如果符合shop101.etown.cn的格式
            {
                //先通过正则表达式获取COMid
                comid = Int32.Parse(Domain_def.Domain_Huoqu(aRequestUrl).ToString());
            }

            if (comid == 0)//如果非标准格式,查询 是否有绑定的域名
            {
                var domaincomid = B2bCompanyData.GetComId(RequestUrl);
                if (domaincomid != null)
                {
                    comid = domaincomid.Com_id;
                }
            }



            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "comid:" + comid);
            #region 判断是否含有微信端传递过来的code值,不含有自刷新
            code = Request.QueryString["code"].ConvertTo <string>("");
            if (code == "")
            {
                selfrefreshurl = WeiXinJsonData.GetFollowOpenLinkUrlAboutPay(comid, "http://shop" + comid + ".etown.cn/wxpay/micromart_pay_" + num + "_" + id + ".aspx");
                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "selfrefreshurl:" + selfrefreshurl);
                //Response.Redirect(refreshurl);
            }
            #endregion


            //buyuid = Request["buyuid"].ConvertTo<int>(0);
            //tocomid = Request["tocomid"].ConvertTo<int>(0);
            //uid = Request["uid"].ConvertTo<int>(0);
            //获取IP地址
            uip = CommonFunc.GetRealIP();


            nowdate  = DateTime.Now.ToString("yyyy-MM-dd");
            nowtoday = DateTime.Now;

            if (temp_id != "")
            {
                B2bOrderData orderdata = new B2bOrderData();
                var          pro       = orderdata.GetOrderById(int.Parse(temp_id));
                if (pro != null)
                {
                    orderstatus = EnumUtils.GetName((OrderStatus)pro.Order_state);
                    order_state = pro.Order_state;
                    subtime     = pro.U_subdate.ToString("yyyy/MM/dd hh:mm:ss");
                    paystate    = pro.Pay_state;

                    #region 微信端 共享收货地址接口 参数获取

                    //根据产品判断商家是否含有自己的微信支付:a.含有的话支付到商家;b.没有的话支付到平台的微信公众号账户中
                    B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(pro.Comid);
                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "b");
                    if (model != null)
                    {
                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "c");
                        //商家微信支付的所有参数都存在
                        if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                        {
                            appId     = model.Wx_appid;
                            appsecret = model.Wx_appkey;
                            //appkey = model.Wx_paysignkey;
                            //mchid = model.Wx_partnerid;
                            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "d");
                            issetfinancepaytype = true;
                            if (code != "")
                            {
                                string url =
                                    string.Format(
                                        "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
                                        appId, appsecret, code);
                                string returnStr = HttpUtil.Send("", url);
                                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "returnStr:" + returnStr);

                                var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);
                                if (obj.openid == null)
                                {
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "微信转发页面打开的,returnStr:" + returnStr);

                                    selfrefreshurl = WeiXinJsonData.GetFollowOpenLinkUrlAboutPay(comid, "http://shop" + comid + ".etown.cn/wxpay/micromart_pay_" + num + "_" + id + ".aspx");
                                    Response.Redirect(selfrefreshurl);
                                }

                                if (obj != null)
                                {
                                    timeStamp          = TenpayUtil.getTimestamp();
                                    nonceStr           = TenpayUtil.getNoncestr();
                                    access_tokenstring = obj.access_token;
                                    openid             = obj.openid;

                                    HttpCookie newCookie = new HttpCookie("openid");
                                    //往Cookie里面添加值,均为键/值对。Cookie可以根据关键字寻找到相应的值
                                    newCookie.Values.Add("openid", openid);
                                    newCookie.Expires = DateTime.Now.AddDays(365);
                                    //Cookie的设置页面要用Response
                                    Response.AppendCookie(newCookie);

                                    //签名字段:appId、url(当前网页url)、timestamp、noncestr、accessToken
                                    var paySignReqHandler = new RequestHandler(Context);
                                    paySignReqHandler.setParameter("appid", appId);
                                    paySignReqHandler.setParameter("timestamp", timeStamp);
                                    paySignReqHandler.setParameter("noncestr", nonceStr);
                                    paySignReqHandler.setParameter("url", Request.Url.ToString());
                                    paySignReqHandler.setParameter("accesstoken", obj.access_token);
                                    //addrSign = paySignReqHandler.CreateAddrSign();
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", appId + ";" + timeStamp + ";" + nonceStr + ";" + Request.Url.ToString() + ";" + obj.access_token + ";" + addrSign);
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Request.Url:" + Request.Url.ToString());
                                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "addrSign:" + addrSign);
                                }
                            }
                        }
                    }

                    #endregion



                    address = pro.U_name + " " + pro.U_phone + "<br>" + pro.Province + " " + pro.City + " " + pro.Address;



                    if (pro.Shopcartid == 0)
                    {
                        B2b_com_pro proinfo = new B2bComProData().GetProById(pro.Pro_id.ToString(), pro.Speciid, pro.channelcoachid);
                        if (proinfo != null)
                        {
                            pro_name    = proinfo.Pro_name;
                            imgurl      = FileSerivce.GetImgUrl(proinfo.Imgurl);
                            Ispanicbuy  = proinfo.Ispanicbuy;
                            Server_type = proinfo.Server_type;
                        }
                        else
                        {
                            pro_name = "对订单进行支付";
                        }
                        pay_price = Math.Round(pro.Pay_price, 2);
                        pro_price = Math.Round(pro.Pay_price * pro.U_num, 2);
                        price     = Math.Round(pro.Pay_price * pro.U_num - pro.Integral1 - pro.Imprest1 + pro.Express, 2);
                        num       = pro.U_num;
                        Express   = Math.Round(pro.Express, 2);
                    }
                    else
                    { //如果是购物车订单,必须一起支付
                        cart_id  = pro.Shopcartid;
                        cart     = 1;
                        price    = Math.Round(orderdata.GetCartOrderMoneyById(pro.Id), 2);
                        pro_name = orderdata.GetCartOrderProById(pro.Id);
                        Express  = Math.Round(orderdata.GetCartOrderExpressMoneyById(pro.Id), 2);
                        num      = 1;
                        var shopcart = orderdata.shopcartorder(pro.Shopcartid);
                        if (shopcart != null)
                        {
                            for (int i = 0; i < shopcart.Count; i++)
                            {
                                pro_price += shopcart[i].Pay_price * shopcart[i].U_num;
                                proid     += shopcart[i].Pro_id + ",";
                            }
                        }

                        pro_price = Math.Round(pro_price, 2);
                    }
                }



                if (price == 0)
                {
                    price = 0;
                }
                else
                {
                    CommonFunc.OperTwoDecimal(price.ToString());
                    //price = price.IndexOf(".") != -1 ? price.Substring(0, price.IndexOf(".")) : price;
                }

                nowdate = DateTime.Now.ToString("yyyy-MM-dd");

                if (summary.Length > 30)
                {
                    summary = summary.Substring(0, 30);
                }
                if (summary.Length > 150)
                {
                    summary = summary.Substring(0, 150) + "...";
                }
                var commodel = B2bCompanyData.GetCompany(comid);
                if (commodel != null)
                {
                    if (commodel.B2bcompanyinfo != null)
                    {
                        Wxfocus_url    = commodel.B2bcompanyinfo.Wxfocus_url;
                        Wxfocus_author = commodel.B2bcompanyinfo.Wxfocus_author;;
                    }
                }


                var saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                if (saleset != null)
                {
                    phone = saleset.Service_Phone;
                }

                //查询项目电话,如果有项目电话调取项目电话
                var projectdata  = new B2b_com_projectData();
                var projectmodel = projectdata.GetProject(projectid, comid);
                if (projectmodel != null)
                {
                    if (projectmodel.Mobile != "")
                    {
                        phone = projectmodel.Mobile;
                    }
                }


                //从cookie中得到微信号
                if (Request.Cookies["openid"] != null)
                {
                    openid = Request.Cookies["openid"].Value;
                }
                B2bCrmData b2b_crm = new B2bCrmData();
                if (openid != "")
                {
                    B2b_crm b2bmodle = b2b_crm.b2b_crmH5(openid, comid);
                    if (b2bmodle != null)
                    {
                        Imprest  = b2bmodle.Imprest;
                        Integral = b2bmodle.Integral;
                    }
                }
            }


            if (Domain_def.Domain_yanzheng(RequestUrl))//如果符合shop101.etown.cn的格式,则从多微信商户基本信息表中获取comid
            {
                //先通过正则表达式获取COMid
                comid = Int32.Parse(Domain_def.Domain_Huoqu(RequestUrl).ToString());
                if (comid == 0)
                {
                    comid = new WeiXinBasicData().GetWeiXinBasicByDomain(RequestUrl).Comid;
                }
                if (comid != 0)
                {
                    var commodel = B2bCompanyData.GetCompany(comid);

                    if (commodel != null)
                    {
                        if (commodel.B2bcompanyinfo != null)
                        {
                            Wxfocus_url    = commodel.B2bcompanyinfo.Wxfocus_url;
                            Wxfocus_author = commodel.B2bcompanyinfo.Wxfocus_author;
                            weixinname     = commodel.B2bcompanyinfo.Weixinname;
                            Scenic_intro   = commodel.B2bcompanyinfo.Scenic_intro;
                        }

                        title = commodel.Com_name;
                    }


                    B2b_company_saleset pro = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                    if (pro != null)
                    {
                        comlogo = FileSerivce.GetImgUrl(pro.Smalllogo.ConvertTo <int>(0));
                    }

                    ////获取微信平台端code
                    //string weixincode = Request["code"].ConvertTo<string>("");
                    ////获取微信号和一次性密码
                    //openid = Request["openid"].ConvertTo<string>("");
                    //string weixinpass = Request["weixinpass"].ConvertTo<string>("");

                    ////获得会员信息
                    //GetCrmInfo(weixincode, openid, weixinpass);
                }
            }


            //获取BANNER,及logo
            if (comid != 0)
            {
                //根据公司id得到 直销设置
                B2b_company_saleset saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                if (saleset != null)
                {
                    logoimg = FileSerivce.GetImgUrl(saleset.Smalllogo.ConvertTo <int>(0));
                }
            }



            //微信转发访问归属渠道
            if (uid != 0)//必须记录转发用户信息才能继续统计
            {
                //判断有转发人的渠道
                var    crmdata       = new B2bCrmData();
                var    pro           = crmdata.Readuser(uid, comid);//读取转发人用户信息
                string zhuanfa_phone = "";
                if (pro != null)
                {
                    zhuanfa_phone = pro.Phone;
                }

                if (zhuanfa_phone != "")
                {                                                                                  //转发人手机存在
                    MemberChannelData channeldata = new MemberChannelData();
                    var channeinfo = channeldata.GetPhoneComIdChannelDetail(zhuanfa_phone, comid); //查询渠道
                    if (channeinfo != null)
                    {
                        //转发人渠道记录COOKI
                        HttpCookie cookie = new HttpCookie("ZF_ChanneId");     //实例化HttpCookie类并添加值
                        cookie.Value   = channeinfo.Id.ToString();
                        cookie.Expires = DateTime.Now.AddDays(120);
                        Response.Cookies.Add(cookie);
                    }
                }
            }
        }
Example #9
0
    /// <summary>
    /// 生成欲支付订单
    /// </summary>
    private void PayMoney()
    {
        #region 支付操作============================


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

        //创建支付应答对象
        var packageReqHandler = new RequestHandler(Context);
        //初始化
        packageReqHandler.init();
        Random   ra      = new Random();
        DateTime timeNow = System.DateTime.Now;
        orderCode       = "MB" + nID + timeNow.ToString("yyyyMMddhhmmss") + ra.Next(0, 1000).ToString();
        ordercode.Value = orderCode;
        //var pr = StringDelHTML.PriceToIntUp(proPrice);
        //设置package订单参数  具体参数列表请参考官方pdf文档,请勿随意设置
        packageReqHandler.setParameter("body", "MissBeauty视频购买"); //商品信息 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", orderCode);                        //商家订单号
        packageReqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP
        packageReqHandler.setParameter("total_fee", (orderprice.Value).ToString());       //商品金额,以分为单位(money * 100).ToString()//Convert.ToInt32(0.01)*100).ToString()
        packageReqHandler.setParameter("trade_type", "JSAPI");
        if (!string.IsNullOrEmpty(nID))
        {
            string fatherid = Request.QueryString["agent"] == null ? "0" : Request.QueryString["agent"].ToString() == "" ? "0" : Request.QueryString["agent"].ToString();
            string attach   = nID + "," + fatherid + "," + proPrice + "," + orderCode + "," + pID;
            packageReqHandler.setParameter("attach", 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
    }
Example #10
0
        /// <summary>
        /// 发红包啊
        /// </summary>
        /// <returns></returns>
        public string FHB()
        {
            tenpay.RedPacket p = new RedPacket()
            {
                nonce_str    = TenpayUtil.getNoncestr(),
                mch_billno   = "201411111234567" + DateTime.Now.Hour.ToSafeString() + DateTime.Now.Minute.ToSafeString() + DateTime.Now.Second.ToSafeString(),
                mch_id       = tenpay.WeChartConfigItem.mch_id,
                wxappid      = tenpay.WeChartConfigItem.appid,
                nick_name    = "极客美家",
                send_name    = "极客美家",
                re_openid    = "o8r91jjmQWUqO8zrq4rxL0QVTEYs",
                total_amount = "100",
                min_value    = "100",
                max_value    = "100",
                total_num    = "1",
                wishing      = "1",
                client_ip    = "118.144.76.61",
                act_name     = "1",
                remark       = "1"
            };
            string s = tenpay.TenpayUtil.Fhb(p, tenpay.WeChartConfigItem.key);


            System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "红包.txt", s + DateTime.Now.ToSafeString() + "\r\n\r\n");


            return(s);


            #region MyRegion
            //            return TenpayUtil.PostXmlToUrl("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", @"<xml>
            ////            <sign></sign>
            ////            <mch_billno></mch_billno>
            ////            <mch_id></mch_id>
            ////            <wxappid></wxappid>
            ////            <nick_name></nick_name>
            ////            <send_name></send_name>
            ////            <re_openid></re_openid>
            ////            <total_amount></total_amount>
            ////            <min_value></min_value>
            ////            <max_value></max_value>
            ////            <total_num></total_num>
            ////            <wishing></wishing>
            ////            <client_ip></client_ip>
            ////            <act_name></act_name>
            ////            <act_id></act_id>
            ////            <remark></remark>
            ////            <logo_imgurl></logo_imgurl>
            ////            <share_content></share_content>
            ////            <share_url></share_url>
            ////            <share_imgurl></share_imgurl>
            ////            <nonce_str></nonce_str>
            ////        </xml>"); ;

            //            return ProcessRequest(@"<xml>
            //            <sign></sign>
            //            <mch_billno></mch_billno>
            //            <mch_id></mch_id>
            //            <wxappid></wxappid>
            //            <nick_name></nick_name>
            //            <send_name></send_name>
            //            <re_openid></re_openid>
            //            <total_amount></total_amount>
            //            <min_value></min_value>
            //            <max_value></max_value>
            //            <total_num></total_num>
            //            <wishing></wishing>
            //            <client_ip></client_ip>
            //            <act_name></act_name>
            //            <act_id></act_id>
            //            <remark></remark>
            //            <logo_imgurl></logo_imgurl>
            //            <share_content></share_content>
            //            <share_url></share_url>
            //            <share_imgurl></share_imgurl>
            //            <nonce_str></nonce_str>
            //        </xml>");
            #endregion
        }
Example #11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //RequestUrl = Request.ServerVariables["SERVER_NAME"].ToLower();
            string u  = Request.ServerVariables["HTTP_USER_AGENT"];
            bool   bo = detectmobilebrowser.HttpUserAgent(u);

            if (Request.QueryString["code"] != null)
            {
                orderid = Request["orderid"].ConvertTo <int>(0);

                Returnmd5 = EncryptionHelper.ToMD5(orderid.ToString() + "lixh1210", "UTF-8");


                if (orderid != 0)
                {
                    //根据订单id得到订单信息
                    B2bOrderData dataorder     = new B2bOrderData();
                    B2b_order    modelb2border = dataorder.GetOrderById(orderid);

                    orderstatus = EnumUtils.GetName((OrderStatus)modelb2border.Order_state);
                    paystatus   = modelb2border.Pay_state;//1未支付;2已支付
                    order_type  = modelb2border.Order_type;

                    //根据产品id得到产品信息
                    B2bComProData datapro     = new B2bComProData();
                    B2b_com_pro   modelcompro = datapro.GetProById(modelb2border.Pro_id.ToString(), modelb2border.Speciid, modelb2border.channelcoachid);

                    if (modelcompro != null)
                    {
                        servertype = modelcompro.Server_type;
                    }

                    cart = modelb2border.Shopcartid;//购物车

                    #region 正常订单
                    if (modelb2border.Order_type == 1)
                    {
                        if (modelcompro != null)
                        {
                            #region    务类型订单金额
                            p_totalprice1 = new B2bOrderData().GetOrderTotalPrice(modelcompro, modelb2border, out price, out pricedetail);
                            if (p_totalprice1 == 0 || price == "0")
                            {
                                Response.Write("<script>alert('订单金额不可为0');</script>");
                                Response.End();
                                return;
                            }
                            #endregion

                            proname     = modelcompro.Pro_name;
                            u_name      = modelb2border.U_name.Substring(0, 1) + "**";
                            u_mobile    = modelb2border.U_phone.Substring(0, 4) + "****" + modelb2border.U_phone.Substring(modelb2border.U_phone.Length - 3, 3);
                            travel_date = modelb2border.U_traveldate.ToString();
                            buy_num     = modelb2border.U_num;
                            u_youxiaoqi = modelcompro.Pro_start.ToString() + " - " + modelcompro.Pro_end.ToString();

                            p_totalprice   = CommonFunc.OperTwoDecimal(p_totalprice1.ToString());
                            wxp_totalprice = (p_totalprice1 * 100).ToString("F0");
                            price          = modelb2border.Pay_price.ToString();

                            price = CommonFunc.OperTwoDecimal(price);
                            comid = modelcompro.Com_id;

                            var saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                            if (saleset != null)
                            {
                                phone = saleset.Service_Phone;
                            }
                        }
                    }
                    #endregion

                    #region 充值订单
                    if (modelb2border.Order_type == 2)
                    {
                        //ordertype=2 充值订单会传递过来值
                        comid = modelb2border.Comid;

                        p_totalprice1  = modelb2border.U_num * modelb2border.Pay_price;
                        p_totalprice   = CommonFunc.OperTwoDecimal(p_totalprice1.ToString());
                        wxp_totalprice = (p_totalprice1 * 100).ToString("F0");

                        //获得商户电话
                        var saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                        if (saleset != null)
                        {
                            phone = saleset.Service_Phone;
                        }
                    }
                    #endregion

                    #region 统一获得商户名称 和 微信支付链接
                    if (comid != 0)
                    {
                        comName = B2bCompanyData.GetCompany(comid).Com_name;
                    }
                    #endregion


                    #region 写入支付数据库,先判定是否有此订单支付
                    B2bPayData datapay    = new B2bPayData();
                    B2b_pay    modelb2pay = datapay.GetPayByoId(orderid);

                    if (modelb2pay != null)
                    {
                        //对已完成支付的,再次提交支付,跳转到订单也或显示此订单已支付
                        if (modelb2pay.Trade_status == "TRADE_SUCCESS")
                        {
                            Response.Write("订单已经支付过!");
                            Response.End();
                            return;
                        }
                    }
                    #endregion

                    #region  微信支付
                    //根据产品判断商家是否含有自己的微信支付:a.含有的话支付到商家;b.没有的话支付到平台的微信公众号账户中
                    B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(comid);

                    if (model != null)
                    {
                        //商家微信支付的所有参数都存在
                        if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                        {
                            appId     = model.Wx_appid;
                            appsecret = model.Wx_appkey;
                            appkey    = model.Wx_paysignkey;
                            mchid     = model.Wx_partnerid;
                        }
                        else
                        {
                            model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                            if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                            {
                                appId     = model.Wx_appid;
                                appsecret = model.Wx_appkey;
                                appkey    = model.Wx_paysignkey;
                                mchid     = model.Wx_partnerid;
                            }
                        }
                    }
                    else
                    {
                        model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(106);
                        if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                        {
                            appId     = model.Wx_appid;
                            appsecret = model.Wx_appkey;
                            appkey    = model.Wx_paysignkey;
                            mchid     = model.Wx_partnerid;
                        }
                    }



                    #region 获取用户openid
                    code = Request.QueryString["code"];
                    string url =
                        string.Format(
                            "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
                            appId, appsecret, code);
                    string returnStr = HttpUtil.Send("", url);

                    var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);
                    if (obj.openid == null)
                    {
                        //WriteFile(Server.MapPath("") + "\\Log.txt", "code:" + code + "\r\n------------------------------\r\n returnStr:" + returnStr);

                        url = string.Format(
                            "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1}",
                            appId, obj.refresh_token);
                        returnStr = HttpUtil.Send("", url);
                        obj       = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);
                    }


                    //WriteFile(Server.MapPath("") + "\\Log.txt", "access_token:" + obj.access_token + "\r\n" + "--openid:" + obj.openid);


                    //url = string.Format(
                    //    "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}",
                    //    obj.access_token, obj.openid);
                    //returnStr = HttpUtil.Send("", url);
                    //WriteFile(Server.MapPath("") + "\\Log.txt", returnStr);
                    #endregion


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

                    timeStamp = TenpayUtil.getTimestamp();
                    nonceStr  = TenpayUtil.getNoncestr();


                    //设置package订单参数
                    string productname = "";
                    if (modelb2border.Order_type == 1)
                    {
                        productname = modelcompro.Pro_name.Replace("\"", "").Replace("“", "").Replace("'", "").Replace("‘", "").Replace(";", "").Replace(";", "");

                        if (productname.Length > 50)
                        {
                            productname = productname.Substring(0, 50);
                        }
                    }
                    if (modelb2border.Order_type == 2)
                    {
                        productname = "预付款充值";
                    }
                    packageReqHandler.setParameter("body", productname); //商品信息 127字符
                    packageReqHandler.setParameter("appid", appId);
                    packageReqHandler.setParameter("mch_id", mchid);
                    packageReqHandler.setParameter("nonce_str", nonceStr.ToLower());
                    packageReqHandler.setParameter("notify_url", "http://shop" + comid + ".etown.cn/wxpay/backpaynotice.aspx");
                    packageReqHandler.setParameter("openid", obj.openid);
                    packageReqHandler.setParameter("out_trade_no", orderid.ToString());               //商家订单号
                    packageReqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP
                    packageReqHandler.setParameter("total_fee", wxp_totalprice);                      //商品金额,以分为单位(money * 100).ToString()
                    packageReqHandler.setParameter("trade_type", "JSAPI");

                    //获取package包
                    sign = packageReqHandler.CreateMd5Sign("key", appkey);
                    //WriteFile(Server.MapPath("") + "\\Log.txt", sign);
                    packageReqHandler.setParameter("sign", sign);

                    string data = packageReqHandler.parseXML();

                    //WriteFile(Server.MapPath("") + "\\Log.txt", "package包签名:" + sign + "-----\r\n向统一支付接口发送的xml:" + data);

                    string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");

                    //WriteFile(Server.MapPath("") + "\\Log.txt", "统一支付接口返回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);
                        //WriteFile(Server.MapPath("") + "\\Log.txt", "预支付id:" + package);
                    }

                    //设置支付参数
                    var paySignReqHandler = new RequestHandler(Context);
                    paySignReqHandler.setParameter("appId", appId);
                    paySignReqHandler.setParameter("timeStamp", timeStamp);
                    paySignReqHandler.setParameter("nonceStr", nonceStr);
                    paySignReqHandler.setParameter("package", package);
                    paySignReqHandler.setParameter("signType", "MD5");
                    paySign = paySignReqHandler.CreateMd5Sign("key", appkey);


                    //WriteFile(Server.MapPath("") + "\\Log.txt", "支付签名" + paySign);
                    #endregion

                    #region 订单提交支付信息
                    if (modelb2pay == null)
                    {
                        B2b_pay eticket = new B2b_pay()
                        {
                            Id           = 0,
                            Oid          = orderid,
                            Pay_com      = "wx",
                            Pay_name     = modelb2border.U_name,
                            Pay_phone    = modelb2border.U_phone,
                            Total_fee    = p_totalprice1,
                            Trade_no     = "",
                            Trade_status = "trade_pendpay",
                            Uip          = "",
                            comid        = model.Com_id
                        };
                        int payid = datapay.InsertOrUpdate(eticket);
                    }
                    else
                    {
                        //对已完成支付的,再次提交支付,跳转到订单也或显示此订单已支付
                        if (modelb2pay.Trade_status != "TRADE_SUCCESS")
                        {
                            //防止金额有所改动
                            modelb2pay.comid     = model.Com_id;
                            modelb2pay.Pay_com   = "wx";
                            modelb2pay.Total_fee = p_totalprice1;
                            datapay.InsertOrUpdate(modelb2pay);
                        }
                    }
                    #endregion
                }
            }
        }
Example #12
0
        /// <summary>
        /// 支付
        /// </summary>
        public ActionResult Pay()
        {
            //订单id
            int oid = WebHelper.GetQueryInt("oid");

            //订单信息
            OrderInfo orderInfo = Orders.GetOrderByOid(oid);

            if (orderInfo == null || orderInfo.OrderState != (int)OrderState.WaitPaying)
            {
                return(Redirect("/mob"));
            }

            string code = Request.QueryString["code"];

            if (string.IsNullOrEmpty(code))
            {
                string code_url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=lk#wechat_redirect", PayConfig.AppId, string.Format("http://{0}/mob/wechat/pay?oid=" + oid, BSPConfig.ShopConfig.SiteUrl));
                LogUtil.WriteLog("code_url:" + code_url);
                return(Redirect(code_url));
            }

            LogUtil.WriteLog(" ============ 开始 获取微信用户相关信息 =====================");

            #region 获取支付用户 OpenID================
            string url       = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", PayConfig.AppId, PayConfig.AppSecret, code);
            string returnStr = HttpUtil.Send("", url);
            LogUtil.WriteLog("Send 页面  returnStr 第一个:" + returnStr);

            OpenModel openModel = JsonConvert.DeserializeObject <OpenModel>(returnStr);

            url       = string.Format("https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1}", PayConfig.AppId, openModel.refresh_token);
            returnStr = HttpUtil.Send("", url);
            openModel = JsonConvert.DeserializeObject <OpenModel>(returnStr);

            LogUtil.WriteLog("Send 页面  access_token:" + openModel.access_token);
            LogUtil.WriteLog("Send 页面  openid=" + openModel.openid);

            //url = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}", obj.access_token, obj.openid);
            //returnStr = HttpUtil.Send("", url);
            //LogUtil.WriteLog("Send 页面  returnStr:" + returnStr);
            #endregion

            LogUtil.WriteLog(" ============ 结束 获取微信用户相关信息 =====================");

            LogUtil.WriteLog("============ 单次支付开始 ===============");

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


            #region 基本参数===========================
            //商户订单号
            string outTradeNo = orderInfo.Oid.ToString() + Randoms.CreateRandomValue(10, false);
            //订单名称
            string subject = BSPConfig.ShopConfig.SiteTitle + "购物";
            //付款金额
            string totalFee = ((int)(orderInfo.SurplusMoney * 100)).ToString();
            //openId
            string openId = openModel.openid;
            //时间戳
            string timeStamp = TenpayUtil.getTimestamp();
            //随机字符串
            string nonceStr = TenpayUtil.getNoncestr();
            //服务器异步通知页面路径
            string notifyUrl = string.Format("http://{0}/mob/wechat/notify", BSPConfig.ShopConfig.SiteUrl);

            LogUtil.WriteLog("totalFee" + totalFee);

            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            //初始化
            packageReqHandler.init();

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

            #endregion

            #region sign===============================
            string 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
            string      prepayId = "";
            string      package  = "";
            XmlDocument 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 设置支付参数 输出页面  该部分参数请勿随意修改 ==============
            RequestHandler paySignReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            paySignReqHandler.setParameter("appId", PayConfig.AppId);
            paySignReqHandler.setParameter("timeStamp", timeStamp);
            paySignReqHandler.setParameter("nonceStr", nonceStr);
            paySignReqHandler.setParameter("package", package);
            paySignReqHandler.setParameter("signType", "MD5");
            string paySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);

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

            Dictionary <string, string> model = new Dictionary <string, string>();
            model.Add("oid", orderInfo.Oid.ToString());
            model.Add("timeStamp", timeStamp);
            model.Add("nonceStr", nonceStr);
            model.Add("package", package);
            model.Add("paySign", paySign);
            return(PartialView("~/plugins/BrnShop.PayPlugin.WeChat/views/wechat/pay.cshtml", model));
        }
Example #13
0
        /// <summary>
        /// native扫码支付
        /// </summary>
        /// <returns></returns>
        public string Code3()
        {
            string postStr = @"<xml><appid><![CDATA[wx2c2f2e7b5b62daa1]]></appid>
<openid><![CDATA[o8r91jjmQWUqO8zrq4rxL0QVTEYs]]></openid>
<mch_id><![CDATA[1246407101]]></mch_id>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<nonce_str><![CDATA[x20MklmXIxrD7cGE]]></nonce_str>
<product_id><![CDATA[888654444]]></product_id>
<sign><![CDATA[77B6BAE35570D78DE1BA99B99CD7803B]]></sign>
</xml>
";

            System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", postStr + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");

            SortedDictionary <string, string> dic = TenpayUtil.GetInfoFromXml(postStr);

            string osign = dic["sign"];//微信sign


            string sign = TenpayUtil.getsign(dic, "43804496F28A4F0FBF1195AA0F1Abcde");//自己加密后的sign


            #region 取到的各种值
            string appid        = dic["appid"];
            string openid       = dic["openid"];
            string mach_id      = dic["mch_id"];
            string is_subscribe = dic["is_subscribe"];
            string nonce_str    = dic["nonce_str"];
            string product_id   = dic["product_id"];
            #endregion

            System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", product_id + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");

            #region 统一下单
            UnifiedOrder order = new UnifiedOrder();
            order.appid            = "wx2c2f2e7b5b62daa1";
            order.attach           = "vinson1";
            order.body             = "微信扫码回调测试product_id:" + product_id;//订单描述
            order.device_info      = "";
            order.mch_id           = "1246407101";
            order.nonce_str        = TenpayUtil.getNoncestr();                                                              //随机字符串
            order.notify_url       = "http://mobile.mj100.com/test/h?id=100";                                               //回调网址
            order.openid           = openid;
            order.out_trade_no     = "20156666978542323" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(); //订单号
            order.trade_type       = "NATIVE";
            order.spbill_create_ip = Request.UserHostAddress;
            order.total_fee        = 1;
            //order.total_fee = 1;
            string prepay_id = tenpay.TenpayUtil.getPrepay_id(order, "43804496F28A4F0FBF1195AA0F1Abcde");//商户key
            #endregion

            System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", prepay_id + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");
            #region 响应请求
            SortedDictionary <string, string> pdic = new SortedDictionary <string, string>();

            pdic.Add("return_code", "SUCCESS");
            pdic.Add("return_msg", "");
            pdic.Add("appid", appid);
            pdic.Add("mch_id", mach_id);
            pdic.Add("nonce_str", nonce_str);
            pdic.Add("prepay_id", prepay_id);
            pdic.Add("result_code", "SUCCESS");
            pdic.Add("err_code_des", "");
            string nesign = TenpayUtil.getsign(pdic, "43804496F28A4F0FBF1195AA0F1Abcde");
            pdic.Add("sign", nesign);



            StringBuilder sbPay = new StringBuilder();
            foreach (KeyValuePair <string, string> k in pdic)
            {
                if (k.Key == "attach" || k.Key == "body" || k.Key == "sign")
                {
                    sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">");
                }
                else
                {
                    sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");
                }
            }
            string return_string = string.Format("<xml>{0}</xml>", sbPay.ToString().TrimEnd(','));
            #endregion


            System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", return_string + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");

            return(return_string);
        }
Example #14
0
        /// <summary>
        /// native第一种扫码支付
        /// </summary>
        /// <returns></returns>
        public string Code2()
        {
            try
            {
                #region 获取到请求的值
                Stream s = System.Web.HttpContext.Current.Request.InputStream;
                byte[] b = new byte[s.Length];
                s.Read(b, 0, (int)s.Length);
                string postStr = Encoding.UTF8.GetString(b);
                #endregion



                SortedDictionary <string, string> dic = TenpayUtil.GetInfoFromXml(postStr);

                string osign = dic["sign"];//微信sign


                string sign = TenpayUtil.getsign(dic, tenpay.WeChartConfigItem.key);//自己加密后的sign



                #region 取到的各种值
                string appid        = dic["appid"];
                string openid       = dic["openid"];
                string mach_id      = dic["mch_id"];
                string is_subscribe = dic["is_subscribe"];
                string nonce_str    = dic["nonce_str"];
                string product_id   = dic["product_id"];//产品id或者订单号
                #endregion

                //    System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", product_id + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");

                #region 统一下单
                UnifiedOrder order = new UnifiedOrder();
                order.appid            = tenpay.WeChartConfigItem.appid;
                order.attach           = "vinson1";
                order.body             = "微信扫码回调测试product_id:" + product_id;//订单描述
                order.device_info      = "";
                order.mch_id           = tenpay.WeChartConfigItem.mch_id;
                order.nonce_str        = TenpayUtil.getNoncestr();                                                              //随机字符串
                order.notify_url       = "http://mobile.mj100.com/test/h?id=100";                                               //回调网址
                order.openid           = openid;
                order.out_trade_no     = "20156666978542323" + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(); //订单号
                order.trade_type       = "NATIVE";
                order.spbill_create_ip = Request.UserHostAddress;
                order.total_fee        = 1;
                //order.total_fee = 1;
                string prepay_id = tenpay.TenpayUtil.getPrepay_id(order, tenpay.WeChartConfigItem.key);//商户key
                #endregion

                //    System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", prepay_id + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");


                #region 响应请求
                SortedDictionary <string, string> pdic = new SortedDictionary <string, string>();
                pdic.Add("return_code", "SUCCESS");
                pdic.Add("return_msg", "");
                pdic.Add("appid", appid);
                pdic.Add("mch_id", mach_id);
                pdic.Add("nonce_str", nonce_str);
                pdic.Add("prepay_id", prepay_id);
                pdic.Add("result_code", "SUCCESS");
                pdic.Add("err_code_des", "");
                string nesign = TenpayUtil.getsign(pdic, tenpay.WeChartConfigItem.key);
                pdic.Add("sign", nesign);



                StringBuilder sbPay = new StringBuilder();
                foreach (KeyValuePair <string, string> k in pdic)
                {
                    if (k.Key == "attach" || k.Key == "body" || k.Key == "sign")
                    {
                        sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">");
                    }
                    else
                    {
                        sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");
                    }
                }
                string return_string = string.Format("<xml>{0}</xml>", sbPay.ToString().TrimEnd(','));
                #endregion



                return(return_string);
            }
            catch (Exception e)
            {
                System.IO.File.AppendAllText(HttpContext.Server.MapPath("") + "native.txt", e.Message + ":" + DateTime.Now.ToSafeString() + "\r\n\r\n");
                return("");
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            webinfo = new TravelAgent.BLL.WebInfo().loadConfig(Server.MapPath(ConfigurationManager.AppSettings["WebInfoConfig"].ToString()));
            if (webinfo == null)
            {
                Response.Write("配置信息获取错误!");
                Response.End();
            }

            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();

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

            //设置package订单参数  具体参数列表请参考官方pdf文档,请勿随意设置
            packageReqHandler.setParameter("body", this.Body); //商品信息 127字符
            packageReqHandler.setParameter("appid", webinfo.AppID);
            packageReqHandler.setParameter("mch_id", webinfo.Mchid);
            packageReqHandler.setParameter("nonce_str", NonceStr.ToLower());
            packageReqHandler.setParameter("notify_url", webinfo.WebDomain + "/mTravel/weipay/Notify.aspx");
            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", (Convert.ToInt32(this.TotalFee) * 100).ToString()); //商品金额,以分为单位(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", webinfo.Key);
            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", webinfo.AppID);
            paySignReqHandler.setParameter("timeStamp", TimeStamp);
            paySignReqHandler.setParameter("nonceStr", NonceStr);
            paySignReqHandler.setParameter("package", Package);
            paySignReqHandler.setParameter("signType", "MD5");
            PaySign = paySignReqHandler.CreateMd5Sign("key", webinfo.Key);

            LogUtil.WriteLog("WeiPay 页面  paySign:" + PaySign);
            #endregion
            #endregion
        }
Example #16
0
        /// <summary>
        /// 构造支付
        /// </summary>
        /// <param name="trade">交易业务实体</param>
        /// <returns></returns>
        public PrePay Create_url(TenPayTrade trade)
        {
            string s = "";

            if (trade.OrderInfo.OrderID.Count > 0)
            {
                StringBuilder builder = new StringBuilder();
                foreach (string str2 in trade.OrderInfo.OrderID)
                {
                    builder.Append(str2 + ",");
                }
                if (builder.Length > 0)
                {
                    builder.Remove(builder.Length - 1, 1);
                }
                Attach model = new Attach();
                model.Key   = "OId";
                model.Value = builder.ToString();
                trade.AttachList.Add(model);
                model = null;
            }
            s = trade.AttachList.ToString();

            RequestHandler handler = new RequestHandler(HttpContext.Current);

            handler.init();
            handler.setKey(TenPaySystem.Key);
            handler.setParameter("mch_id", TenPaySystem.BargainorId);
            handler.setParameter("trade_type", "JSAPI");
            handler.setParameter("out_trade_no", trade.OutTradeNo);
            handler.setParameter("total_fee", (trade.Totalfee * 100M).ToString("F0"));
            handler.setParameter("notify_url", TenPaySystem.NotifyUrl);
            handler.setParameter("body", trade.OrderInfo.Body /*trade.OrderInfo.Subject*/);
            handler.setParameter("spbill_create_ip", trade.UserIP);
            handler.setParameter("openid", trade.OPENID);
            handler.setParameter("appid", TenPaySystem.appid);
            handler.setParameter("nonce_str", TenpayUtil.getNoncestr());
            handler.createMd5Sign();



            string xml = Toolkit.request.post("https://api.mch.weixin.qq.com/pay/unifiedorder", handler.parseXML(), "");

            var xrss        = XElement.Parse(xml);
            var return_code = Toolkit.StringExtensions.GetXElement(xrss, "return_code").Value;
            var return_msg  = Toolkit.StringExtensions.GetXElement(xrss, "return_msg").Value;
            var result_code = Toolkit.StringExtensions.GetXElement(xrss, "result_code").Value;
            var prepay_id   = Toolkit.StringExtensions.GetXElement(xrss, "prepay_id").Value;
            var nonce_str   = Toolkit.StringExtensions.GetXElement(xrss, "nonce_str").Value;
            var sign        = Toolkit.StringExtensions.GetXElement(xrss, "sign").Value;

            PrePay Pay = new PrePay();

            if (return_code == "SUCCESS")
            {
                Pay.ReqState = true;
            }

            if (result_code == "SUCCESS")
            {
                Pay.IsSuccess = true;
            }


            string timeStamp = TenpayUtil.getTimestamp();
            string Noncestr  = TenpayUtil.getNoncestr();

            RequestHandler reponse = new RequestHandler(HttpContext.Current);

            reponse.init();
            reponse.setKey(TenPaySystem.Key);
            reponse.setParameter("appId", TenPaySystem.appid);
            reponse.setParameter("timeStamp", timeStamp);
            reponse.setParameter("package", "prepay_id=" + prepay_id);
            reponse.setParameter("nonceStr", Noncestr);
            reponse.setParameter("signType", "MD5");
            sign = reponse.createMd5Sign();

            Pay.ReturnMsg = return_msg;
            Pay.NonceStr  = Noncestr;
            Pay.PrepayId  = prepay_id;
            Pay.Sign      = sign;
            Pay.TimeStamp = timeStamp;


            return(Pay);
        }
Example #17
0
        public string pricedetail = "";        //价格详情(暂时只有用来描述旅游)
        protected void Page_Load(object sender, EventArgs e)
        {
            //RequestUrl = Request.ServerVariables["SERVER_NAME"].ToLower();
            string u  = Request.ServerVariables["HTTP_USER_AGENT"];
            bool   bo = detectmobilebrowser.HttpUserAgent(u);

            if (Request.QueryString["code"] != null)
            {
                #region 获取用户openid
                code = Request.QueryString["code"];
                string url =
                    string.Format(
                        "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
                        appId, appsecret, code);
                string returnStr = HttpUtil.Send("", url);

                var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);

                url = string.Format(
                    "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1}",
                    appId, obj.refresh_token);
                returnStr = HttpUtil.Send("", url);
                obj       = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);

                WriteFile(Server.MapPath("") + "\\Log.txt", obj.access_token);
                WriteFile(Server.MapPath("") + "\\Log.txt", obj.openid);

                //url = string.Format(
                //    "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}",
                //    obj.access_token, obj.openid);
                //returnStr = HttpUtil.Send("", url);
                //WriteFile(Server.MapPath("") + "\\Log.txt", returnStr);
                #endregion
                ///////////////////////////////////////////////////////////////////////////////////////////////

                orderid = Request["orderid"].ConvertTo <int>(0);
                if (orderid != 0)
                {
                    //根据订单id得到订单信息
                    B2bOrderData dataorder     = new B2bOrderData();
                    B2b_order    modelb2border = dataorder.GetOrderById(orderid);

                    //根据产品id得到产品信息
                    B2bComProData datapro     = new B2bComProData();
                    B2b_com_pro   modelcompro = datapro.GetProById(modelb2border.Pro_id.ToString());

                    if (modelb2border != null && modelcompro != null)
                    {
                        #region    务类型订单金额
                        servertype = modelcompro.Server_type;
                        //如果服务类型是“酒店客房”,则根据酒店扩展订单表中房态信息,获取支付金额
                        if (modelcompro.Server_type == 9)
                        {
                            B2b_order_hotel hotelorder = new B2b_order_hotelData().GetHotelOrderByOrderId(orderid);
                            if (hotelorder != null)
                            {
                                string   fangtai    = hotelorder.Fangtai;
                                DateTime start_data = hotelorder.Start_date;
                                DateTime end_data   = hotelorder.End_date;
                                int      bookdaynum = hotelorder.Bookdaynum;

                                decimal  everyroomprice = 0;
                                string[] ftstr          = fangtai.Split(',');
                                for (int i = 0; i < ftstr.Length; i++)
                                {
                                    if (ftstr[i].ConvertTo <decimal>(0) > 0)
                                    {
                                        everyroomprice += ftstr[i].ConvertTo <decimal>(0);
                                    }
                                }
                                price = everyroomprice.ToString();

                                p_totalprice1 = (modelb2border.U_num * everyroomprice - modelb2border.Integral1 - modelb2border.Imprest1);
                            }
                            else
                            {
                            }
                        }
                        else if (servertype == 2 || servertype == 8)//当地游;跟团游
                        {
                            string outdate = modelb2border.U_traveldate.ToString("yyyy-MM-dd");

                            //读取団期价格,根据实际选择的団期报价
                            B2b_com_LineGroupDate linemode = new B2b_com_LineGroupDateData().GetLineDayGroupDate(DateTime.Parse(outdate), modelcompro.Id);
                            if (linemode != null)
                            {
                                price = linemode.Menprice.ToString();
                                decimal childreduce = modelcompro.Childreduce;
                                decimal childprice  = decimal.Parse(price) - childreduce;
                                if (childprice < 0)
                                {
                                    childprice = 0;
                                }
                                pricedetail = modelb2border.U_num + "成人," + modelb2border.Child_u_num + "儿童(成人" + price + "元/人,儿童" + childprice + "元/人)";

                                p_totalprice1 = (modelb2border.U_num * (linemode.Menprice) + (modelb2border.Child_u_num) * childprice - modelb2border.Integral1 - modelb2border.Imprest1);
                            }
                        }
                        else //票务
                        {
                            p_totalprice1 = (modelb2border.U_num * modelcompro.Advise_price - modelb2border.Integral1 - modelb2border.Imprest1);
                            price         = modelcompro.Advise_price.ToString(); //modelb2border.Pay_price.ToString();
                            if (price == "0.00" || price == "0")
                            {
                                price = "";
                            }
                            else
                            {
                                price = CommonFunc.OperTwoDecimal(price);
                            }
                        }
                        #endregion

                        proname     = modelcompro.Pro_name;
                        u_name      = modelb2border.U_name.Substring(0, 1) + "**";
                        u_mobile    = modelb2border.U_phone.Substring(0, 4) + "****" + modelb2border.U_phone.Substring(modelb2border.U_phone.Length - 3, 3);
                        travel_date = modelb2border.U_traveldate.ToString();
                        buy_num     = modelb2border.U_num;
                        u_youxiaoqi = modelcompro.Pro_start.ToString() + " - " + modelcompro.Pro_end.ToString();

                        p_totalprice   = CommonFunc.OperTwoDecimal(p_totalprice1.ToString());
                        wxp_totalprice = (p_totalprice1 * 100).ToString("F0");
                        price          = modelb2border.Pay_price.ToString();

                        price = CommonFunc.OperTwoDecimal(price);
                        comid = modelcompro.Com_id;
                        if (comid != 0)
                        {
                            comName = B2bCompanyData.GetCompany(comid).Com_name;
                            if (bo == false)
                            {
                                Response.Redirect("http://shop" + comid + ".etown.cn");
                            }
                        }

                        if ((int)modelb2border.Order_state != (int)OrderStatus.WaitPay)
                        {
                            order_status = EnumUtils.GetName((OrderStatus)modelb2border.Order_state);
                            return;
                        }

                        var saleset = B2bCompanySaleSetData.GetDirectSellByComid(comid.ToString());
                        if (saleset != null)
                        {
                            phone = saleset.Service_Phone;
                        }

                        //写入支付数据库,先判定是否有此订单支付
                        B2bPayData datapay    = new B2bPayData();
                        B2b_pay    modelb2pay = datapay.GetPayByoId(orderid);


                        #region  微信支付
                        //根据产品判断商家是否含有自己的微信支付:a.含有的话支付到商家;b.没有的话支付到平台的微信公众号账户中
                        B2b_finance_paytype model = new B2b_finance_paytypeData().GetFinancePayTypeByComid(modelcompro.Com_id);

                        if (model != null)
                        {
                            //商家微信支付的所有参数都存在
                            if (model.Wx_appid != "" && model.Wx_appkey != "" && model.Wx_partnerid != "" && model.Wx_paysignkey != "")
                            {
                                appId     = model.Wx_appid;
                                appsecret = model.Wx_appkey;
                                appkey    = model.Wx_paysignkey;
                                mchid     = model.Wx_partnerid;
                            }
                            else
                            {
                                return;
                            }
                        }
                        else
                        {
                            return;
                        }



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

                        timeStamp = TenpayUtil.getTimestamp();
                        nonceStr  = TenpayUtil.getNoncestr();


                        //设置package订单参数
                        string productname = modelcompro.Pro_name.Replace("\"", "").Replace("“", "").Replace("'", "").Replace("‘", "").Replace(";", "").Replace(";", "");
                        packageReqHandler.setParameter("body", productname); //商品信息 127字符
                        packageReqHandler.setParameter("appid", appId);
                        packageReqHandler.setParameter("mch_id", mchid);
                        packageReqHandler.setParameter("nonce_str", nonceStr.ToLower());
                        packageReqHandler.setParameter("notify_url", "http://shop" + modelcompro.Com_id + ".etown.cn/wxpay/backpaynotice.aspx");
                        packageReqHandler.setParameter("openid", obj.openid);
                        packageReqHandler.setParameter("out_trade_no", orderid.ToString());               //商家订单号
                        packageReqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP
                        packageReqHandler.setParameter("total_fee", wxp_totalprice);                      //商品金额,以分为单位(money * 100).ToString()
                        packageReqHandler.setParameter("trade_type", "JSAPI");

                        //获取package包
                        sign = packageReqHandler.CreateMd5Sign("key", appkey);
                        WriteFile(Server.MapPath("") + "\\Log.txt", sign);
                        packageReqHandler.setParameter("sign", sign);

                        string data = packageReqHandler.parseXML();

                        WriteFile(Server.MapPath("") + "\\Log.txt", data);

                        string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");

                        WriteFile(Server.MapPath("") + "\\Log.txt", 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);
                            WriteFile(Server.MapPath("") + "\\Log.txt", package);
                        }

                        //设置支付参数
                        var paySignReqHandler = new RequestHandler(Context);
                        paySignReqHandler.setParameter("appId", appId);
                        paySignReqHandler.setParameter("timeStamp", timeStamp);
                        paySignReqHandler.setParameter("nonceStr", nonceStr);
                        paySignReqHandler.setParameter("package", package);
                        paySignReqHandler.setParameter("signType", "MD5");
                        paySign = paySignReqHandler.CreateMd5Sign("key", appkey);


                        WriteFile(Server.MapPath("") + "\\Log.txt", paySign);
                        #endregion

                        //订单提交支付信息
                        if (modelb2pay == null)
                        {
                            B2b_pay eticket = new B2b_pay()
                            {
                                Id           = 0,
                                Oid          = orderid,
                                Pay_com      = "wx",
                                Pay_name     = modelb2border.U_name,
                                Pay_phone    = modelb2border.U_phone,
                                Total_fee    = p_totalprice1,
                                Trade_no     = "",
                                Trade_status = "trade_pendpay",
                                Uip          = ""
                            };
                            int payid = datapay.InsertOrUpdate(eticket);
                        }
                        else
                        {
                            //对已完成支付的,再次提交支付,跳转到订单也或显示此订单已支付
                            if (modelb2pay.Trade_status != "TRADE_SUCCESS")
                            {
                                //防止金额有所改动
                                modelb2pay.Pay_com   = "wx";
                                modelb2pay.Total_fee = p_totalprice1;
                                datapay.InsertOrUpdate(modelb2pay);
                            }
                        }
                    }
                }
            }
        }
Example #18
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
        }
Example #19
0
        /// <summary>
        /// 支付
        /// </summary>
        public ActionResult Pay()
        {
            /*微信支付三步:统一下单》调起支付接口》支付结果通知*/
            string result = WebHelper.GetPostStr();
            NameValueCollection parmas = WebHelper.GetParmList(result);

            //if (parmas.Keys.Count < 5)
            //{
            //    return AjaxResult("error", "缺少请求参数");
            //}



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

            #region 基本参数===========================
            //商户订单号
            string outTradeNo = "hmk" + DateTime.Now.ToString("yyMMdd") + Randoms.CreateRandomValue(6, true);
            //订单名称
            string subject = BSPConfig.ShopConfig.SiteTitle;
            //付款金额
            string totalFee = (double.Parse(parmas["totalfee"]) * 100).ToString();
            //时间戳
            string timeStamp = TenpayUtil.getTimestamp();
            //随机字符串
            string nonceStr = TenpayUtil.getNoncestr();
            //服务器异步通知页面路径
            string notifyUrl = string.Format("{0}/appwechat/notify", BSPConfig.ShopConfig.SiteUrl);


            //记录充值信息
            OWZX.Model.RechargeModel rech = new OWZX.Model.RechargeModel
            {
                Out_trade_no = outTradeNo,
                Account      = parmas["account"],
                SuiteId      = parmas["vossuiteid"],
                PlatForm     = "微信",
                Type         = int.Parse(parmas["type"]),
                Role         = int.Parse(parmas["role"])
            };
            bool addres = Recharge.AddRecharge(rech);
            if (!addres)
            {
                return(AjaxResult("error", "记录充值信息失败"));
            }

            //string access_token = "";
            //string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", PayConfig.AppId, PayConfig.AppSecret);
            //string returnStr = HttpUtil.Get_Http(url, 120000);
            //LogUtil.WriteLog("returnStr 页面  returnStr:" + returnStr);
            //if (!returnStr.Contains("access_token"))
            //{
            //    return Content("");
            //}
            //else
            //{
            //    string[] list = returnStr.Split(',');
            //    access_token = list[0].Split(':')[1].Trim('"');
            //}

            //LogUtil.WriteLog("access_token 页面  access_token:" + access_token);

            //创建支付应答对象
            RequestHandler packageReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            //初始化
            packageReqHandler.init();

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

            #endregion

            #region sign===============================
            string sign = packageReqHandler.CreateMd5Sign("key", PayConfig.AppKey);
            #endregion

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

            string data = packageReqHandler.parseXML();

            string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");
            //LogUtil.WriteLog("WeiPay 页面  prepayXml:" + prepayXml);
            //获取预支付ID
            string      prepayId = "";
            string      package  = "";
            XmlDocument 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);
            }
            if (xnl[0].InnerText.Trim() == "FAIL")
            {
                return(AjaxResult("error", "微信下单失败 " + xnl[1].InnerText));
            }
            #endregion

            #region 设置支付参数 输出页面  该部分参数请勿随意修改 ==============

            nonceStr = TenpayUtil.getNoncestr();
            RequestHandler paySignReqHandler = new RequestHandler(System.Web.HttpContext.Current);
            paySignReqHandler.setParameter("appid", PayConfig.AppId);
            paySignReqHandler.setParameter("noncestr", nonceStr.ToLower());
            paySignReqHandler.setParameter("package", "Sign=WXPay");
            paySignReqHandler.setParameter("partnerid", PayConfig.MchId);
            paySignReqHandler.setParameter("prepayid", prepayId);
            paySignReqHandler.setParameter("timestamp", timeStamp);
            string paySign = paySignReqHandler.CreateMd5Sign("key", PayConfig.AppKey);

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

            return(AjaxResult("success", string.Format("{0}\"appId\":\"{1}\",\"partnerId\":\"{2}\",\"prepayId\":\"{3}\",\"package\":\"{4}\",\"nonceStr\":\"{5}\",\"timeStamp\":\"{6}\",\"sign\":\"{7}\"{8}",
                                                       "{",
                                                       PayConfig.AppId,
                                                       PayConfig.MchId,
                                                       prepayId,
                                                       "Sign=WXPay",
                                                       nonceStr.ToLower(),
                                                       timeStamp,
                                                       paySign,
                                                       "}"), true));
        }
Example #20
0
        /// <summary>
        /// 实际支付页
        /// </summary>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public ActionResult Xd(string code, string state)
        {
            //   Session["auth"] = auth;//标识用户登录
            MJAPI.Controllers.WechartController.authorization auth = null;

            if (Session["auth"] != null)
            {
                auth = Session["auth"] as MJAPI.Controllers.WechartController.authorization;
            }
            else
            {
                Response.Redirect("http://mobile.mj100.com/wechart/login");
            }


            #region 发送预支付单
            UnifiedOrder order = new UnifiedOrder();
            order.appid       = tenpay.WeChartConfigItem.appid;
            order.attach      = "vinson1";
            order.body        = "极客美家支付正式测试";//订单描述
            order.device_info = "";
            order.mch_id      = tenpay.WeChartConfigItem.mch_id;
            order.nonce_str   = TenpayUtil.getNoncestr();                                                                //随机字符串
            order.notify_url  = "http://mobile.mj100.com/test/h?id=100";                                                 //回调网址
            order.openid      = auth.openid;                                                                             //每一个微信号的唯一标识都不一样

            order.out_trade_no     = "20156666978542323" + DateTime.Now.Day + DateTime.Now.Minute + DateTime.Now.Second; //订单号
            order.trade_type       = "JSAPI";
            order.spbill_create_ip = Request.UserHostAddress;
            order.total_fee        = 1;

            string prepay_id = tenpay.TenpayUtil.getPrepay_id(order, tenpay.WeChartConfigItem.key);//商户key
            #endregion



            #region 得到paySign
            string timeStamp = TenpayUtil.getTimestamp();
            string nonceStr  = TenpayUtil.getNoncestr().ToUpper();
            SortedDictionary <string, string> sParams = new SortedDictionary <string, string>();


            sParams.Add("appId", tenpay.WeChartConfigItem.appid);

            sParams.Add("timeStamp", timeStamp);

            sParams.Add("nonceStr", nonceStr);

            sParams.Add("package", "prepay_id=" + prepay_id);

            sParams.Add("signType", "MD5");

            string paySign = TenpayUtil.getsign(sParams, tenpay.WeChartConfigItem.key);

            #endregion



            ViewBag.appId     = "wx2c2f2e7b5b62daa1";
            ViewBag.timeStamp = timeStamp;
            ViewBag.nonceStr  = nonceStr;
            ViewBag.prepay_id = prepay_id;
            ViewBag.paySign   = paySign;
            ViewBag.openid    = paySign + "我是paySign";
            return(View());
        }
Example #21
0
        /// <summary>
        /// 授权回调
        /// </summary>
        /// <returns></returns>
        public ActionResult LoginOk(string code, string state)
        {
            string post_data          = "appid=" + "wx2c2f2e7b5b62daa1" + "&secret=" + "ed815afc669a9201a6070677d1771166" + "&code=" + code + "&grant_type=authorization_code";
            string requestData        = tenpay.TenpayUtil.PostXmlToUrl(tenpay.TenpayUtil.getAccess_tokenUrl(), post_data);
            JavaScriptSerializer js   = new JavaScriptSerializer();                  //实例化一个能够序列化数据的类
            authorization        auth = js.Deserialize <authorization>(requestData); //将json数据转化为对象类型并赋值给auth

            Session["auth"] = auth;                                                  //标识用户登录



            UnifiedOrder order = new UnifiedOrder();

            order.appid            = "wx2c2f2e7b5b62daa1";
            order.attach           = "vinson";
            order.body             = "100拍币";
            order.device_info      = "";
            order.mch_id           = "1246407101";
            order.nonce_str        = TenpayUtil.getNoncestr();
            order.notify_url       = "http://mobile.mj100.com"; //回调网址
            order.openid           = auth.openid;
            order.out_trade_no     = "2015666697854232";        //订单号
            order.trade_type       = "JSAPI";
            order.spbill_create_ip = Request.UserHostAddress;
            order.total_fee        = 100;
            //order.total_fee = 1;

            string prepay_id = tenpay.TenpayUtil.getPrepay_id(order, "43804496F28A4F0FBF1195AA0F1Abcde");

            string timeStamp = TenpayUtil.getTimestamp();


            string nonceStr = TenpayUtil.getNoncestr();

            SortedDictionary <string, string> sParams = new SortedDictionary <string, string>();

            sParams.Add("appId", "wx2c2f2e7b5b62daa1");
            sParams.Add("timeStamp", timeStamp);
            sParams.Add("nonceStr", nonceStr);
            sParams.Add("package", "prepay_id=" + prepay_id);
            sParams.Add("signType", "MD5");


            string paySign = TenpayUtil.getsign(sParams, "43804496F28A4F0FBF1195AA0F1Abcde");


            //var appId = "<%=appId %>";
            //var timeStamp = "<%=timeStamp %>";
            //var nonceStr = "<%=nonceStr %>";
            //var prepay_id = "<%=prepay_id %>";
            //var paySign = "<%=paySign %>";

            ViewBag.appId     = "wx2c2f2e7b5b62daa1";
            ViewBag.timeStamp = timeStamp;
            ViewBag.nonceStr  = nonceStr;

            ViewBag.prepay_id = prepay_id;

            ViewBag.paySign = paySign;



            ViewBag.openid = paySign + "我是paySign";



            return(View());
        }
Example #22
0
    private void WxPayJS()
    {
        string siteUrl = MojoCube.Web.Site.Cache.GetDomain(strLanguage);  //获取网站的域名

        MojoCube.Web.Payment.List payment = new MojoCube.Web.Payment.List();
        payment.GetDataByType(2);

        MojoCube.Web.Order.List order = new MojoCube.Web.Order.List();
        order.GetData(int.Parse(ViewState["pk_Order"].ToString()));

        if (order.pk_Order == 0 || order.StatusID > 0 || order.fk_Member.ToString() != Session["Member_UserID"].ToString())
        {
            Response.Redirect(MojoCube.Web.Site.Cache.GetUrlExtension("Order", strLanguage));
        }

        appId = payment.AppID;
        string partnerId = payment.PartnerID;
        string key       = payment.KeyCode;
        string secret    = payment.Secret;
        int    price     = (int)(order.Amount * 100);
        string body      = order.Description;

        if (body.Length > 20)
        {
            body = body.Substring(0, 20);
        }

        //调用【网页授权获取用户信息】接口获取用户的openid和access_token
        GetOpenidAndAccessToken(appId, secret);

        UnifiedOrder order1 = new UnifiedOrder();

        order1.appid            = appId;
        order1.mch_id           = partnerId;
        order1.nonce_str        = TenpayUtil.getNoncestr();
        order1.body             = body;
        order1.out_trade_no     = order.OrderNumber;
        order1.total_fee        = price;
        order1.spbill_create_ip = Page.Request.UserHostAddress;
        order1.notify_url       = siteUrl + MojoCube.Web.Site.Cache.GetUrlExtension("WxPay_Notify", strLanguage);
        order1.trade_type       = "JSAPI";
        if (ViewState["OpenID"] != null)
        {
            order1.openid = ViewState["OpenID"].ToString();  //JSAPI必须传入openid
        }

        TenpayUtil tu = new TenpayUtil();

        prepayId  = tu.getPrepay_id(order1, key);
        nonceStr  = order1.nonce_str;
        timeStamp = TenpayUtil.getTimestamp();

        SortedDictionary <string, string> sParams = new SortedDictionary <string, string>();

        sParams.Add("appId", appId);
        sParams.Add("nonceStr", nonceStr);
        sParams.Add("package", "prepay_id=" + prepayId);
        sParams.Add("signType", "MD5");
        sParams.Add("timeStamp", timeStamp);
        sign = tu.getsign(sParams, key);
    }
Example #23
0
        public HttpResponseMessage WxPaySign(string MemberCode, string AppID, string openid, string CardNo, string type)
        {
            var response = new MyHttpResponseMessage();

            response.apiNumber = "C027_SysController_PaySign";
            try
            {
                var model = sysManager.WxConfigSQLSugar.GetById(AppID);
                if (model == null)
                {
                    response.SetContent(HttpStatus.ok, "appid不在配置中", "", ResponseType.josn);
                    return(response);
                }

                var order_no     = CardNo;       //订单号
                var order_amount = 0M;           //订单金额
                var user_name    = "";           //支付用户名
                var subject      = "";           //备注说明
                var UserOpenId   = openid;       //备注说明
                var trans_type   = string.Empty; //交易类型1实物2虚拟
                if (type == "card")
                {
                    subject = "购买套餐卡";
                    var Card = mb.mb_CardList.GetList(p => p.CardNo == order_no).First();

                    if (Card == null)
                    {
                        response.SetContent(HttpStatus.ok, "订单记录不存在", "", ResponseType.josn);
                        return(response);
                    }
                    order_amount = Card.Amount.ToDecimal();
                    user_name    = Card.MemberCode;
                }
                if (type == "Balance")
                {
                    subject = "充值余额";
                    var Balance = crd.crd_BalanceLogSQLSugar.GetList(p => p.BalanceNo == order_no).First();

                    if (Balance == null)
                    {
                        response.SetContent(HttpStatus.ok, "订单记录不存在", "", ResponseType.josn);
                        return(response);
                    }

                    order_amount = Balance.OriginalBalance.ToDecimal();
                    user_name    = Balance.MemberCode;
                }
                //===============================请求参数==================================
                //时间戳
                var TimeStamp = TenpayUtil.getTimestamp();
                //随机字符串
                var NonceStr = TenpayUtil.getNoncestr();

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

                //设置package订单参数  具体参数列表请参考官方pdf文档,请勿随意设置
                packageReqHandler.setParameter("body", subject); //商品信息 127字符
                packageReqHandler.setParameter("appid", model.AppID);
                packageReqHandler.setParameter("mch_id", model.MchID);
                packageReqHandler.setParameter("nonce_str", NonceStr.ToLower());
                packageReqHandler.setParameter("notify_url", model.Notify_url);
                packageReqHandler.setParameter("openid", UserOpenId);
                packageReqHandler.setParameter("out_trade_no", order_no);                                                   //商家订单号
                packageReqHandler.setParameter("spbill_create_ip", System.Web.HttpContext.Current.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP
                packageReqHandler.setParameter("total_fee", (order_amount * 100).ToInt32().ToString());                     //商品金额,以分为单位(money * 100).ToString()
                packageReqHandler.setParameter("trade_type", "JSAPI");
                if (!string.IsNullOrEmpty(subject))
                {
                    packageReqHandler.setParameter("attach", subject);//自定义参数 127字符
                }
                #region sign===============================
                var Sign = packageReqHandler.CreateMd5Sign("key", model.MchSecret);
                //  LogUtil.WriteLog("WeiPay 页面  sign:" + Sign);
                #endregion

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

                string data = packageReqHandler.parseXML();
                //   LogUtil.WriteLog("WeiPay 页面  package(XML):" + data);
                LogManager.Logs["微信支付"].WriteLine("data:" + data);
                string prepayXml = HttpUtil.Send(data, "https://api.mch.weixin.qq.com/pay/unifiedorder");
                //  LogUtil.WriteLog("WeiPay 页面  package(Back_XML):" + prepayXml);
                LogManager.Logs["微信支付"].WriteLine("prepayXml:" + prepayXml);
                //获取预支付ID
                var xdoc = new XmlDocument();
                xdoc.LoadXml(prepayXml);
                XmlNode     xn      = xdoc.SelectSingleNode("xml");
                XmlNodeList xnl     = xn.ChildNodes;
                var         Package = "";
                if (xnl.Count > 7)
                {
                    var PrepayId = xnl[7].InnerText;
                    Package = string.Format("prepay_id={0}", PrepayId);
                }
                if (string.IsNullOrEmpty(Package))
                {
                    response.SetContent(HttpStatus.error, "支付包生成失败", "", ResponseType.josn);
                    return(response);
                }
                LogManager.Logs["微信支付"].WriteLine("Package:" + Package);
                #endregion

                #region 设置支付参数 输出页面  该部分参数请勿随意修改 ==============
                var paySignReqHandler = new RequestHandler(System.Web.HttpContext.Current);
                paySignReqHandler.setParameter("appId", model.AppID);
                paySignReqHandler.setParameter("timeStamp", TimeStamp);
                paySignReqHandler.setParameter("nonceStr", NonceStr);
                paySignReqHandler.setParameter("package", Package);
                paySignReqHandler.setParameter("signType", "MD5");
                var PaySign = paySignReqHandler.CreateMd5Sign("key", model.MchSecret);
                LogManager.Logs["微信支付"].WriteLine("PaySign:" + PaySign);
                var rbj = new { appId = model.AppID, package = Package, timeStamp = TimeStamp, nonceStr = NonceStr, PaySign = PaySign };
                response.SetContent(HttpStatus.ok, "获取支付参数成功", rbj, ResponseType.josn);
                #endregion
            }
            catch (Exception ex)
            {
                AddErrorLog(LogEnum.sys, ex.Message, ex.StackTrace);
                response.SetContent(HttpStatus.error, ex.Message, null, ResponseType.josn);
            }
            return(response);
        }