예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //获得订单信息
            string  order_no     = DTRequest.GetQueryString("pay_order_no");
            decimal order_amount = DTRequest.GetQueryDecimal("pay_order_amount", 0);

            //检查参数是否正确
            if (string.IsNullOrEmpty(order_no) || order_amount == 0)
            {
                Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您提交的参数有误!")));
                return;
            }

            //调用【网页授权获取用户信息】接口获取用户的openid和access_token
            JsApiConfig jsApiConfig = new JsApiConfig();
            WxPayData   data        = new WxPayData();

            data.SetValue("appid", jsApiConfig.AppId);
            data.SetValue("redirect_uri", HttpUtility.UrlEncode(jsApiConfig.Redirect_url));
            data.SetValue("response_type", "code");
            data.SetValue("scope", "snsapi_base");
            data.SetValue("state", order_no + "#wechat_redirect"); //传入订单号
            string url = "https://open.weixin.qq.com/connect/oauth2/authorize?" + data.ToUrl();

            try
            {
                //触发微信返回code码
                Response.Redirect(url);//Redirect函数会抛出ThreadAbortException异常,不用处理这个异常
            }
            catch (System.Threading.ThreadAbortException ex)
            {
            }
        }
        protected void CalcStandGuardFee(Action <int, decimal, string> callback)
        {
            Model.users model = HttpContext.Current.Session[DTKeys.SESSION_USER_INFO] as Model.users;
            if (model == null)
            {
                HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                HttpContext.Current.Response.Write(JsonConvert.SerializeObject(new { msg = "登录超时,请重新登陆" }));
                return;
            }

            var userId = model.id;

            if (userId == 0)
            {
                var userInfo = BasePage.GetUserInfo();
                if (userInfo == null)
                {
                    callback((int)HttpStatusCode.Unauthorized, 0, "请先登录");
                    return;
                }
                userId = userInfo.id;
            }

            var withdrawValue = DTRequest.GetQueryDecimal("withdraw_value", 0);

            if (withdrawValue <= 0)
            {
                callback((int)HttpStatusCode.BadRequest, 0, "请先填写正确的提现金额");
                return;
            }
            try
            {
                /*var standGuardFee = new Agp2pDataContext().CalcStandGuardFee(userId, Convert.ToDecimal(withdrawValue));
                 * var finalValue = Math.Max(TransactionFacade.DefaultHandlingFee, standGuardFee);*/
                //TODO 暂时不收取
                //var finalValue = withdrawValue < 100 ? TransactionFacade.DefaultHandlingFee : 0;
                var finalValue = 0;
                callback((int)HttpStatusCode.OK, finalValue, "提现手续费 " + finalValue.ToString("c"));
            }
            catch (Exception ex)
            {
                callback((int)HttpStatusCode.InternalServerError, 0, ex.Message);
            }
        }
예제 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //读取站点配置信息
            Model.siteconfig siteConfig = new BLL.siteconfig().loadConfig();

            //=============================获得订单信息================================
            string  action       = DTRequest.GetQueryString("action");
            string  order_type   = "";
            string  order_no     = "";
            decimal order_amount = 0;
            string  user_name    = "";
            string  subject      = "";

            if (action == "pay")
            {
                //获得订单信息
                order_type   = DTRequest.GetQueryString("pay_order_type"); //订单类型
                order_no     = DTRequest.GetQueryString("pay_order_no");
                order_amount = DTRequest.GetQueryDecimal("pay_order_amount", 0);
                user_name    = DTRequest.GetQueryString("pay_user_name");
                subject      = DTRequest.GetQueryString("pay_subject");
            }
            else
            {
                //获得订单信息
                order_type   = DTRequest.GetFormString("pay_order_type"); //订单类型
                order_no     = DTRequest.GetFormString("pay_order_no");
                order_amount = DTRequest.GetFormDecimal("pay_order_amount", 0);
                user_name    = DTRequest.GetFormString("pay_user_name");
                subject      = DTRequest.GetFormString("pay_subject");
            }
            //以下收货人信息
            string receive_name    = string.Empty; //收货人姓名
            string receive_address = string.Empty; //收货人地址
            string receive_zip     = string.Empty; //收货人邮编
            string receive_phone   = string.Empty; //收货人电话
            string receive_mobile  = string.Empty; //收货人手机

            //检查参数是否正确
            if (order_no == "" || order_amount == 0)
            {
                Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您提交的参数有误!")));
                return;
            }
            if (order_no.StartsWith("R")) //R开头为在线充值订单
            {
                Model.user_amount_log model = new BLL.user_amount_log().GetModel(order_no);
                if (model == null)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您充值的订单号不存在或已删除!")));
                    return;
                }
                if (model.value != order_amount)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您充值的订单金额与实际金额不一致!")));
                    return;
                }
                //取得用户信息
                Model.users userModel = new BLL.users().GetModel(model.user_id);
                if (userModel == null)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,用户账户不存在或已删除!")));
                    return;
                }
                receive_name    = userModel.nick_name;
                receive_address = userModel.address;
                receive_phone   = userModel.telphone;
                receive_mobile  = userModel.mobile;
            }
            else //B开头为商品订单
            {
                Model.orders model = new BLL.orders().GetModel(order_no);
                if (model == null)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您支付的订单号不存在或已删除!")));
                    return;
                }
                if (model.order_amount != order_amount)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您支付的订单金额与实际金额不一致!")));
                    return;
                }
                receive_name    = model.accept_name;
                receive_address = model.address;
                receive_zip     = model.post_code;
                receive_phone   = model.telphone;
                receive_mobile  = model.mobile;
            }
            if (user_name != "")
            {
                user_name = "支付会员:" + user_name;
            }
            else
            {
                user_name = "匿名用户";
            }

            //===============================请求参数==================================

            //判断担保或是即时到帐接口
            if (Config.Type == "1") //即时到帐
            {
                //把请求参数打包成数组
                SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                sParaTemp.Add("payment_type", "1");                           //收款类型1商品购买
                sParaTemp.Add("show_url", siteConfig.weburl);                 //商品展示地址
                sParaTemp.Add("out_trade_no", order_no);                      //网站订单号
                sParaTemp.Add("subject", siteConfig.webname + "-" + subject); //订单名称
                sParaTemp.Add("body", user_name);                             //订单描述
                sParaTemp.Add("total_fee", order_amount.ToString());          //订单总金额
                sParaTemp.Add("paymethod", "");                               //默认支付方式
                sParaTemp.Add("defaultbank", "");                             //默认网银代号
                sParaTemp.Add("anti_phishing_key", "");                       //防钓鱼时间戳
                sParaTemp.Add("exter_invoke_ip", DTRequest.GetIP());          ////获取客户端的IP地址
                sParaTemp.Add("buyer_email", "");                             //默认买家支付宝账号
                sParaTemp.Add("royalty_type", "");
                sParaTemp.Add("royalty_parameters", "");

                //构造即时到帐接口表单提交HTML数据,无需修改
                Service ali       = new Service();
                string  sHtmlText = ali.Create_direct_pay_by_user(sParaTemp);
                Response.Write(sHtmlText);
            }
            else //担保交易
            {
                //把请求参数打包成数组
                SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                sParaTemp.Add("payment_type", "1");                           //收款类型1商品购买
                sParaTemp.Add("out_trade_no", order_no);                      //网站订单号
                sParaTemp.Add("subject", siteConfig.webname + "-" + subject); //订单名称
                sParaTemp.Add("price", order_amount.ToString());              //付款金额
                sParaTemp.Add("quantity", "1");                               //建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品
                sParaTemp.Add("logistics_fee", "0.00");                       //物流费用
                sParaTemp.Add("logistics_type", "EXPRESS");                   //物流类型,EXPRESS(快递)、POST(平邮)、EMS(EMS)
                sParaTemp.Add("logistics_payment", "SELLER_PAY");             //物流支付方式,SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
                sParaTemp.Add("body", user_name);                             //订单描述
                sParaTemp.Add("show_url", siteConfig.weburl);                 //商品展示地址
                sParaTemp.Add("receive_name", receive_name);                  //收货人姓名
                sParaTemp.Add("receive_address", receive_address);            //收货人地址
                sParaTemp.Add("receive_zip", receive_zip);                    //收货人邮编
                sParaTemp.Add("receive_phone", receive_phone);                //收货人电话号码
                sParaTemp.Add("receive_mobile", receive_mobile);              //收货人手机号码
                //构造即时到帐接口表单提交HTML数据,无需修改
                Service ali       = new Service();
                string  sHtmlText = ali.Create_partner_trade_by_buyer(sParaTemp);
                Response.Write(sHtmlText);
            }
        }
예제 #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //读取站点配置信息
            Model.siteconfig siteConfig = new BLL.siteconfig().loadConfig();
            //=============================获得订单信息================================
            string  action       = DTRequest.GetQueryString("action");
            string  order_type   = "";
            string  order_no     = "";
            decimal order_amount = 0;
            string  user_name    = "";
            string  subject      = "";

            if (action == "pay")
            {
                //获得订单信息
                order_type   = DTRequest.GetQueryString("pay_order_type"); //订单类型
                order_no     = DTRequest.GetQueryString("pay_order_no");
                order_amount = DTRequest.GetQueryDecimal("pay_order_amount", 0);
                user_name    = DTRequest.GetQueryString("pay_user_name");
                subject      = DTRequest.GetQueryString("pay_subject");
            }
            else
            {
                //获得订单信息
                order_type   = DTRequest.GetFormString("pay_order_type"); //订单类型
                order_no     = DTRequest.GetFormString("pay_order_no");
                order_amount = DTRequest.GetFormDecimal("pay_order_amount", 0);
                user_name    = DTRequest.GetFormString("pay_user_name");
                subject      = DTRequest.GetFormString("pay_subject");
            }



            string trans_type = string.Empty; //交易类型1实物2虚拟

            if (order_no == "" || order_amount == 0)
            {
                Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您提交的参数有误!")));
                return;
            }
            if (order_no.StartsWith("R")) //R开头为在线充值订单
            {
                Model.user_amount_log model = new BLL.user_amount_log().GetModel(order_no);
                if (model == null)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您充值的订单号不存在或已删除!")));
                    return;
                }
                if (model.value != order_amount)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您充值的订单金额与实际金额不一致!")));
                    return;
                }
                trans_type = "2";
            }
            else //B开头为商品订单
            {
                Model.orders model = new BLL.orders().GetModel(order_no);
                if (model == null)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您支付的订单号不存在或已删除!")));
                    return;
                }
                if (model.order_amount != order_amount)
                {
                    Response.Redirect(new Web.UI.BasePage().linkurl("error", "?msg=" + Utils.UrlEncode("对不起,您支付的订单金额与实际金额不一致!")));
                    return;
                }
                trans_type = "1";
            }
            //检查会员还是匿名
            if (user_name != "")
            {
                user_name = "支付会员:" + user_name;
            }
            else
            {
                user_name = "匿名用户";
            }

            //===============================请求参数==================================
            //创建RequestHandler实例
            RequestHandler reqHandler = new RequestHandler(Context);

            //初始化
            reqHandler.init();
            //设置密钥
            reqHandler.setKey(TenpayUtil.key);
            reqHandler.setGateUrl("https://gw.tenpay.com/gateway/pay.htm");
            //-----------------------------
            //设置支付参数
            //-----------------------------
            reqHandler.setParameter("partner", TenpayUtil.partner);                                  //商户号
            reqHandler.setParameter("out_trade_no", order_no);                                       //商家订单号
            reqHandler.setParameter("total_fee", (Convert.ToDouble(order_amount) * 100).ToString()); //商品金额,以分为单位
            reqHandler.setParameter("return_url", TenpayUtil.return_url);                            //交易完成后跳转的URL
            reqHandler.setParameter("notify_url", TenpayUtil.notify_url);                            //接收财付通通知的URL
            reqHandler.setParameter("body", user_name);                                              //商品描述
            reqHandler.setParameter("bank_type", "DEFAULT");                                         //银行类型(中介担保时此参数无效)
            reqHandler.setParameter("spbill_create_ip", Page.Request.UserHostAddress);               //用户的公网ip,不是商户服务器IP
            reqHandler.setParameter("fee_type", "1");                                                //币种,1人民币
            reqHandler.setParameter("subject", siteConfig.webname + "-" + subject);                  //商品名称(中介交易时必填)

            //系统可选参数
            reqHandler.setParameter("sign_type", "MD5");
            reqHandler.setParameter("service_version", "1.0");
            reqHandler.setParameter("input_charset", "UTF-8");
            reqHandler.setParameter("sign_key_index", "1");

            //业务可选参数
            reqHandler.setParameter("product_fee", "0");                                    //商品费用,必须保证transport_fee + product_fee=total_fee
            reqHandler.setParameter("transport_fee", "0");                                  //物流费用,必须保证transport_fee + product_fee=total_fee
            reqHandler.setParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //订单生成时间,格式为yyyymmddhhmmss
            reqHandler.setParameter("time_expire", "");                                     //订单失效时间,格式为yyyymmddhhmmss
            reqHandler.setParameter("buyer_id", "");                                        //买方财付通账号
            reqHandler.setParameter("goods_tag", "");                                       //商品标记
            reqHandler.setParameter("trade_mode", TenpayUtil.type);                         //交易模式,1即时到账(默认),2中介担保,3后台选择(买家进支付中心列表选择)
            reqHandler.setParameter("transport_desc", "");                                  //物流说明
            reqHandler.setParameter("trans_type", "1");                                     //交易类型,1实物交易,2虚拟交易
            reqHandler.setParameter("agentid", "");                                         //平台ID
            reqHandler.setParameter("agent_type", "");                                      //代理模式,0无代理(默认),1表示卡易售模式,2表示网店模式
            reqHandler.setParameter("seller_id", "");                                       //卖家商户号,为空则等同于partner

            //获取请求带参数的url
            string requestUrl = reqHandler.getRequestURL();

            //实现自动跳转===============================
            StringBuilder sbHtml = new StringBuilder();

            sbHtml.Append("<form id='tenpaysubmit' name='tenpaysubmit' action='" + reqHandler.getGateUrl() + "' method='get'>");
            Hashtable ht = reqHandler.getAllParameters();

            foreach (DictionaryEntry de in ht)
            {
                sbHtml.Append("<input type=\"hidden\" name=\"" + de.Key + "\" value=\"" + de.Value + "\" >\n");
            }
            //submit按钮控件请不要含有name属性
            sbHtml.Append("<input type='submit' value='确认' style='display:none;'></form>");
            sbHtml.Append("<script>document.forms['tenpaysubmit'].submit();</script>");

            Response.Write(sbHtml.ToString());
        }