示例#1
0
    public static string ShareConfig(string shareurl)
    {
        var access_token = "";

        //if (HttpContext.Current.Cache.Get("access_token_js") == null)
        //{
        access_token = JSAPI.getToken();
        //    HttpContext.Current.Cache.Insert("access_token_js", access_token,null,DateTime.Now.AddSeconds(720),new TimeSpan(0,0,12));
        //}
        //else
        //{
        //    access_token = HttpContext.Current.Cache.Get("access_token_js").ToString();
        //}

        var ticket = JSAPI.GetTickect(access_token);

        var result = new ShareConfigContract();

        result.appid        = WxPayConfig.APPID;
        result.timestamp    = WxPayApi.GenerateTimeStamp();
        result.nonceStr     = WxPayApi.GenerateNonceStr();
        result.jsapi_ticket = ticket;
        var str = "";

        result.signture = JSAPI.GetSignature(ticket, result.nonceStr, result.timestamp, shareurl, out str);
        result.str      = str;

        return(JsonConvert.SerializeObject(result));
    }
示例#2
0
        public void Initialize()
        {
            AssertNotInitialized();

            // Repack in case members were changed
            ClassPtr.Pack(ref ClassDefinition);

            JSNative ctorDelegate;

            if (ManagedConstructor != null)
            {
                ctorDelegate = ManagedConstructor.WrappedMethod;
            }
            else
            {
                ctorDelegate = NativeConstructor.Target;
            }

            Prototype = new JSObjectReference(Context, JSAPI.InitClass(
                                                  Context, GlobalObject, _ParentPrototype,
                                                  ClassPtr, ctorDelegate, _NumConstructorArguments,
                                                  JSPropertySpecPtr.Zero,
                                                  JSFunctionSpecPtr.Zero,
                                                  JSPropertySpecPtr.Zero,
                                                  JSFunctionSpecPtr.Zero
                                                  ));

            JSObjectPtr ctor = JSAPI.GetConstructor(Context, Prototype);

            Constructor = new JSObjectReference(Context, ctor);
        }
示例#3
0
        public TestContext(JSRuntime runtime = null)
        {
            Assert.IsTrue(JSAPI.IsInitialized);

            if (runtime == null)
            {
                Runtime     = new JSRuntime();
                OwnsRuntime = true;
            }
            else
            {
                Runtime     = runtime;
                OwnsRuntime = false;
            }

            Context          = new JSContext(Runtime);
            Request          = Context.Request();
            Global           = new JSGlobalObject(Context);
            CompartmentEntry = Context.EnterCompartment(Global);

            if (!JSAPI.InitStandardClasses(Context, Global))
            {
                throw new Exception("Failed to initialize standard classes");
            }
        }
示例#4
0
        public static unsafe Rooted <JS.Value> ManagedToNativeException(JSContextPtr cx, Exception managedException)
        {
            var errorRoot = NewError(cx, managedException.Message);
            var errorObj  = errorRoot.Value.AsObject;

            var existingStackRoot = new Rooted <JS.Value>(cx);

            JSAPI.GetProperty(
                cx, &errorObj, "stack", existingStackRoot
                );
            var existingStackText = existingStackRoot.Value.ToManagedString(cx);

            JSAPI.SetProperty(
                cx, &errorObj, "stack",
                new JSString(
                    cx,
                    managedException.StackTrace +
                    "\n//---- JS-to-native boundary ----//\n" +
                    existingStackText
                    )
                );

            if (managedException.InnerException != null)
            {
                var inner = ManagedToNativeException(cx, managedException.InnerException);

                JSAPI.SetProperty(cx, &errorObj, "innerException", inner);
            }

            return(errorRoot);
        }
示例#5
0
        /// <summary>
        /// 分享到朋友圈参数自定义
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public JsSDKResponse GetJsSDKTicket(string url)
        {
            var jssdk_ticket = JSAPI.GetJsSDKTicket(WxPayConfig.APPID, WxPayConfig.APPSECRET);
            var nonceStr     = WxPayApi.GenerateNonceStr();
            var timestamp    = WxPayApi.GenerateTimeStamp();
            //var domain = weChat.BackDomain;
            //url = domain + url;
            var string1   = "";
            var signature = JSAPI.GetSignature(jssdk_ticket, nonceStr, timestamp, url, out string1);
            var model     = new JsSDKResponse
            {
                Debug       = true,
                AppId       = WxPayConfig.APPID,
                Timestamp   = WxPayApi.GenerateTimeStamp(),
                NonceStr    = WxPayApi.GenerateNonceStr(),
                Signature   = signature,
                ShareUrl    = url,
                JsapiTicket = jssdk_ticket,
                //ShareImg = domain + Url.Content("/images/noimg.jpg"),
                String1   = string1,
                JsApiList = System.Configuration.ConfigurationManager.AppSettings["jsApiList"].Split(','),
            };

            return(model);
        }
示例#6
0
        public static JS.Value ManagedToNative(JSContextPtr cx, object value)
        {
            if (value == null)
            {
                return(JS.Value.Null);
            }

            var s = value as string;

            if (s != null)
            {
                var pString = JSAPI.NewStringCopy(cx, s);
                return(new JS.Value(pString));
            }

            var a = value as Array;

            if (a != null)
            {
                var va = new JS.ValueArray((uint)a.Length);
                for (int i = 0, l = a.Length; i < l; i++)
                {
                    va.Elements[i] = ManagedToNative(cx, a.GetValue(i));
                }

                JS.ValueArrayPtr vaPtr = va;
                var pArray             = JSAPI.NewArrayObject(cx, ref vaPtr);
                return(new JS.Value(pArray));
            }

            return((JS.Value)Activator.CreateInstance(typeof(JS.Value), value));
        }
示例#7
0
        public ActionResult Pay()
        {
            var appId       = WeixinConfig.AppID;
            var nonceStr    = Util.CreateNonce_str();
            var timestamp   = Util.CreateTimestamp();
            var domain      = System.Configuration.ConfigurationManager.AppSettings["Domain"];
            var url         = domain + Request.Url.PathAndQuery;
            var jsTickect   = WeixinConfig.TokenHelper.GetJSTickect();
            var string1     = "";
            var signature   = JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1);
            var userAgent   = Request.UserAgent;
            var userVersion = userAgent.Substring(userAgent.LastIndexOf("/") + 1);//微信版本号高于或者等于5.0才支持微信支付
            var model       = new JSPayModel
            {
                appId       = appId,
                nonceStr    = nonceStr,
                signature   = signature,
                timestamp   = timestamp,
                jsapiTicket = jsTickect,
                string1     = string1,
                userAgent   = userAgent,
                userVersion = userVersion,
            };

            return(View(model));
        }
示例#8
0
        public ActionResult JsApi(string shareUrl = "")
        {
            string url       = "";
            var    appId     = WeixinConfig.AppID;
            var    nonceStr  = Util.CreateNonce_str();
            var    timestamp = Util.CreateTimestamp();
            var    domain    = System.Configuration.ConfigurationManager.AppSettings["Domain"];

            if (string.IsNullOrEmpty(shareUrl))
            {
                url = domain + Request.Url.PathAndQuery;
            }
            else
            {
                url = shareUrl;
            }
            var jsTickect = WeixinConfig.TokenHelper.GetJSTickect();
            var string1   = "";
            var signature = JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1);
            var model     = new JSSDKModel
            {
                appId       = appId,
                nonceStr    = nonceStr,
                signature   = signature,
                timestamp   = timestamp,
                shareUrl    = url,
                jsapiTicket = jsTickect,
                //shareImg = domain + Url.Content("/images/ad.jpg"),
                string1 = string1,
            };

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
示例#9
0
        public unsafe Rooted <Value> InvokeFunction(
            JSContextPtr context,
            JSHandleObject thisReference,
            params Value[] arguments
            )
        {
            fixed(Value *pThis = &this)
            fixed(Value * pArgs = arguments)
            {
                var argsPtr    = new ValueArrayPtr((uint)arguments.Length, (IntPtr)pArgs);
                var resultRoot = new Rooted <Value>(context, Undefined);

                if (JSAPI.CallFunctionValue(
                        context, thisReference,
                        pThis,
                        ref argsPtr,
                        resultRoot
                        ))
                {
                    return(resultRoot);
                }

                resultRoot.Dispose();
                return(null);
            }
        }
示例#10
0
        public ActionResult Index()
        {
            ViewBag.Title = "JSSDK demo";
            var appId     = WeixinConfig.AppID;
            var nonceStr  = JSAPI.CreateNonce_str();
            var timestamp = JSAPI.CreatenTimestamp();
            var domain    = System.Configuration.ConfigurationManager.AppSettings["Domain"];
            var url       = domain + Request.Url.PathAndQuery;
            var jsTickect = WeixinConfig.TokenHelper.GetJSTickect();
            var string1   = "";
            var signature = JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1);
            var model     = new JSSDKModel
            {
                appId       = appId,
                nonceStr    = nonceStr,
                signature   = signature,
                timestamp   = timestamp,
                shareUrl    = url,
                jsapiTicket = jsTickect,
                shareImg    = domain + Url.Content("/images/ad.jpg"),
                string1     = string1,
            };

            return(View(model));
        }
示例#11
0
        public void Dispose(bool collectGarbage = true)
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;
            GC.SuppressFinalize(this);

            WeakReference temp;

            if (!ContextRegistry.TryRemove(Pointer, out temp))
            {
                Debug.WriteLine("Failed to remove context from registry");
            }

            if (collectGarbage)
            {
                JSAPI.DestroyContext(Pointer);
            }
            else
            {
                JSAPI.DestroyContextNoGC(Pointer);
            }
        }
示例#12
0
        public ActionResult Index()
        {
            var appId     = WeixinConfig.AppID;
            var appSecret = WeixinConfig.AppSecret;

            var nonceStr  = Util.CreateNonce_str();
            var timestamp = Util.CreateTimestamp();
            var domain    = System.Configuration.ConfigurationManager.AppSettings["Domain"];
            var url       = domain + Request.Url.PathAndQuery;
            var jsTickect = "";

            using (CommanderServiceClient client = new CommanderServiceClient())
            {
                jsTickect = client.GetJsTicket(appId, appSecret, false);
            }
            var string1   = "";
            var signature = JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1);
            var model     = new JSSDKModel
            {
                appId       = appId,
                nonceStr    = nonceStr,
                signature   = signature,
                timestamp   = timestamp,
                shareUrl    = url,
                jsapiTicket = jsTickect,
                shareImg    = domain + Url.Content("/images/ad.jpg"),
                string1     = string1,
            };

            return(View(model));
        }
示例#13
0
 public static JSObjectPtr CreateInstance(JSContextPtr context)
 {
     return(JSAPI.NewObject(
                context,
                JSClassPtr.Zero,
                JSHandleObject.Zero, JSHandleObject.Zero
                ));
 }
示例#14
0
 private GameEventBus()
 {
     _triggerPools      = new Dictionary <string, List <Trigger> >();
     _apiObj            = new JSAPI(this);
     _waitForAdding     = new Queue <Trigger>();
     _waitForRemoving   = new Queue <Trigger>();
     _waitForPublishing = new Queue <Event>();
 }
示例#15
0
    private IEnumerator _endVoting()
    {
        TwitchBotRequest botRequest = JSAPI.EndVoting();

        yield return(botRequest);

        SetVisible(false);
    }
 public StorySceneContainer()
 {
     _objList          = new IdentifiedObjList <ISceneObject>();
     _playerCharacters = new IdentifiedObjList <Character>();
     _camera           = new Camera();
     _textBoxes        = new List <TextBox>();
     _apiObj           = new JSAPI(this);
 }
示例#17
0
 public JSRuntime(uint maxBytes = 1024 * 1024 * 8)
 {
     Pointer = JSAPI.NewRuntime(maxBytes);
     if (Pointer.IsZero)
     {
         throw new Exception();
     }
 }
示例#18
0
 public static JSObjectPtr CreateInstance(JSContextPtr context)
 {
     return(JSAPI.NewGlobalObject(
                context,
                DefaultClass, null,
                JSOnNewGlobalHookOption.DontFireOnNewGlobalHook,
                ref JSCompartmentOptions.Default
                ));
 }
示例#19
0
        /// <summary>
        /// Creates a this-reference for use inside this class's constructor.
        /// </summary>
        public JS.Value NewObjectForConstructor(uint argc, JSCallArgumentsPtr vp)
        {
            var callArgs = new JSCallArgs(vp, argc);

            return(new JS.Value(
                       JSAPI.NewObjectForConstructor(
                           Context, ClassPtr, ref callArgs
                           )
                       ));
        }
示例#20
0
 public JSArray(
     JSContextPtr context,
     JSObjectPtr obj
     ) : base(context, obj)
 {
     if (!JSAPI.IsArrayObject(context, Root))
     {
         throw new ArgumentException("Value is not an array", "obj");
     }
 }
示例#21
0
        public void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;
            JSAPI.LeaveCompartment(Context, OldCompartment);
        }
示例#22
0
        public void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;
            JSAPI.EndRequest(Context);
        }
示例#23
0
        public unsafe bool IsArray(JSContextPtr context)
        {
            if (ValueType != JSValueType.OBJECT)
            {
                return(false);
            }

            var obj = this.AsObject;

            return(JSAPI.IsArrayObject(context, &obj));
        }
示例#24
0
        private static void ReqWeixinToken()
        {
            var access_token = BasicAPI.GetAccessToken(AppID, AppSecret).access_token;
            var js           = JSAPI.GetTickect(access_token);
            var jssdk_ticket = js.ticket;
            var json         = DynamicJson.Serialize(new weixin_token {
                access_token = access_token, jssdk_ticket = jssdk_ticket
            });

            cache.Insert(AppID, json, null, DateTime.Now.AddSeconds(ACCESS_TOKEN_EXPIRE_SECONDS), System.Web.Caching.Cache.NoSlidingExpiration);
        }
示例#25
0
    IEnumerator Start()
    {
        //UI = GameObject.FindGameObjectWithTag("MainCanvas").GetComponent<TwitchOverworldUI>();
        //StartGettingPlayers();
        TwitchBotRequest playerRequest = JSAPI.GetAllPlayers();

        yield return(playerRequest);

        PopulatePlayerList(playerRequest.Response);

        battlepanel.SetVisible(true);
    }
示例#26
0
        public void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;
            GC.SuppressFinalize(this);

            JSAPI.DestroyRuntime(Pointer);
        }
示例#27
0
 /// <summary>
 /// 微信公众号推送消息 根据OpenID列表群发【订阅号不可用,服务号认证后可用】
 /// </summary>
 /// <param name="content">内容</param>
 /// <param name="OpenIds">OpenID列表</param>
 public bool ReplayOpenids(string content, List <string> OpenIds)
 {
     try
     {
         var accessToken = JSAPI.GetAccessToken(WxPayConfig.APPID, WxPayConfig.APPSECRET);
         //微信公众号推送消息
         AdvanceMassReplayMessageAPI.ReplayOpenids(accessToken.access_token, content, WeixinArtcleType.Text, OpenIds, "", "");
     }
     catch
     {
         return(false);
     }
     return(true);
 }
示例#28
0
        private static Rooted <JS.Value> NewError(JSContextPtr cx, params object[] errorArguments)
        {
            var jsErrorArgs = new JS.ValueArray((uint)errorArguments.Length);

            for (int i = 0; i < errorArguments.Length; i++)
            {
                jsErrorArgs.Elements[i] = ManagedToNative(cx, errorArguments[i]);
            }

            JS.ValueArrayPtr vaPtr = jsErrorArgs;
            return(new Rooted <JS.Value>(
                       cx, new JS.Value(JSAPI.NewError(cx, ref vaPtr))
                       ));
        }
示例#29
0
        public unsafe string ToManagedString(JSContextPtr context)
        {
            fixed(Value *pThis = &this)
            {
                var resultJsString = JSAPI.ToString(context, pThis);

                if (resultJsString.IsZero)
                {
                    return(null);
                }

                return(resultJsString.ToManagedString(context));
            }
        }
示例#30
0
 public Extra(Character item)
 {
     if (item == null)
     {
         throw new ArgumentNullException(nameof(item));
     }
     if (item.Belong != null)
     {
         throw new ArgumentException("This item has already been bound.", nameof(item));
     }
     _item = item;
     item.SetBelong(this);
     _passiveEffects = new ExtraPropertyList <PassiveEffect>(this);
     _apiObj         = new JSAPI(this);
 }