Exemple #1
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string BrandWcPayRequest(HttpContext context)
        {
            if (!bllPay.IsWeiXinBrowser)
            {
                resp.errcode = 1;
                resp.errmsg  = "请用微信客户端访问";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string orderId   = context.Request["order_id"];
            var    orderInfo = bll.Get <CrowdFundRecord>(string.Format(" RecordID={0}", orderId));

            if (orderInfo == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "订单号不存在";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if (orderInfo.UserID != currentUserInfo.UserID)
            {
                resp.errcode = 1;
                resp.errmsg  = "订单号无效";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if (orderInfo.Status == 1)
            {
                resp.errcode = 1;
                resp.errmsg  = "订单已经支付,不需重复支付";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string    appId     = "";                                              //appid
            string    mchId     = "";                                              //mch_id
            string    key       = "";                                              //key
            string    openId    = "";                                              //openid
            string    ip        = "";                                              //ip
            string    notifyUrl = baseUrl + "/WxPayNotify/NotifyCrowdFundV2.aspx"; //支付通知地址
            string    body      = "";                                              //订单内容
            PayConfig payConfig = bllPay.GetPayConfig();

            appId  = payConfig.WXAppId;
            mchId  = payConfig.WXMCH_ID;
            key    = payConfig.WXPartnerKey;
            openId = currentUserInfo.WXOpenId;
            ip     = context.Request.UserHostAddress;
            string   payReqStr   = bllPay.GetBrandWcPayRequest(orderInfo.RecordID.ToString(), orderInfo.Amount, appId, mchId, key, openId, ip, notifyUrl, body);
            WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <WXPayReq>(payReqStr);

            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    pay_req = payReqModel
                }));
            }
            resp.errcode = 1;
            resp.errmsg  = "fail";
            return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }
Exemple #2
0
 /// <summary> 微信支付 </summary>
 public static void SendReqWXPay(WXPayReq r_payReq)
 {
     try
     {
         if (r_payReq != null)
         {
             if (IsAndroid)
             {
                 string payReq = JsonUtility.ToJson(r_payReq);
                 Android.Current.Call("sendReqWXPay", payReq);
             }
         }
     }
     catch (Exception e)
     {
         Debug.LogError(e);
     }
 }
Exemple #3
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string BrandWcPayRequest(HttpContext context)
        {
            if (!bllPay.IsWeiXinBrowser)
            {
                resp.errcode = 1;
                resp.errmsg  = "请在微信中打开";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string orderId   = context.Request["order_id"];
            string orderType = context.Request["order_type"];

            if (string.IsNullOrEmpty(orderId))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_id 必传";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if (string.IsNullOrEmpty(orderType))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_type 参数必传";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string    appId       = ""; //appid
            string    mchId       = ""; //mchid
            string    key         = ""; //key
            string    openId      = ""; //openid
            string    ip          = ""; //ip
            string    body        = ""; //订单内容
            decimal   totalAmount = 0;  //订单金额
            PayConfig payConfig   = bllPay.GetPayConfig();

            if (payConfig == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "请先填写支付配置信息";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if ((string.IsNullOrEmpty(payConfig.WXAppId)) || (string.IsNullOrEmpty(payConfig.WXMCH_ID)) || (string.IsNullOrEmpty(payConfig.WXPartnerKey)))
            {
                resp.errcode = 1;
                resp.errmsg  = "请先完善支付配置信息";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            appId  = payConfig.WXAppId;
            mchId  = payConfig.WXMCH_ID;
            key    = payConfig.WXPartnerKey;
            openId = currentUserInfo.WXOpenId;
            ip     = context.Request.UserHostAddress;
            string notifyUrl = baseUrl + "/WxPayNotify/NotifyV2.aspx";//支付通知地址//默认商城

            switch (orderType)
            {
            case "mall":
                #region 商城
                var orderInfo = bllMall.GetOrderInfo(orderId);
                if (orderInfo == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号不存在";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfo.OrderUserID != currentUserInfo.UserID)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号无效";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfo.PaymentStatus == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                totalAmount = orderInfo.TotalAmount;
                #endregion
                break;

            case "crowdfund":
                #region 众筹
                notifyUrl = baseUrl + "/WxPayNotify/NotifyCrowdFundV2.aspx";
                var orderInfoCrowd = bllMall.Get <CrowdFundRecord>(string.Format(" RecordID={0}", orderId));
                if (orderInfoCrowd == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号不存在";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.UserID != currentUserInfo.UserID)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号无效";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.Status == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                totalAmount = orderInfoCrowd.Amount;
                #endregion
                break;

            default:
                resp.errcode = 1;
                resp.errmsg  = "order_type 不支持";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string   payReqStr   = bllPay.GetBrandWcPayRequest(orderId, totalAmount, appId, mchId, key, openId, ip, notifyUrl, body);
            WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <WXPayReq>(payReqStr);
            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    pay_req = payReqModel
                }));
            }
            resp.errcode = 1;
            resp.errmsg  = "fail";
            return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }
Exemple #4
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string BrandWcPayRequest(HttpContext context)
        {
            if (!bllPay.IsWeiXinBrowser)
            {
                resp.errcode = 1;
                resp.errmsg  = "请在微信中打开";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string  orderId     = context.Request["order_id"];
            decimal totalAmount = 0;                                      //订单金额
            string  appId       = "";                                     //微信AppId
            string  mchId       = "";                                     //商户号
            string  key         = "";                                     //api密钥
            string  openId      = "";                                     //openid
            string  ip          = "";                                     //ip
            string  notifyUrl   = baseUrl + "/WxPayNotify/NotifyV2.aspx"; //支付通知地址
            string  body        = "";                                     //订单内容

            if (string.IsNullOrEmpty(orderId))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_id 必传";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            var orderInfo = bllMall.GetOrderInfo(orderId);

            if (orderInfo != null)
            {
                totalAmount = orderInfo.TotalAmount;
                //if (orderInfo.OrderUserID != CurrentUserInfo.UserID)
                //{
                //    resp.errcode = 1;
                //    resp.errmsg = "订单号无效";
                //    return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
                //}
                if (orderInfo.PaymentStatus == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "该订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }

                //更改支付方式
                bllMall.Update(orderInfo, " PaymentType=2 ", string.Format(" (OrderID = '{0}' Or ParentOrderId='{0}') ", orderInfo.OrderID));

                //resp.errcode = 1;
                //resp.errmsg = "订单号不存在";
                //return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
            }
            else
            {
                #region 众筹
                var orderInfoCrowd = bllMall.Get <CrowdFundRecord>(string.Format(" RecordID={0}", orderId));
                if (orderInfoCrowd == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号不存在";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.UserID != currentUserInfo.UserID)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号无效";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.Status == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                totalAmount = orderInfoCrowd.Amount;
                notifyUrl   = baseUrl + "/WxPayNotify/NotifyCrowdFundV2.aspx";
                #endregion
            }

            PayConfig payConfig = bllPay.GetPayConfig();
            if (payConfig == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if ((string.IsNullOrEmpty(payConfig.WXAppId)) || (string.IsNullOrEmpty(payConfig.WXMCH_ID)) || (string.IsNullOrEmpty(payConfig.WXPartnerKey)))
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            appId  = payConfig.WXAppId;
            mchId  = payConfig.WXMCH_ID;
            key    = payConfig.WXPartnerKey;
            openId = currentUserInfo.WXOpenId;
            ip     = context.Request.UserHostAddress;
            string   payReqStr   = bllPay.GetBrandWcPayRequest(orderId, totalAmount, appId, mchId, key, openId, ip, notifyUrl, body);
            WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <WXPayReq>(payReqStr);
            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    pay_req = payReqModel
                }));
            }
            resp.errcode = 1;
            resp.errmsg  = "获取配置失败";
            return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }
Exemple #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                #region 检查订单是否可以支付
                if (Request["oid"] == null)
                {
                    Response.Write("订单无效");
                    Response.End();
                }
                int OrderId;
                if (!int.TryParse(Request["oid"], out OrderId))
                {
                    Response.Write("订单无效");
                    Response.End();
                }
                Order = bllOrder.GetOrderPay(OrderId.ToString());
                if (Order == null)
                {
                    Response.Write("订单无效");
                    Response.End();
                }
                if (!Order.Status.Equals(0))
                {
                    Response.Write("订单不是未付款状态");
                    Response.End();
                }
                #endregion

                #region 生成预支付ID
                BLLJIMP.Model.PayConfig PayConfig = bllPay.GetPayConfig();
                var non_str = Payment.WeiXin.CommonUtil.CreateNoncestr();//随机串
                //

                Dictionary <string, string> Dic = new Dictionary <string, string>();
                Dic.Add("appid", PayConfig.WXAppId);

                Dic.Add("body", "订单号" + Order.OrderId);

                Dic.Add("mch_id", PayConfig.WXMCH_ID);

                Dic.Add("nonce_str", non_str);

                Dic.Add("out_trade_no", Order.OrderId);

                Dic.Add("openid", bllPay.GetCurrentUserInfo().WXOpenId);

                Dic.Add("spbill_create_ip", Request.UserHostAddress);

                Dic.Add("total_fee", (Order.Total_Fee * 100).ToString("F0"));

                Dic.Add("notify_url", string.Format("http://{0}/WxPayNotify/NotifyVote.aspx", Request.Url.Host));

                Dic.Add("trade_type", "JSAPI");
                string strtemp = Payment.WeiXin.CommonUtil.FormatBizQueryParaMap(Dic, false);
                string sign    = MD5SignUtil.Sign(strtemp, PayConfig.WXPartnerKey);
                Dic = (from entry in Dic
                       orderby entry.Key ascending
                       select entry).ToDictionary(pair => pair.Key, pair => pair.Value);
                Dic.Add("sign", sign);

                string         postdata     = Payment.WeiXin.CommonUtil.ArrayToXml(Dic);
                string         url          = "https://api.mch.weixin.qq.com/pay/unifiedorder";
                HttpWebRequest req          = (HttpWebRequest)WebRequest.Create(url);
                byte[]         requestBytes = System.Text.Encoding.UTF8.GetBytes(postdata);
                req.Method        = "POST";
                req.ContentType   = "application/x-www-form-urlencoded";
                req.ContentLength = requestBytes.Length;
                Stream requestStream = req.GetRequestStream();
                requestStream.Write(requestBytes, 0, requestBytes.Length);
                requestStream.Close();

                HttpWebResponse res     = (HttpWebResponse)req.GetResponse();
                StreamReader    sr      = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
                string          backstr = sr.ReadToEnd();
                sr.Close();
                res.Close();
                var result      = XDocument.Parse(backstr);
                var return_code = result.Element("xml").Element("return_code").Value;
                //if (!return_code.ToUpper().Equals("SUCCESS"))
                //{
                //    Response.Write(backstr);
                //    return;
                //}
                var    rusult_code = result.Element("xml").Element("result_code").Value;
                string prepay_id   = "";
                if (return_code.ToUpper().Equals("SUCCESS") && (rusult_code.ToUpper().Equals("SUCCESS")))
                {
                    prepay_id = result.Element("xml").Element("prepay_id").Value;
                }
                #endregion

                #region 生成支付请求
                WXPayReq reqwx     = new WXPayReq();
                string   timeStamp = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString();
                reqwx.appId     = PayConfig.WXAppId;
                reqwx.nonceStr  = non_str;
                reqwx.package   = "prepay_id=" + prepay_id;
                reqwx.signType  = "MD5";
                reqwx.timeStamp = timeStamp;

                Dictionary <string, string> DicNew = new Dictionary <string, string>();
                DicNew.Add("appId", reqwx.appId);
                DicNew.Add("timeStamp", reqwx.timeStamp);
                DicNew.Add("nonceStr", reqwx.nonceStr);
                DicNew.Add("package", reqwx.package);
                DicNew.Add("signType", "MD5");
                string strtemp1 = Payment.WeiXin.CommonUtil.FormatQueryParaMap(DicNew);
                string PaySign  = MD5SignUtil.Sign(strtemp1, PayConfig.WXPartnerKey);
                reqwx.paySign = PaySign;
                WxPayReq      = ZentCloud.Common.JSONHelper.ObjectToJson(reqwx);
                #endregion
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                Response.End();
            }
        }