專案中選用大名鼎鼎的 Senparc 微信開發套件

獲取臨時票證處理常式的程式碼 (GetgVXinInfo.ashx)

using Senparc.Weixin;
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.Entities;
using Senparc.Weixin.MP.CommonAPIs;
using ShouJia.BO;
using ShouJia.Facades;
using ShouJia.Debugger;
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Web; namespace ShouJia.VXinWeb.User.ashx
{
/// <summary>
/// VXinInfo 的摘要描述
/// </summary>
public class GetVXinInfo : IHttpHandler
{ public void ProcessRequest(HttpContext c)
{
//string GarageID = c.Request.QueryString["xlc_id"];
string GarageID = "";
string Url = c.Request.UrlReferrer.ToString(); WebLogs.Debug("Start for GetVXinInfo ", "Start");
WebLogs.Debug("Get GarageID", GarageID);
WebLogs.Debug("Get URL", Url); SendVXinInfo(GarageID, Url, c); WebLogs.Debug("End for GetVXinInfo", "End");
} private void SendVXinInfo(string garageID, string url, HttpContext c)
{
VXConfigInfo vxi = WeixinBehaviors.GetVXinInfoByGarage(int.Parse(garageID)); AccessTokenContainer.TryGetAccessToken(vxi.AppID, vxi.AppSecret); string access_token = AccessTokenContainer.GetAccessToken(vxi.AppID); WebLogs.Debug("Get AccessToken", access_token);
WebLogs.Debug("Get AppID", vxi.AppID); StringBuilder ticketUrl = new StringBuilder(); ticketUrl.AppendFormat("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token); WebLogs.Debug("Get ticketUrl", ticketUrl.ToString()); string ticket = JsApiTicketContainer.GetJsApiTicket(vxi.AppID);
string oragiralStr = "jsapi_ticket=" + ticket + "&noncestr=" + GetRandomString() + "&timestamp=" + GetTimeTrap() + "&url=" + url;
string signature = SHA1(oragiralStr).ToLower(); WebLogs.Debug("Get ticket", ticket);
WebLogs.Debug("Get oragiralStr", oragiralStr);
WebLogs.Debug("Get signature", signature); c.Response.Write("{\"appid\":\"" + vxi.AppID + "\",\"timestamp\":" + GetTimeTrap() + ",\"nonceStr\":\"" + GetRandomString() + "\",\"signature\":\"" + signature + "\"}");
} private int GetTimeTrap()
{
return (int)DateTime.Now.Ticks;
} private string GetRandomString()
{
string rString = null;
Random ran = new Random((int)DateTime.Now.Ticks); for (int i = ; i < ; i++)
rString += (char)ran.Next((int)'a', (int)'z'); return rString;
} private string SHA1(string src)
{
byte[] cleanBytes = Encoding.Default.GetBytes(src);
byte[] hashedBytes = System.Security.Cryptography.SHA1.Create().ComputeHash(cleanBytes); return BitConverter.ToString(hashedBytes).Replace("-", "");
} public bool IsReusable
{
get
{
return false;
}
}
}
}

前端如何呼叫獲取票證處理常式 (以下為前端頁面的 js 程式碼片段,僅摘錄重點)

    $.ajax({
url: "/user/ashx/GetVXinInfo.ashx?xlc_id=" + xlcId,
success: function (data) {
if (data != "error")
{
var wxInfo = $.parseJSON(data); wx.config({
debug: false, // 羲覃彸耀宒,覃蚚腔垀衄api腔殿隙硉頗婓諦誧傷alert堤懂ㄛ猁脤艘換腔統杅ㄛ褫眕婓pc傷湖羲ㄛ統杅陓洘頗籵徹log湖堤ㄛ躺婓pc傷奀符頗湖荂
appId: wxInfo.appid, // 斛沓ㄛ鼠笲瘍腔峔珨梓妎
timestamp: wxInfo.timestamp, // 斛沓ㄛ汜傖靡腔奀潔期
nonceStr: wxInfo.nonceStr, // 斛沓ㄛ汜傖靡腔呴儂揹
signature: wxInfo.signature,// 斛沓ㄛ靡ㄛ獗蜇翹1
jsApiList: ['getLocation', 'closeWindow'] // 斛沓ㄛ剒猁妏蚚腔JS諉諳蹈桶ㄛ垀衄JS諉諳蹈桶獗蜇翹2
}); wx.ready(function () {
wx.getLocation({
type: 'wgs84',
success: function (res) {
$.get(
"/user/ashx/GetLocation.ashx",
{ "Location_x": res.latitude, "Location_y": res.longitude },
function (data) {
GetGarages($("#L_xlc")[], data); // 根據地理位置座標篩選附近廠家,並將篩選結果填入前端頁面的下拉選單
}
);
}
});
});
}
else
{
GetGarages($("#L_xlc")[], "")
}
}
});

實際案例: 獲取臨時票証 (JsApi Ticket)的更多相关文章

  1. 實際案例: 已知要獲取臨時票証 (JsApi Ticket) 才能調用的接口

    需獲取票証才能調用的接口,簡單列示如下: 一.基礎類 1. wx.checkJsApi (當前客戶端是否支持指定JS) 二.分享類 1.wx.onMenuShareTimeline (分享到朋友圈)2 ...

  2. Android Training精要(五)讀取Bitmap對象實際的尺寸和類型

    讀取Bitmap對象實際的尺寸和類型 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecode ...

  3. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  4. 自動獲取外網IP并發郵件

    問題: 公司有一Web系統需開放給香港Office公司查詢資料,但最近動態域名需實名認證, 因系統較小型,非公開大範圍使用,所以再認證一域名也沒多大必要, 所以想定時生成一封能查詢外網IP的郵件發送給 ...

  5. C#-Windows服務以LocalSystem賬戶安裝的話無法獲取我的文檔路徑

    如圖,如果Window服務以上圖 Account安裝運行,則無法獲取到 以下路徑: System.Environment.GetFolderPath(Environment.SpecialFolder ...

  6. jquery html 獲取或設置

    jquery提供操作html元素的屬性和內容的強大方法. DOM就是獨立于平台和語言的界面,允許程序和腳本動態訪問和改變DOM的內容,結構和樣式. 獲取內容:text(),html(),val(),a ...

  7. Oracle臨時表空間過大問題解決

    查詢資料庫伺服器時,發現資料庫伺服器磁片使用空間達到了98%,分析總共的資料檔案也不可能達到如此大,經過查詢發現原來臨時表空間的使用方式達到了 32G,導致磁碟空間使用緊張.搜索了相應的文檔與資料後, ...

  8. 在windows平臺下使用cygwin獲取root用戶權限

    最近在使用cygwin時發現一個問題,當我要使用root用戶權限時,竟然創建不了root賬戶.最後在網上找了下後,暫時衹找到了通過更改當前用戶權限獲得root權限的方法,具體如下: 实际环境:win1 ...

  9. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

随机推荐

  1. react在jsx语法中实现for循环

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  2. location.hash详解

    一.#的涵义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如, http://www.example.com/index.html#print 就代表网页index.html的prin ...

  3. 思达index网站

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. xampp windows版本安装后无法使用大文件下载的解决办法

    找到httpd.conf 在<Directory "C:/xampp/htdocs"> </Directory>添加EnableSendfile On

  5. Python描述符(descriptor)解密(转)

    原文:http://www.geekfan.net/7862/ Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装 ...

  6. 8天掌握EF的Code First开发系列之5 视图、存储过程和异步API

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 视图View 存储过程 异步API 本章小结 咱们接着上一篇继续深入学习,这一篇说说Entity Framewo ...

  7. ---Linux 10 年的硕果累累啊!

    http://mt.sohu.com/20160128/n436204298.shtml

  8. LR自定义函数以及调用

    2.2.自定义函数以及调用 2.2.1.虚拟用户编程,使用C# 语言DLL 在VS中建立DLL类库项目,编写函数时使用public声明:实现函数后编译生成DLL: 在LR中建立 .Net Vuser脚 ...

  9. 关于rank、dense_rank、ROW_NUMBER及OVER(PARTITION BY)、OVER(ORDER BY)的一些用法

    CREATE TABLE t_harry ( id int NOT NULL, ) DEFAULT NULL, ChannelID ) DEFAULT NULL, TimeStamp datetime ...

  10. vc++ 程序开机自启动和取消启动

    //开机启动 int CMainWnd::CreateRun() { //添加以下代码 HKEY hKey; }; //得到程序自身的全路径 DWORD dwRet = GetModuleFileNa ...