專案中選用大名鼎鼎的 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. sql参数化查询in的参数

    private Query setParameter(Query query, Map<String, Object> map) { if (map != null) { Set<S ...

  2. 利用nodejs的cheerio抓取网站数据

    /*引入模块*/ var http = require('http') var url = 'http://www.cnblogs.com/txxt' var cheerio = require('c ...

  3. 墨卡托投影C#实现

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. UDP发送和接收

    发送函数 public bool udpSend(string ip, int port, byte[] data) { Socket socket = new Socket(AddressFamil ...

  5. redis集群同步迁移方法(一):通过redis replication实现

           讲到redis的迁移,一般会使用rdb或者aof在主库做自动重载到目标库方法.但该方法有个问题就是无法保证源节点数据和目标节点数据保持一致,一般线上环境也不允许源库停机,所以要在迁移过程 ...

  6. ARCGIS如何进行可视域分析

    可视域分析在不同的领域有着广泛的应用,如火灾监控点的设定,观察哨所的设定等等.军事领域是可视域分析技术应用最广的领域.例如为了设计巡航导弹的航线,就必须对发射点到目标的地形进行分析,包括地形特征优劣分 ...

  7. js学习笔记(一)

    js 有5中原始类型:number. string. boolean. null.undefined js 有6中类型: 5中原始类型 在加上1中Object类型 typeof null === 'o ...

  8. drawing

    /* 程序名:drawing..c 功能:展示OpenCV的图像绘制功能 */ #include "cv.h" #include "highgui.h" #in ...

  9. Frame URl

    http://www.zi-han.net/theme/hplus/?v=4.1 http://webapplayers.com/inspinia_admin-v2.5/ http://baijuny ...

  10. spring注解记录

    集中记录spring常见注解 供今后查阅 @ControllerAdvice: ControllerAdvice的定义为: @Target(ElementType.TYPE) @Retention(R ...