Beispiel #1
0
        public async Task <IActionResult> WxPayIndex()
        {
            // 获取openId
            var openId = HttpContext.Session.GetString("OpenId");

            if (string.IsNullOrEmpty(openId))
            {
                return(Json(Url.Action("Index", "Home")));
            }
            var accessToken = HttpContext.Session.GetString("accessToken");

            HttpContext.Session.SetString("SiteUrl", _siteUrl);

            // 根据openId 查询用户
            var user = _authSrv.GetUserByExternalId(openId, 1);

            // 获取微信用户信息
            OAuthUserInfo userInfo = OAuthApi.GetUserInfo(accessToken, openId);

            // 用户存在则获取信息,不存在则创建用户
            if (user == null)
            {
                var newUser = new BaseUser {
                    UserName = openId, ExternalId = openId, ExternalType = 1, ExternalName = userInfo.nickname
                };
                var result = await _authSrv.CreateUser(newUser, openId);

                if (result.Succeeded)
                {
                    var role = await _authSrv.AddRolesAsync(openId, new string[] { "SysUser" });
                }
                user = newUser;
            }
            var paidOrders = _orderSrv.GetPaidOrders().Where(q => (q.OrderType == OrderType.BuyInStore || q.OrderType == OrderType.BuyOnline) && q.BuyerIdentity == openId);

            // Card
            var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(TenPayV3Info.AppId, TenPayV3Info.AppSecret, Request.AbsoluteUri());
            var api_ticket     = WxCardApiTicketContainer.TryGetWxCardApiTicket(TenPayV3Info.AppId, TenPayV3Info.AppSecret);

            // var openId = HttpContext.Session.GetString("OpenId");
            var timeStamp = TenPayV3Util.GetTimestamp();
            var nonceStr  = TenPayV3Util.GetNoncestr();
            var sign      = JSSDKHelper.GetcardExtSign(api_ticket, timeStamp, "pukHe541WmaHEBgW3gACiBCD4EbY", nonceStr);
            var cardExt   = new { timestamp = timeStamp, signature = sign, nonce_str = nonceStr };

            // 登陆Identity用户
            await _authSrv.Login(user);

            ViewData["credit"]         = user.Credit;
            ViewData["biz"]            = _biz;
            ViewData["userInfo"]       = userInfo;
            ViewData["paidOrders"]     = paidOrders;
            ViewData["jssdkUiPackage"] = jssdkUiPackage;
            ViewData["cardExt"]        = JsonConvert.SerializeObject(cardExt);

            return(View());
            // 前端菜单:直接支付,跳转js支付,余额支付跳转/Home/CreditPay,套餐支付:
        }