示例#1
0
        public ActionResult Index()
        {
            Com.WxPayAPI.Log.Info(this.GetType().ToString(), "WxPayController Index");

            string wxJsApiParam = "";

            ErrorMessage errorMessage = ErrorMessage.失败;
            int          payType      = 0;
            string       orderId      = "";
            int          money        = 0;
            int          userType     = 0;

            if (PayContext.VerifyPayOrderInfo(1, out errorMessage, out payType, out orderId, out money, out userType))
            {
                string host                    = StringHelper.GetHost();
                string path                    = Request.Path;
                string queryString             = Request.Url.Query;
                Com.WxPayAPI.JsApiPay jsApiPay = new Com.WxPayAPI.JsApiPay(host, path, queryString);

                string openid = UrlParameterHelper.GetParams("openid");

                //检测是否给当前页面传递了相关参数
                if (string.IsNullOrEmpty(openid) || money <= 0)
                {
                    Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面传参出错,请返回重试" + "</span>");
                    Com.WxPayAPI.Log.Error(this.GetType().ToString(), "This page have not get params, cannot be inited, exit...");

                    return(View());
                }

                //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数
                jsApiPay.OpenId    = openid;
                jsApiPay.Total_Fee = money;

                //JSAPI支付预处理
                try
                {
                    string body = string.Concat(SiteSection.Html.SiteName, "-", SiteSection.Html.FeeName);
                    Com.WxPayAPI.WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(body, orderId);
                    wxJsApiParam = jsApiPay.GetJsApiParameters();//获取H5调起JS API参数

                    Com.WxPayAPI.Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam);
                    //在页面上显示订单信息
                    //Response.Write("<span style='color:#00CD00;font-size:20px'>订单详情:</span><br/>");
                    //Response.Write("<span style='color:#00CD00;font-size:20px'>" + unifiedOrderResult.ToPrintStr() + "</span>");
                }
                catch
                {
                    Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试" + "</span>");
                }
            }

            ViewData.Model = wxJsApiParam;

            return(View());
        }
示例#2
0
        private bool GetOrderToken(int payType, string merId, int money, out string otn, int feeConfigId = 0, string brief = "", int userType = 0)
        {
            otn = "";

            string orderId = "";

            if (GetOrderId(payType, merId, money, out orderId, feeConfigId, brief, userType))
            {
                otn = PayContext.EncryptOrderId(orderId, money);
            }

            return(!string.IsNullOrEmpty(otn));
        }
示例#3
0
        public ActionResult Index1()
        {
            Com.WxPayAPI2.Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");

            string url = "";

            ErrorMessage errorMessage = ErrorMessage.失败;
            int          payType      = 0;
            string       orderId      = "";
            int          money        = 0;
            int          userType     = 0;

            if (PayContext.VerifyPayOrderInfo(1, out errorMessage, out payType, out orderId, out money, out userType))
            {
                Com.WxPayAPI2.WxPayData data = new Com.WxPayAPI2.WxPayData();
                data.SetValue("body", string.Concat(SiteSection.Html.SiteName, "-", SiteSection.Html.FeeName)); //商品描述
                data.SetValue("attach", "");                                                                    //附加数据
                data.SetValue("out_trade_no", orderId);                                                         //随机字符串
                data.SetValue("total_fee", money);                                                              //总金额
                data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));                           //交易起始时间
                data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));           //交易结束时间
                data.SetValue("goods_tag", "");                                                                 //商品标记
                data.SetValue("trade_type", "NATIVE");                                                          //交易类型
                data.SetValue("product_id", "1");                                                               //商品ID

                Com.WxPayAPI2.WxPayData result = Com.WxPayAPI2.WxPayApi.UnifiedOrder(data);                     //调用统一下单接口
                if (string.Compare(result.GetValue("return_code").ToString(), "SUCCESS", true) == 0)
                {
                    string code_url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接

                    Com.WxPayAPI2.Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + code_url);

                    if (!string.IsNullOrEmpty(code_url))
                    {
                        url = "/WxPay/MakeQRCode?data=" + HttpUtility.UrlEncode(code_url);
                    }
                }
            }

            ViewData.Model  = url;
            ViewBag.OrderId = orderId;

            return(View());
        }
示例#4
0
 public AccountRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#5
0
 public CustomerLoginLogRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#6
0
 public RefundOrderRpository(PayContext dbContext) : base(dbContext)
 {
 }
 public AdminLoginLogRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#8
0
        public void Index()
        {
            ErrorMessage errorMessage = ErrorMessage.失败;

            string url = StringHelper.GetHost();

            if (string.IsNullOrEmpty(url))
            {
                errorMessage = ErrorMessage.订单初始化失败;
                return;
            }

            int    payType  = 0;
            string orderId  = "";
            int    money    = 0;
            int    userType = 0;

            if (PayContext.VerifyPayOrderInfo(1, out errorMessage, out payType, out orderId, out money, out userType))
            {
                //支付宝网关地址
                string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?";

                #region

                //返回格式, 必填,不需要修改
                string format = "xml";

                //返回格式, 必填,不需要修改
                string v = "2.0";

                //请求号, 必填,须保证每次请求都是唯一
                string req_id = DateTime.Now.ToString("yyyyMMddHHmmss");

                //req_data详细信息

                //服务器异步通知页面路径 ,需http://格式的完整路径,不允许加?id=123这类自定义参数
                string notify_url = string.Format("http://{0}/alipay/notify", url);

                //页面跳转同步通知页面路径, 需http://格式的完整路径,不允许加?id=123这类自定义参数
                string call_back_url = string.Format("http://{0}/alipay/result", url);

                //操作中断返回地址, 用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数
                string merchant_url = string.Format("http://{0}/order/recharge", url);

                //卖家支付宝帐户
                string seller_email = Config.SellerEmail;

                //商户网站订单系统中唯一订单号,必填

                //订单名称 必填
                string subject = GetName(money);

                //付款金额(单位:元) 必填
                string total_fee = GetFee(money);

                //请求业务参数详细 必填
                string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + orderId + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url></direct_trade_create_req>";

                //把请求参数打包成数组
                Dictionary <string, string> sParaTempToken = new Dictionary <string, string>();
                sParaTempToken.Add("partner", Config.Partner);
                sParaTempToken.Add("_input_charset", Config.Input_charset.ToLower());
                sParaTempToken.Add("sec_id", Config.Sign_type.ToUpper());
                sParaTempToken.Add("service", "alipay.wap.trade.create.direct");
                sParaTempToken.Add("format", format);
                sParaTempToken.Add("v", v);
                sParaTempToken.Add("req_id", req_id);
                sParaTempToken.Add("req_data", req_dataToken);

                //建立请求
                string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken);
                //URLDECODE返回的信息
                Encoding code = Encoding.GetEncoding(Config.Input_charset);
                sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code);

                //解析远程模拟提交后返回的信息
                Dictionary <string, string> dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken);

                //获取token
                string request_token = dicHtmlTextToken["request_token"];

                #endregion

                //业务详细 必填
                string req_data = "<auth_and_execute_req><request_token>" + request_token + "</request_token></auth_and_execute_req>";

                //把请求参数打包成数组
                Dictionary <string, string> sParaTemp = new Dictionary <string, string>();
                sParaTemp.Add("partner", Config.Partner);
                sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
                sParaTemp.Add("sec_id", Config.Sign_type.ToUpper());
                sParaTemp.Add("service", "alipay.wap.auth.authAndExecute");
                sParaTemp.Add("format", format);
                sParaTemp.Add("v", v);
                sParaTemp.Add("req_data", req_data);

                //建立请求
                string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认");
                Response.Write(sHtmlText);
            }
        }
示例#9
0
 public DFSettingRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#10
0
 public MerchantExtendRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#11
0
 public IncomeRepository(PayContext dbContext)
 {
     _dbContext = dbContext;
 }
示例#12
0
 public FindPaymentDao(PayContext testContext) : base(testContext)
 {
 }
示例#13
0
        public ActionResult Index()
        {
            ErrorMessage errorMessage = ErrorMessage.失败;

            string url = StringHelper.GetHost();

            if (string.IsNullOrEmpty(url))
            {
                errorMessage = ErrorMessage.订单初始化失败;

                return(Redirect(string.Format("/error/index?errCode={0}&returnUrl=", (int)errorMessage).GetChannelRouteUrl(RouteChannelId)));
            }

            int    payType  = 0;
            string orderId  = "";
            int    money    = 0;
            int    userType = 0;

            if (PayContext.VerifyPayOrderInfo(10, out errorMessage, out payType, out orderId, out money, out userType))
            {
                string appId       = NowPayConfig.AppId;
                string appKey      = NowPayConfig.AppKey;
                string callbackUrl = NowPayConfig.CallbackUrl;

                string notifyUrl      = string.Format("http://{0}/user/order/paynow/notify", url);
                string frontNotifyUrl = string.Format("http://{0}/user/order/paynow/result", url);

                SortedDictionary <string, string> dict = new SortedDictionary <string, string>();
                dict.Add("funcode", "WP001");                                            //功能码(定值:WP001)(必填)
                dict.Add("appId", appId);                                                //商户应用唯一标识(字符,长度1-40)(必填)
                dict.Add("mhtOrderNo", orderId);                                         //商户订单号(字符,长度1-40)(必填)
                dict.Add("mhtOrderName", GetName(money));                                //商户商品名称(字符,长度1-40)(必填)
                dict.Add("mhtOrderType", "01");                                          //商户交易类型(01普通消费)(字符,长度1-40)(必填)
                dict.Add("mhtCurrencyType", "156");                                      //商户订单币种类型(156人民币)(字符,长度3)(必填)
                dict.Add("mhtOrderAmt", StringHelper.ToString(money));                   //商户订单交易金额(单位(人民币):分)(数字,长度22)(必填)
                dict.Add("mhtOrderDetail", "充值");                                        //商户订单详情(字符,长度0-200)(必填)
                dict.Add("mhtOrderTimeOut", "3600");                                     //商户订单超时时间(60~3600秒,默认3600)(数字,长度4)(必填)
                dict.Add("mhtOrderStartTime", DateTime.Now.ToString("yyyyMMddHHmmss"));  //商户订单开始时间 yyyyMMddHHmmss(字符,长度14)(必填)
                dict.Add("notifyUrl", notifyUrl);                                        //商户后台通知URL(HTTP协议或者HTTPS协议,POST方式提交报文)(字符,长度1-200)(必填)
                dict.Add("frontNotifyUrl", frontNotifyUrl);                              //商户前台通知URL(HTTP协议或者HTTPS协议,POST方式提交报文)(字符,长度1-200)(必填)
                dict.Add("mhtCharset", "UTF-8");                                         //商户字符编码(字符,长度1-16)(必填)
                dict.Add("deviceType", "06");                                            //设备类型(06手机网页)(字符,长度2)(必填)

                #region 支付宝

                if (payType == 12)
                {
                    bool isMicromessenger = StringHelper.GetUserAgent().ToLower().Contains("micromessenger");

                    if (isMicromessenger)
                    {
                        dict.Add("outputType", "4");                                                //微信
                    }
                    else
                    {
                        dict.Add("outputType", "0");                                                //手机网页
                    }

                    callbackUrl = NowPayConfig.NewCallbackUrl;
                }

                #endregion

                dict.Add("payChannelType", payType.ToString());                         //用户所选渠道类型(如果为空则直接使用现在支付收银台页面,如果不为空则直接跳转至支付渠道(银联或者支付宝等))(字符,长度2)
                dict.Add("mhtReserved", "");                                            //商户保留域(给商户使用的字段,商户可以对交易进行标记,现在支付将原样返回)(字符,长度100)
                dict.Add("consumerId", StringHelper.ToString(currentUser.UserId));      //消费者ID(消费者在商户系统的ID,非必填,但是推荐填写,以便于辅助数据分析)(字符,长度40)
                dict.Add("consumerName", "");                                           //消费者名称(消费者在商户系统的名称,非必填,但是推荐填写,以便于辅助数据分析)(字符,长度40)
                dict.Add("mhtSignType", "MD5");                                         //商户签名方法(定值:MD5)(必填)
                dict.Add("mhtSignature", GetSign(appKey, dict));                        //商户数据签名(MAX64TEXT)(必填)

                return(Redirect(string.Concat(callbackUrl, "?", GetPostData(dict))));
            }

            return(Redirect(string.Format("/error/index?errCode={0}&returnUrl=", (int)errorMessage).GetChannelRouteUrl(RouteChannelId)));
        }
示例#14
0
        public ActionResult Index3()
        {
            string result = "";

            ErrorMessage errorMessage = ErrorMessage.失败;

            string url = StringHelper.GetHost();

            if (string.IsNullOrEmpty(url))
            {
                errorMessage = ErrorMessage.订单初始化失败;

                return(Redirect(string.Format("/error/index?errCode={0}&returnUrl=", (int)errorMessage).GetChannelRouteUrl(RouteChannelId)));
            }

            int    payType  = 0;
            string orderId  = "";
            int    money    = 0;
            int    userType = 0;

            if (PayContext.VerifyPayOrderInfo(10, out errorMessage, out payType, out orderId, out money, out userType) &&
                payType == 13 && StringHelper.GetUserAgent().ToLower().Contains("micromessenger"))
            {
                string OpenId = UrlParameterHelper.GetParams("OpenId");
                if (!string.IsNullOrEmpty(OpenId))
                {
                    string appId       = NowPayConfig.WeChatQrCodeAppId;
                    string appKey      = NowPayConfig.WeChatQrCodeAppKey;
                    string callbackUrl = NowPayConfig.NewCallbackUrl;

                    string notifyUrl      = string.Format("http://{0}/user/order/paynow/notify", url);
                    string frontNotifyUrl = string.Format("http://{0}/user/order/paynow/result", url);

                    SortedDictionary <string, string> dict = new SortedDictionary <string, string>();
                    dict.Add("funcode", "WP001");                                           //功能码(定值:WP001)(必填)
                    dict.Add("appId", appId);                                               //商户应用唯一标识(字符,长度1-40)(必填)
                    dict.Add("mhtOrderNo", orderId);                                        //商户订单号(字符,长度1-40)(必填)
                    dict.Add("mhtOrderName", GetName(money));                               //商户商品名称(字符,长度1-40)(必填)
                    dict.Add("mhtOrderType", "01");                                         //商户交易类型(01普通消费)(字符,长度1-40)(必填)
                    dict.Add("mhtCurrencyType", "156");                                     //商户订单币种类型(156人民币)(字符,长度3)(必填)
                    dict.Add("mhtOrderAmt", StringHelper.ToString(money));                  //商户订单交易金额(单位(人民币):分)(数字,长度22)(必填)
                    dict.Add("mhtOrderDetail", "充值");                                       //商户订单详情(字符,长度0-200)(必填)
                    dict.Add("mhtOrderTimeOut", "3600");                                    //商户订单超时时间(60~3600秒,默认3600)(数字,长度4)(必填)
                    dict.Add("mhtOrderStartTime", DateTime.Now.ToString("yyyyMMddHHmmss")); //商户订单开始时间 yyyyMMddHHmmss(字符,长度14)(必填)
                    dict.Add("notifyUrl", notifyUrl);                                       //商户后台通知URL(HTTP协议或者HTTPS协议,POST方式提交报文)(字符,长度1-200)(必填)
                    dict.Add("frontNotifyUrl", frontNotifyUrl);                             //商户前台通知URL(HTTP协议或者HTTPS协议,POST方式提交报文)(字符,长度1-200)(必填)
                    dict.Add("mhtCharset", "UTF-8");                                        //商户字符编码(字符,长度1-16)(必填)
                    dict.Add("deviceType", "08");                                           //设备类型(06手机网页)(字符,长度2)(必填)
                    dict.Add("outputType", "1");                                            //输出类型(二维码 = 1)
                    dict.Add("payChannelType", payType.ToString());                         //用户所选渠道类型(如果为空则直接使用现在支付收银台页面,如果不为空则直接跳转至支付渠道(银联或者支付宝等))(字符,长度2)
                    dict.Add("mhtReserved", "");                                            //商户保留域(给商户使用的字段,商户可以对交易进行标记,现在支付将原样返回)(字符,长度100)
                    dict.Add("consumerId", StringHelper.ToString(currentUser.UserId));      //消费者ID(消费者在商户系统的ID,非必填,但是推荐填写,以便于辅助数据分析)(字符,长度40)
                    dict.Add("consumerName", "");                                           //消费者名称(消费者在商户系统的名称,非必填,但是推荐填写,以便于辅助数据分析)(字符,长度40)
                    dict.Add("mhtSignType", "MD5");                                         //商户签名方法(定值:MD5)(必填)
                    dict.Add("mhtSignature", GetSign(appKey, dict));                        //商户数据签名(MAX64TEXT)(必填)

                    HttpSendInfo sendInfo = new HttpSendInfo();
                    sendInfo.Method = "POST";
                    sendInfo.Url    = callbackUrl;
                    sendInfo.Data   = GetPostData(dict);
                    HttpReceiveInfo receiveInfo = new HttpReceiveInfo();
                    if (HttpHelper.Send(sendInfo, out receiveInfo))
                    {
                        //报文日志
                        //Log(this.Server.UrlDecode(sendInfo.Data));

                        result = GetTnUrl3(receiveInfo.Result);
                    }
                }
            }

            ViewData.Model  = result;
            ViewBag.OrderId = orderId;

            return(View());
        }
 public MerchantChannelRpository(PayContext dbContext) : base(dbContext)
 {
 }
 public ExpenseRepository(PayContext dbContext)
 {
     _dbContext = dbContext;
 }
示例#17
0
 public BaseDao(PayContext testContext)
 {
     _testContext = testContext;
 }
示例#18
0
 public FailureOrderRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#19
0
 public CardRepository(PayContext dbContext)
 {
     _dbContext = dbContext;
 }
示例#20
0
 public PercentageRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#21
0
 public PostPaymentDao(PayContext testContext) : base(testContext)
 {
 }
示例#22
0
 public AdminLoginDao(PayContext testContext) : base(testContext)
 {
 }
示例#23
0
 public RegisterPatientDao(PayContext testContext) : base(testContext)
 {
 }
示例#24
0
 public DFOrderRpository(PayContext dbContext) : base(dbContext)
 {
 }
示例#25
0
 public AdminOperationLogRpository(PayContext dbContext) : base(dbContext)
 {
 }