123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- #region Apache License Version 2.0
- #endregion Apache License Version 2.0
- using System;
- using System.Linq;
- using System.Collections;
- using System.Text;
- using System.Threading.Tasks;
- using Senparc.Weixin.Helpers;
- using Senparc.Weixin.MP.CommonAPIs;
- using Senparc.Weixin.MP.Containers;
- using Senparc.CO2NET.Helpers;
- namespace Senparc.Weixin.MP.Helpers
- {
-
-
-
- public class JSSDKHelper
- {
-
-
-
-
- public static string GetNoncestr()
- {
- return EncryptHelper.GetMD5(Guid.NewGuid().ToString(), "UTF-8");
- }
-
-
-
-
- public static string GetTimestamp()
- {
-
-
- var ts = DateTimeHelper.GetUnixDateTime(SystemTime.Now);
- return ts.ToString();
- }
-
-
-
-
- private static string CreateSha1(Hashtable parameters)
- {
- var sb = new StringBuilder();
- var akeys = new ArrayList(parameters.Keys);
- akeys.Sort(ASCIISort.Create());
- foreach (var k in akeys)
- {
- if (parameters[k] != null)
- {
- var v = (string)parameters[k];
- if (sb.Length == 0)
- {
- sb.Append(k + "=" + v);
- }
- else
- {
- sb.Append("&" + k + "=" + v);
- }
- }
- }
- return EncryptHelper.GetSha1(sb.ToString());
- }
-
-
-
-
- private static string CreateCardSha1(Hashtable parameters)
- {
- var sb = new StringBuilder();
- var akeys = new ArrayList(parameters.Keys);
- akeys.Sort(ASCIISort.Create());
- foreach (var k in akeys)
- {
- if (parameters[k] != null)
- {
- var v = (string)parameters[k];
- sb.Append(v);
- }
- }
- return EncryptHelper.GetSha1(sb.ToString()).ToString().ToLower();
- }
-
-
-
-
-
- private static string CreateNonekeySha1(Hashtable parameters)
- {
- var sb = new StringBuilder();
- var aValues = new ArrayList(parameters.Values);
- aValues.Sort(ASCIISort.Create());
- foreach (var v in aValues)
- {
- sb.Append(v);
- }
- return EncryptHelper.GetSha1(sb.ToString()).ToString().ToLower();
- }
-
-
-
-
-
-
-
-
- public static string GetSignature(string ticket, string noncestr, string timestamp, string url)
- {
- var parameters = new Hashtable();
- parameters.Add("jsapi_ticket", ticket);
- parameters.Add("noncestr", noncestr);
- parameters.Add("timestamp", timestamp);
- parameters.Add("url", url);
- return CreateSha1(parameters);
- }
-
-
-
-
-
-
-
-
-
- public static string GetAddrSign(string appId, string oauthAccessToken, string noncestr, string timestamp,
- string url)
- {
-
-
- var parameters = new Hashtable();
- parameters.Add("appid", appId);
- parameters.Add("noncestr", noncestr);
- parameters.Add("timestamp", timestamp);
- parameters.Add("url", url);
- parameters.Add("accesstoken", oauthAccessToken);
- return CreateSha1(parameters);
- }
-
-
-
-
-
-
-
-
-
-
-
- public static string GetCardSign(string appId, string appSecret, string locationId, string noncestr,
- string timestamp, string cardId, string cardType)
- {
- var parameters = new Hashtable();
- parameters.Add("appId", appId);
- parameters.Add("appsecret", appSecret);
- parameters.Add("location_id", locationId);
- parameters.Add("nonce_str", noncestr);
- parameters.Add("times_tamp", timestamp);
- parameters.Add("card_id", cardId);
- parameters.Add("card_type", cardType);
- return CreateCardSha1(parameters);
- }
-
-
-
-
-
-
-
-
-
-
- public static string GetcardExtSign(string api_ticket, string timestamp, string card_id, string nonce_str = "",
- string code = "", string openid = "")
- {
- var parameters = new Hashtable();
- parameters.Add("api_ticket", api_ticket);
- parameters.Add("timestamp", timestamp);
- parameters.Add("card_id", card_id);
- if (!string.IsNullOrEmpty(code))
- {
- parameters.Add("code", code);
- }
- if (!string.IsNullOrEmpty(openid))
- {
- parameters.Add("openid", openid);
- }
- if (!string.IsNullOrEmpty(nonce_str))
- {
- parameters.Add("nonce_str", nonce_str);
- }
- return CreateNonekeySha1(parameters);
- }
-
-
-
-
-
-
-
- public static JsSdkUiPackage GetJsSdkUiPackage(string appId, string appSecret, string url)
- {
-
- var timestamp = GetTimestamp();
-
- string nonceStr = GetNoncestr();
- string ticket = JsApiTicketContainer.TryGetJsApiTicket(appId, appSecret);
-
- string signature = JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, url);
-
- return new JsSdkUiPackage(appId, timestamp, nonceStr, signature);
- }
- #if !NET35 && !NET40
- #region 异步方法
-
-
-
-
-
-
-
- public static async Task<JsSdkUiPackage> GetJsSdkUiPackageAsync(string appId, string appSecret, string url)
- {
-
- var timestamp = GetTimestamp();
-
- string nonceStr = GetNoncestr();
- string ticket = await JsApiTicketContainer.TryGetJsApiTicketAsync(appId, appSecret);
-
- string signature = JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, url);
-
- return new JsSdkUiPackage(appId, timestamp, nonceStr, signature);
- }
- #endregion
- #endif
- }
- }
|