Browse Source

增加得到JS签名的方法

master
yashen 8 years ago
parent
commit
46bd392afb
4 changed files with 53 additions and 0 deletions
  1. +1
    -0
      B3WeChat/B3WeChat.csproj
  2. +14
    -0
      B3WeChat/Entities/GetTicketResponse.cs
  3. +6
    -0
      B3WeChat/Rpcs/WeChatUserRpc.cs
  4. +32
    -0
      B3WeChat/Utils/InOutMessageUtil.cs

+ 1
- 0
B3WeChat/B3WeChat.csproj View File

@ -122,6 +122,7 @@
<Compile Include="CustomerUserContext.cs" />
<Compile Include="Entities\ErrorObject.cs" />
<Compile Include="Entities\EventType.cs" />
<Compile Include="Entities\GetTicketResponse.cs" />
<Compile Include="Entities\MeassageBody.cs" />
<Compile Include="Entities\MessageType.cs" />
<Compile Include="Entities\OpenIDObject.cs" />


+ 14
- 0
B3WeChat/Entities/GetTicketResponse.cs View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat.Entities
{
public class GetTicketResponse:WeChatResponseBase
{
public string ticket { get; set; }
public int expires_in { get; set; }
}
}

+ 6
- 0
B3WeChat/Rpcs/WeChatUserRpc.cs View File

@ -1,6 +1,7 @@
using BWP.B3WeChat.BL;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using BWP.B3WeChat.Utils;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
@ -87,5 +88,10 @@ namespace BWP.B3WeChat.Rpcs
}
[Rpc]
public static string GetJsApiSignature(string noncestr, string timestamp, string url)
{
return InOutMessageUtil.GetJsApiSignature(noncestr, timestamp, url);
}
}
}

+ 32
- 0
B3WeChat/Utils/InOutMessageUtil.cs View File

@ -2,6 +2,7 @@
using BWP.B3WeChat.BO;
using BWP.B3WeChat.Entities;
using Forks.Utils;
using Forks.Utils.Caching;
using System;
using System.Collections.Generic;
using System.IO;
@ -140,6 +141,37 @@ namespace BWP.B3WeChat.Utils
GetRequest<WeChatResponseBase>(url);
}
static DateTime? ticketExpiredTime;
static string GetJsApiTicket()
{
var time = DateTime.Now;
if (ticketExpiredTime == null || ticketExpiredTime.Value > time)
{
//过期时间是2小时,不过这里小一些,避免边界问题
ticketExpiredTime = time.Add(new TimeSpan(1, 30, 30));
}
var key = string.Format("{0}_GetJsApiTicket_{1}", TOKEN, ticketExpiredTime.Value.Ticks);
return CacheManager.GetOrSet(key, (args) =>
{
var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", TOKEN);
var res = GetRequest<GetTicketResponse>(url);
return res.ticket;
});
}
public static string GetJsApiSignature(string noncestr, string timestamp, string url)
{
var origin = string.Format("jsapi_ticket={0}&=noncestr{1}&timestamp={2}&url={3}", GetJsApiTicket(),noncestr, timestamp, url);
return FormsAuthentication.HashPasswordForStoringInConfigFile(origin, "SHA1").ToLower();
}
public static List<string> GetOpenIDList()
{


Loading…
Cancel
Save