zoukankan      html  css  js  c++  java
  • mvc 微信支付

    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>支付</title>
        <script src="~/Scripts/jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    </head>
    <body>
        <div> 
            正在支付...
        </div>
        <input type="hidden" id="orderd" value="@ViewBag.ordernum" />
    </body>
    </html>
    <script>
        var ordernum=$('#orderd').val();
        $(function () {
            gopay();
        })
        //调用微信JS api 支付
        function onBridgeReady() {
            var dataParam =@Html.Raw(ViewBag.wxJsApiParam);
            WeixinJSBridge.invoke(
            'getBrandWCPayRequest',
            dataParam,//,josn串
            function (res) {
                if (res.err_msg == "get_brand_wcpay_request:ok") {
                    tim_j();
                }
                //WeixinJSBridge.log(res.err_msg);
                //alert(res.err_code + res.err_desc + res.err_msg);
            }
            );
        }
        function gopay() {
            if (typeof WeixinJSBridge == "undefined"){
                if( document.addEventListener ){
                    document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
                }else if (document.attachEvent){
                    document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
                    document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
                }
            }else{
                onBridgeReady();
            }
        }
    
        function tim_j() {
    
            $.post('/RedPack/ListenOrder', { OrderNum: ordernum }, function (data) {
                if (data) {
                    switch (data) {
                        case "1": location.href = "PaySuccess?ordernum="+ordernum; break;
                        case "2": {
                            setTimeout(function () {
                                tim_j();
                            }, 1000);
                            break;
                        }
                        default: {
                            alert(data);
                        }
                    }
                }
            });
        }
    </script>

    action

     /// <summary>
            /// 调起微信支付
            /// </summary>
            /// <returns></returns>
            public ActionResult Pay()
            {
    
                int p;
                if (!int.TryParse(Request["p"], out p))
                    return Redirect("Index");
                Model.Product product = ProductService.LoadEntities(s => s.ProductId == p).FirstOrDefault();
                if (product == null)
                    return Redirect("Index");
                if (product.ProductCode.Count(s => !s.IsSell) == 0)
                    return Redirect("SellOut?p=" + p);
                Model.Order order = OrderService.LoadEntities(s => s.Product.ProductId == p && SSID == s.UserId).OrderByDescending(s => s.OrderId).FirstOrDefault();
                string wxJsApiParam = null;
                if (order != null)
                {
                    wxJsApiParam = Common.CacheContainer.GetData<string>(Model.Enums.CacheEnum.公众号支付参数.ToString() + order.OrderNum);
                    if (!string.IsNullOrWhiteSpace(wxJsApiParam))
                    {
                        ViewBag.wxJsApiParam = wxJsApiParam;
                        ViewBag.ordernum = order.OrderNum;
                        return View();
                    }
                }
    
                order = new Model.Order();
                order.CreateTime = DateTime.Now;
                order.OrderNum = Common.StringHelper.GenerateId();
                order.ProductId = p;
                order.UserId = SSID;
                order.Status = (int)Model.Enums.OrderStatus.未支付;
                order.Price = product.Price;
                order.RebackRedPack = GetRandom(product);
                order = OrderService.AddEntity(order);
    
                try
                {
                    wxJsApiParam = Utility.WxPayHubba.GetWxJsApiParam(this, UUID, order.OrderNum, product.Price, "***订单");
                    Common.CacheContainer.SetData(Model.Enums.CacheEnum.公众号支付参数.ToString() + order.OrderNum, wxJsApiParam, 3599 * 24);
                    ViewBag.wxJsApiParam = wxJsApiParam;
                    ViewBag.ordernum = order.OrderNum;
                    return View();
                }
                catch (Exception ex)
                {
                    Common.LogHelper.WriteLogFile("jsApiPay general wxjsapiparam error = " + ex.Message);
                }
                return View();
            }
    GetWxJsApiParam是封装好的微信支付方法
  • 相关阅读:
    3. applicationCache
    9. 水平垂直居中的方法
    2. 贝塞尔曲线bezierCurveTo
    相识python 之小数据池 集合
    相识python --------- 列表 元祖 range 范围
    相识python while循环 代码块 编码初识 运算符
    相识python第二步:变量 注释 str int bool 用户交换 流程控制语句的解释用法
    python学习基础知识
    python的基础知识
    我对python的见解
  • 原文地址:https://www.cnblogs.com/Celebrator/p/6370591.html
Copyright © 2011-2022 走看看