Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 4171|回復(fù): 7
打印 上一主題 下一主題

[模塊/函數(shù)] 【拋磚引玉】在Access中使用微信企業(yè)號(hào)2

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2016-12-28 23:19:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 fan0217 于 2016-12-28 23:21 編輯

解決前次發(fā)布的代碼,返回字符串編碼問題:

  1. '下列常量換成你自己的即可
  2. Public Const Corpid = "wxf4a9ef92f9f6cXXX"  '企業(yè)Id,可從微信企業(yè)號(hào)后臺(tái)獲取
  3. Public Const Corpsecret = "FH6346paGvlTOkN5JeU96TltGNmwxcCYUYqvWRm3Q2JVEnVL3egfLYNBLkIf_Aoy"  '管理組的憑證密鑰

  4. '獲取AccessToken,Https請(qǐng)求方式: GET
  5. Private Function GetTokenJson() As String
  6.     Dim url  As String
  7.     Dim ret()  As Byte
  8.     Dim token As String
  9.         url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" & Corpid & "&corpsecret=" & Corpsecret
  10.         ret = HttpGet(url)
  11.         token = ret
  12.         GetTokenJson = token
  13. End Function

  14. '用了個(gè)較笨的方法,請(qǐng)自行找個(gè)解析JSON的方法替代
  15. Public Function GetToken() As String
  16.         Dim tokenJson As String
  17.         tokenJson = GetTokenJson
  18.         Dim tmp As String
  19.         tmp = Split(tokenJson, ",")(0)
  20.         tmp = Split(tmp, ":")(1)
  21.         tmp = Replace(tmp, """", "")
  22.         GetToken = tmp
  23. End Function

  24. '獲取發(fā)送消息的Json數(shù)據(jù)
  25. Public Function GetSendTextJson(touser As String, agentid As Integer, content As String) As String
  26.     Dim str As String
  27.         str = str & "{"
  28.         str = str & Replace("""touser"": ""#touser"",", "#touser", touser)
  29.         str = str & """msgtype"": ""text"","
  30.         str = str & Replace("""agentid"": #agentid,", "#agentid", agentid)
  31.         str = str & """text"": {"
  32.         str = str & Replace("""content"": ""#content""", "#content", content)
  33.         str = str & "},"
  34.         str = str & """safe"":0"
  35.         str = str & "}"
  36.         GetSendTextJson = str
  37. End Function

  38. '發(fā)送消息,,Https請(qǐng)求方式: POST
  39. '參數(shù)    必須    說明
  40. 'touser  否  成員ID列表(消息接收者,多個(gè)接收者用‘|’分隔,最多支持1000個(gè))。特殊情況:指定為@all,則向關(guān)注該企業(yè)應(yīng)用的全部成員發(fā)送
  41. 'toparty 否  部門ID列表,多個(gè)接收者用‘|’分隔,最多支持100個(gè)。當(dāng)touser為@all時(shí)忽略本參數(shù)
  42. 'totag   否  標(biāo)簽ID列表,多個(gè)接收者用‘|’分隔。當(dāng)touser為@all時(shí)忽略本參數(shù)
  43. 'msgtype 是  消息類型,此時(shí)固定為:text
  44. 'agentid 是  企業(yè)應(yīng)用的id,整型?稍趹(yīng)用的設(shè)置頁(yè)面查看
  45. 'content 是  消息內(nèi)容
  46. 'safe    否  表示是否是保密消息,0表示否,1表示是,默認(rèn)0
  47. Public Function SendText(token As String, touser As String, agentid As Integer, text As String) As String
  48.     Dim url As String
  49.     Dim jsonData As String
  50.     Dim ret()  As Byte
  51.         url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" & token

  52.         jsonData = GetSendTextJson(touser, agentid, text)
  53.         Debug.Print jsonData
  54.         
  55.         ret = HttpPost(url, jsonData)
  56.         
  57.         SendText = ret
  58.         
  59. End Function

  60. Function HttpGet(url As String) As String
  61.      Dim xmlHttp As Object
  62.      Set xmlHttp = CreateObject("Msxml2.XMLHTTP.3.0")
  63.      If Not IsObject(xmlHttp) Then
  64.          Set xmlHttp = CreateObject("Msxml2.XMLHTTP.3.0")
  65.          If Not IsObject(xmlHttp) Then Exit Function
  66.      End If
  67.      xmlHttp.Open "GET", url, False
  68.      xmlHttp.setRequestHeader "CONTENT-TYPE", "application/json;charset=UTF-8"
  69.      xmlHttp.send

  70.      Do While xmlHttp.ReadyState <> 4
  71.          DoEvents
  72.      Loop
  73.   
  74.         Dim ret As String
  75.         ret = xmlHttp.responseText

  76.        HttpGet = ret
  77. End Function

  78. Function HttpPost(url As String, postMsg As String) As String
  79.      Dim xmlHttp As Object
  80.      Set xmlHttp = CreateObject("Msxml2.XMLHTTP.3.0")
  81.      If Not IsObject(xmlHttp) Then
  82.          Set xmlHttp = CreateObject("Msxml2.XMLHTTP.3.0")
  83.          If Not IsObject(xmlHttp) Then Exit Function
  84.      End If
  85.      xmlHttp.Open "POST", url, False
  86.      xmlHttp.setRequestHeader "CONTENT-TYPE", "application/Json;charset=UTF-8"
  87.      xmlHttp.send (postMsg)

  88.      Do While xmlHttp.ReadyState <> 4
  89.          DoEvents
  90.      Loop

  91.         Dim ret As String
  92.         ret = xmlHttp.responseText
  93.         HttpPost = ret
  94. End Function
復(fù)制代碼


參考文檔:http://qydev.weixin.qq.com/wiki/ ... 3%E8%AF%B4%E6%98%8E



  1. Sub Test()
  2.     Dim token As String
  3.     token = GetToken
  4.     Debug.Print token
  5. End Sub

  6. Sub SendTest()
  7.     Dim token As String
  8.     token = GetToken
  9.     Debug.Print SendText(token, "@all", 0, "你好!這是測(cè)試消息,收到請(qǐng)回復(fù)。--fans發(fā)送")
  10. End Sub
復(fù)制代碼

示例:

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享 分享淘帖 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
發(fā)表于 2016-12-29 11:33:24 來自手機(jī) | 只看該作者
ret = xmlHttp.responseText
這句返回utf8,要轉(zhuǎn)吧。
另外,簽名里的erp要微信才行嗎?
來自: 微社區(qū)
3#
 樓主| 發(fā)表于 2016-12-29 11:37:19 | 只看該作者
zpy2 發(fā)表于 2016-12-29 11:33
ret = xmlHttp.responseText
這句返回utf8,要轉(zhuǎn)吧。
另外,簽名里的erp要微信才行嗎?

這段代碼經(jīng)過測(cè)試的,替換成自己的參數(shù)即可。

點(diǎn)擊這里給我發(fā)消息

4#
發(fā)表于 2016-12-29 11:42:15 來自手機(jī) | 只看該作者
沒有企業(yè)號(hào),應(yīng)該是不錯(cuò)的。這代碼與erp都要企業(yè)號(hào)嗎?
來自: 微社區(qū)
5#
 樓主| 發(fā)表于 2016-12-29 11:48:07 | 只看該作者
本帖最后由 fan0217 于 2016-12-29 11:51 編輯
zpy2 發(fā)表于 2016-12-29 11:42
沒有企業(yè)號(hào),應(yīng)該是不錯(cuò)的。這代碼與erp都要企業(yè)號(hào)嗎?

代碼需要微信企業(yè)號(hào)
ERP非必須,可直接用戶名密碼登錄

點(diǎn)擊這里給我發(fā)消息

6#
發(fā)表于 2016-12-29 12:00:58 來自手機(jī) | 只看該作者
我用手機(jī)訪問的,登陸后顯示請(qǐng)?jiān)谄髽I(yè)微信號(hào)中登陸。大概電腦才行吧。
來自: 微社區(qū)
7#
發(fā)表于 2017-8-29 10:19:56 | 只看該作者
老師您好!請(qǐng)講講如何使用的
8#
 樓主| 發(fā)表于 2017-9-6 23:32:32 | 只看該作者
access新新新手 發(fā)表于 2017-8-29 10:19
老師您好!請(qǐng)講講如何使用的

上面已經(jīng)講了啊
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 05:25 , Processed in 0.116334 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表