码迷,mamicode.com
首页 > 微信 > 详细

mvc 微信支付

时间:2017-02-06 15:50:05      阅读:450      评论:0      收藏:0      [点我收藏+]

标签:type   uuid   hub   amp   jsb   cache   cep   ack   scripts   

<!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是封装好的微信支付方法

 

mvc 微信支付

标签:type   uuid   hub   amp   jsb   cache   cep   ack   scripts   

原文地址:http://www.cnblogs.com/Celebrator/p/6370591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!