WxPusher (微信推送服務)是一個使用微信公眾號作為通道的,即時資訊推播平台,你可以透過呼叫API的方式,把資訊推送到微信上,無需安裝額外的軟體,即可做到資訊即時通知。 你可以使用WxPusher來做伺服器警報通知、搶課通知、搶票通知,資訊更新提示等。
你可以存取演示程序,體驗功能:https://wxpusher.zjiecode.com/demo/
示範程式原始碼:https://github.com/wxpusher/wxpusher-sdk-java/
管理後台:https://wxpusher.zjiecode.com/admin/
請一定不要呼叫demo程序,直接傳送訊息給用戶! ! !
微信介面調整,直接發送文字訊息的方式已經下線,我們正在開發新的推播方式,敬請期待。
類型 | 取得用戶ID | 模版訊息 | |||
---|---|---|---|---|---|
預覽 |
為了方便不同的使用者群體,不同的使用場景,更快捷方便的發送訊息,我們目前支援了2種使用WxPusher的方式。
- 請注意,這2種發送方式,身份標誌不一樣,不可以相互遷移或切換;
- 在有條件的情況下,強烈建議使用第一種方式,能力更佳完善。
發送方式 | 優點、缺點和適用場景 |
---|---|
標準推送【推薦】 (標準應用開發) |
|
極簡推送(SPT一鍵推送) |
|
對應你的一個項目,主要用來做鑑權,資源隔離等(類比使用高德地圖SDK、微信登入等,都會先新建一個應用程式),每個應用程式擁有獨立的名字,二維碼,回呼地址,呼叫資源,鑑權資訊等,傳送訊息第一步,需要先新建一個應用程式。
簡單的理解,你有一個搶火車票的項目,搶到票了需要給用戶發送信息;你還有一個服務器報警的項目,服務器有異常的時候,給相關負責人發送信息,這2個的用途是不一樣的,你就可以創建2個應用程式來分別發送他們的訊息。
用戶可以透過二維碼或連結關注這個應用,關注我們會把用戶的UID回調給你指定的伺服器,你可以透過UID給這個用戶發送訊息。
主題(Topic)是應用程式下面,一類訊息的集合,例如創建了一個優惠相關的應用,用來給用戶推送各種優惠信息,但是不同的用戶關注的優惠信息不同,一部分人關注淘寶的,一部分人關注京東的。在這種場景下,你就可以創建一個淘寶的主題,再創建一個京東的主題,發送信息的時候,直接發送到對應的主題即可,每個主題都有對應的訂閱鏈接和二維碼,用戶訂閱這個主題以後,就能接收到這個主題下的訊息了。
Topic只能無差別群發,無法針對用戶客製化訊息,用戶追蹤以後,無回調訊息。
專案 | 應用 | 主題(Topic) |
---|---|---|
概念 | 應用是一個獨立的個體 | 主題屬於應用,呼叫主題需要使用對應應用的APP_TOKEN授權 |
關注方式 | QR 圖碼和連結 | QR 圖碼和連結 |
發送群體 | 透過UID一對一發送 | 訊息發送主題後,主題再分發給關注主題的用戶,屬於群發 |
專案 | 應用二維碼 | 主題二維碼 |
---|---|---|
用途 | 用於微信用戶關注應用,用戶只有關注了你的應用, 你才能拿到他的UID,才能傳訊息給他 | 用於訂閱主題,用戶訂閱主題以後,你不能拿到它的UID |
動靜態 | 預設動態二維碼 | 預設動態二維碼 |
動態二維碼:二維碼鏈接不會變,但是二維碼圖形會變,因此只能使用動態二維碼鏈接,不對截圖、打印等。
靜態二維碼:二維碼連結和圖形都不變,可以隨意使用。
應用的身份標誌,這個只能開發者你本人知道,擁有APP_TOKEN,就可以給對應的應用的用戶發送訊息,所以請嚴格保密,不要發送到github之類的地方。
微信用戶標誌,在單獨向某個用戶發送訊息時,來說明要發給哪個用戶。
在接入之前,你可以看架構圖,有助於你理解單發,群發的差異。
https://wxpusher.zjiecode.com/admin/ ,使用微信掃碼登錄,無需註冊,新用戶首次掃碼自動註冊。
建立一個應用,如下圖:
回呼地址:可以不填寫,不填寫用戶追蹤的時候,就不會有回調,你不能拿到用戶的UID,參考回調說明。
設定URL:可以不填寫,填寫以後,使用者在微信端開啟「我的訂閱」,可以直接跳到這個位址,並且會攜帶uid作為參數,方便做客製化頁面展示。
聯絡方式:可以不填寫,告訴用戶,如何聯絡你,給你回饋問題。
關注提示:用戶追蹤或掃應用碼的時候發送給用戶的提示,你可以不填寫,Wxpusher會提供一個預設文案。你也可以在用戶關注回調給你UID的時候,再主動推送一個提示訊息給用戶。
說明:描述一下,你的應用程式,推送的是啥內容,用戶透過連結關注,或是在微信端查看的時候可以看到。
在你創建應用程式的過程中,你應該已經看到appToken,如果沒有保存,可以透過下面的方式重製它。
打開應用程式的後台https://wxpusher.zjiecode.com/admin/,從左側選單欄,找到appToken選單,在這裡,你可以重置appToken,請注意,重置後,舊的appToken會立即失效,呼叫接口會失敗。
創建應用程式以後,你可以看到應用程式的應用程式碼和追蹤鏈接,你可以讓你的用戶透過下面2種方式來關注你的應用,關注你的應用程式以後,你就可以給他發送訊息了。
目前有3種方式取得UID:
拿到UID以後,配合應用的appToken,然後呼叫發送介面發送訊息。
所有介面均已經支援https。
POST接口POST接口是功能完整的接口,建議使用。
Content-Type:application/json
網址:https://wxpusher.zjiecode.com/api/send/message
請求資料放在body裡面,具體參數如下:
JSON不支援註釋,發送的時候,需要刪除註解。
{
"appToken" : " AT_xxx " , //必传
"content" : " <h1>H1标题</h1><br/><p style= " color:red; " >欢迎你使用WxPusher,推荐使用HTML发送</p> " , //必传
//消息摘要,显示在微信聊天页面或者模版消息卡片上,限制长度20(微信只能显示20),可以不传,不传默认截取content前面的内容。
"summary" : "消息摘要" ,
//内容类型 1表示文字 2表示html(只发送body标签内部的数据即可,不包括body标签,推荐使用这种) 3表示markdown
"contentType" : 2 ,
//发送目标的topicId,是一个数组!!!,也就是群发,使用uids单发的时候, 可以不传。
"topicIds" :[
123
],
//发送目标的UID,是一个数组。注意uids和topicIds可以同时填写,也可以只填写一个。
"uids" :[
" UID_xxxx "
],
//原文链接,可选参数
"url" : " https://wxpusher.zjiecode.com " ,
//是否验证订阅时间,true表示只推送给付费订阅用户,false表示推送的时候,不验证付费,不验证用户订阅到期时间,用户订阅过期了,也能收到。
//verifyPay字段即将被废弃,请使用verifyPayType字段,传verifyPayType会忽略verifyPay
"verifyPay" : false ,
//是否验证订阅时间,0:不验证,1:只发送给付费的用户,2:只发送给未订阅或者订阅过期的用户
"verifyPayType" : 0
}
html格式的消息(contentType=2),支持通过标签复制,复制的语法如下:
```html
<copy style="这里可以写复制按钮的style" data-clipboard-text="需要复制到剪贴板的内容">
复制按钮的文字
</copy>
一个例子如下,style默认可以不写:
<copy data-clipboard-text="被复制的内容">
复制
</copy>
返回數據說明:
{
"code" : 1000 , //状态码,非1000表示有异常
"msg" : "处理成功" , //提示消息
"data" : [ //每个uid/topicid的发送状态,和发送的时候,一一对应,是一个数组,可能有多个
{
"uid" : " UID_xxx " , //用户uid
"topicId" : null , //主题ID
"messageId" : 121 , //废弃️,请不要再使用,后续会删除这个字段
"messageContentId" : 2123 , //消息内容id,调用一次接口,生成一个,你可以通过此id调用删除消息接口,删除消息。本次发送的所有用户共享此消息内容。
"sendRecordId" : 12313 , //消息发送id,每个uid用户或者topicId生成一个,可以通过这个id查询对某个用户的发送状态
"code" : 1000 , //1000表示发送成功
"status" : "创建发送任务成功"
}
],
"success" : true
}
GET介面GET介面是對POST介面的閹割,主要是為了在某些情況下呼叫方便,只支援對文字(contentType=1)的發送,舉例:
https://wxpusher.zjiecode.com/api/send/message/?appToken=AT_qHT0cTQfLwYOlBV9cJj9zDSyEmspsmyM&content=123&uid=c1BcpqxEbD8irqlGUh9BhOqR2BvH8yWZ&url=http%3a%2f%2fwxpusher.zjiecode.com
請求參數支援:appToken、 uid 、 topicId 、content、url、verifyPayType ,其中content和url請進行urlEncode編碼。
GET介面只支援發送一個uid或topicId,推薦使用POST接口
訊息發送給Wxpusher,Wxpusher會快取下來,後台非同步推送給微信再分發給用戶,當訊息數量龐大的時候,可能會有延遲,你可以根據發送訊息返回的sendRecordId,查詢訊息給此用戶的發送狀態
請求方式:GET
說明:查詢訊息狀態,訊息快取有時效性,目前設定快取時間為7天,7天後查詢訊息,可能會回傳訊息不存在
請求地址:https://wxpusher.zjiecode.com/api/send/query/status?sendRecordId={sendRecordId}
參數說明:
請求方式:DELETE
說明:訊息傳送以後,可以呼叫次介面刪除訊息,但請注意,只能刪除使用者點選詳情查看的落地頁面,已經推送到使用者的訊息記錄不可以刪除。
請求地址:https://wxpusher.zjiecode.com/api/send/message?messageContentId=${messageContentId}&appToken=${appToken}
參數說明:
有一種場景,就是需要知道目前是誰掃描的二維碼,例如:論壇貼文有新訊息需要推送給用戶,這個如果用戶掃碼關注,你需要知道是誰掃過的二維碼,把論壇用戶ID和Wxpusher用戶的UID綁定,當論壇用戶ID有新訊息時,推送給Wxpusher用戶。這種場景就需要參數的二維碼。
要求方式:POST
請求地址:https://wxpusher.zjiecode.com/api/fun/create/qrcode
ContentType:application/json
說明:建立帶參數二維碼,使用者掃碼以後,會在回調裡面帶上參數,參考回呼說明
請求body:
{
"appToken" : " xxx " , //必填,appToken,前面有说明,应用的标志
"extra" : " xxx " , //必填,二维码携带的参数,最长64位
"validTime" : 1800 //可选,二维码的有效期,默认30分钟,最长30天,单位是秒
}
使用者掃描參數二維碼後,設定了回呼位址,我們會透過回呼位址把使用者的UID推送給你的服務,具體見回呼說明,推薦使用這種回呼的方式。
但是部分用戶場景簡單,或者沒有後端服務,例如客戶端軟體,使用很不方便,因此我們增加了這個查詢接口,透過上面的創建參數二維碼接口創建一個二維碼,你會拿到一個二維碼的code,用此code配合這個接口,可以查詢到最後一次掃描參數二維碼用戶的UID。
輪訓時間間隔不能小於10秒! !禁止死循環輪訓,用戶退出後,必須關閉輪訓,否則封號。
請求方式:GET
請求地址:https://wxpusher.zjiecode.com/api/fun/scan-qrcode-uid
請求參數(Query):
一個例子
https://wxpusher.zjiecode.com/api/fun/scan-qrcode-uid?code=xxxxx
本介面已經被棄用,請使用下面查詢App的關注用戶V2介面你可以透過本接口,分頁查詢到所有關注你App的微信用戶。
請求方式:GET
說明:獲取到所有關注應用的微信用戶用戶信息
請求網址:https://wxpusher.zjiecode.com/api/fun/wxuser
請求參數:
返回數據:
{
"page" : 1 , //当前数据页码
"pageSize" : 50 , //当前页码大小
"records" :[
{
"createTime" : 1572755754416 , //用户关注时间
"enable" : true , //是否可用,也就是用户是否开启接收消息
"headImg" : " xxxxxx " , //用户头像
"nickName" : " 0XFF " , //用户昵称
"uid" : " xxxxxxx " //用户的UID
}
],
"total" : 3 //所有的用户数量
}
你可以透過本接口,分頁查詢到所有關注應用和關注主題的用戶。
請求方式:GET
說明:取得所有關注應用程式/主題的微信用戶用戶資訊。需要注意,一個微信用戶,如果同時關注應用,主題,甚至關注多個主題,會傳回多個記錄。
請求位址:https://wxpusher.zjiecode.com/api/fun/wxuser/v2
請求參數:
{
"code" : 1000 ,
"msg" : "处理成功" ,
"data" : {
"total" : 40 , //总数
"page" : 1 , //当前页码
"pageSize" : 20 , //页码大小,
"records" : [
{
"uid" : " UID_xxx " , //用户uid
"appOrTopicId" : 111 , //用户关注的应用或者主题id,根据type来区分
"headImg" : " " , //新用户微信不再返回 ,强制返回空
"createTime" : 1603540859285 , //创建时间
"nickName" : " " , //新用户微信不再返回 ,强制返回空
"reject" : false , //是否拉黑
"id" : 47361 , //id,如果调用删除或者拉黑接口,需要这个id
"type" : 0 , //关注类型,0:关注应用,1:关注topic
"target" : " WxPusher官方" , //关注的应用或者主题名字
"payEndTime" : 0 // 0表示用户不是付费用户,大于0表示用户付费订阅到期时间,毫秒级时间戳
}
]
},
"success" : true
}
你可以透過本接口,刪除使用者對應用,主題的關注。
請求方式: DELETE
說明:你可以刪除用戶對應用程式、主題的關注,刪除以後,用戶可以重新關注,如不想讓用戶再次關注,可以調用拉黑接口,對用戶拉黑。
請求地址:https://wxpusher.zjiecode.com/api/fun/remove
請求參數(Query):
返回數據:
{
"code" : 1000 ,
"msg" : "处理成功" ,
"data" : "删除成功" ,
"success" : true
}
你可以透過本接口,可以拉黑用戶
請求方式: PUT
說明:拉黑以後不能再發送訊息,用戶也不能再關注,除非你取消對他的封鎖。呼叫拉黑接口,不用再呼叫刪除接口。
請求網址:https://wxpusher.zjiecode.com/api/fun/reject
請求參數(Query):
返回數據:
{
"code" : 1000 ,
"msg" : "处理成功" ,
"data" : "删除成功" ,
"success" : true
}
為了方便快速接入,各位熱心的開發者貢獻了許多接入SDK,https://github.com/wxpusher/wxpusher-client.
SDK是開發者們貢獻,可能不包含最新的API或功能,功能以本文的HTTP介面為準,也歡迎你提PR給我們。
極簡推送,不需要註冊用戶,登陸後台,創建應用,獲取appToken等。
為了避免使用者理解太多概念,導致存取困難,部分自行傳送訊息給自己的場景,可以使用極簡推送方式。
例如:部分開源商城訂單系統,下單後給用戶發送訊息;短信轉發系統等;之前需要用戶創建應用,獲取appToken,關注應用,填寫UID等等,對普通用戶來說,成本太高。
極簡推送只需要2步驟就可以完成推播:
直接掃描下面二維碼即可取得你的推播SPT
如果需要在你的系統裡面展示這個二維碼,你可以使用下面的永久連結:
<textarea readonly style="width:100%;height:60px;"> https://wxpusher.zjiecode.com/api/qrcode/RwjGLMOPTYp35zSYQr0HxbCPrV9eU0wKVBXU1D5VVV20cQ 月請勿洩漏SPT,SPT洩漏後,任意用戶都可以給你發送訊息! ! !
GET請求極簡發送
把你上一步取得到的SPT,放在下面的連結裡面
直接請求:https://wxpusher.zjiecode.com/api/send/message/你所取得的SPT/你要傳送的內容
POST請求極簡發送
要求方式:POST
請求URL:https://wxpusher.zjiecode.com/api/send/message/simple-push
請求格式:Content-Type:application/json
請求內容:
//JSON不支持注释,发送的时候,需要删除注释。
{
//推送内容,必传
"content" : " <h1>极简推送</h1><br/><p style= " color:red; " >欢迎你使用WxPusher,推荐使用HTML发送</p> " ,
//消息摘要,显示在微信聊天页面或者模版消息卡片上,限制长度20(微信只能显示20),可以不传,不传默认截取content前面的内容。
"summary" : "消息摘要" ,
//内容类型 1表示文字 2表示html(只发送body标签内部的数据即可,不包括body标签,推荐使用这种) 3表示markdown
"contentType" : 2 ,
//发送SPT,如果发送给一个用户,直接传simplePushToken就行了,不用传simplePushTokenList
"spt" : " SPT_xx1 " ,
//发送SPT,如果发送给多个用户,只传simplePushTokenList即可,请注意,【这是一个数组】!!,最多不能超过10个
"sptList" :[ " SPT_xx1 " , " SPT_xx2 " ],
//原文链接,可选参数
"url" : " https://wxpusher.zjiecode.com " ,
}
請注意:只有方式一(標準推送)支援回調
當用戶追蹤應用程式或發送命令訊息到公眾號的時候,WxPusher會將訊息推播給你。 如果你沒有後台服務,也可以輪訓,參考查詢掃碼用戶UID介面。
給用戶發送訊息,需要知道用戶的UID,有2種途徑知道用戶的UID:
{
"action" : " app_subscribe " , //动作,app_subscribe 表示用户关注应用回调,后期可能会添加其他动作,请做好兼容。
"data" :{
"appId" : 123 , //创建的应用ID
"appKey" : " AK_xxxxxx " , //关注应用的appKey,请不要再使用,将来可能会被删除
"appName" : "应用名字" ,
"source" : " scan " , //用户关注渠道,scan表示扫码关注,link表示链接关注,command表示通过消息关注应用,后期可能还会添加其他渠道。
"userName" : " " , //新用户微信不再返回 ,强制返回空
"userHeadImg" : " " , //新用户微信不再返回 ,强制返回空
"time" : 1569416451573 , //消息发生时间
"uid" : " UID_xxxxxx " , //用户uid
"extra" : " xxx " //用户扫描带参数的二维码,二维码携带的参数。扫描默认二维码为空
}
}
對於訊息產品,如果用戶付費或退款以後,開發者可能需要感知到用戶的付費訂閱狀態。
因此當用戶的付費訂閱狀態變化的時候,會透過下面的回呼訊息通知你,你可以在收到通知的時候,透過查詢用戶清單V2查詢到用戶的訂閱到期時間等資訊。
{
"action" : " order_pay " , //动作,表示用户付费或者退款。后期可能会添加其他动作,请做好兼容。
"data" :{
"addTime" : 86400000 , //付费增加的时间,毫秒。退款是负数,表示减少的订阅时间。
"amount" : 50 , //金额,单位分,退款是负数
"appId" : 30630 , //发生的应用id
"createTime" : 1664118481675 , //发生时间,毫秒级时间戳
"prodId" : 12 , //产品id
"tradeNo" : " 202209252308016755383125546 " , //支付或者退款的交易号,和用户微信账单中的商户号对应
"type" : 1 , //1表示付款,2表示退款
"uid" : " UID_xxxxxxx " //发生用户的uid
}
}
目前WxPusher已經支援指令類別的上行訊息,使用者發送指令,WxPusher會將指令訊息回調給開發者。
標準指令
指令的格式為: #{appID} 內容,例如給示範程式傳送訊息,可以傳送:#97 測試,注意中間有一個空格。
訂閱指令
如果只傳送appID: #{appID} ,例如:#97 ,後面沒有內容,表示關注appID為97的應用程式。
簡化指令
如果只發送內容:xxx ,例如:重新啟動伺服器,這個時候又分為2種情況:
appID可以在管理後台,應用管理-應用資訊-應用id 查看。
回調使用POST方法,資料格式如下:
{
"action" : " send_up_cmd " , //动作,send_up_cmd 表示上行消息回调,后期可能会添加其他动作,请做好兼容。
"data" :{
"uid" : " UID_xxx " , //用户uid
"appId" : 97 , //应用id
"appName" : " WxPusher演示" , //应用名称
"time" : 1603002697386 , //发生时间
"content" : "内容" //用户发送的内容
}
}
請注意:只有方式一(標準推播)才支援訊息產品收費
請注意,此收費是指:訊息開發者,透過WxPusher向訊息接收者收費,而不是指WxPusher向開發者或使用者收費。
身為開發者,你負責提供有價值的消息,我們負責幫你賺錢變現。
接入的流程如下:
訊息產品是對單發的應用訊息,群發的主題訊息的包裝,可以把多個訊息,包裝到一個訊息產品下進行銷售。
請注意,我們暫時不接受股票、選擇權、債券、基金等的策略推薦類訊息上架
你需要注意一個概念,我們銷售的是產品綁定的資源,例如一般無差別群發的,就綁定到主題上;一對一透過uid發送的,就綁定到應用上。
請注意,目前產品創建後,不支援修改,請填寫清楚後再提交。
提交後,請聯絡客服微信「wxpusher-kefu」進行審核,付費價格策略等商談,完成後可以上架到訊息市場,用戶可以直接在訊息市場支付購買。
說明 | 訊息市場 | 訊息產品列表 | 訊息產品介紹 |
---|---|---|---|
範例 |
透過查詢使用者清單V2可以查詢使用者訊息,其中payEndTime就是使用者的訂閱到期時間。
包裝為產品的應用或主題,在發送訊息的時候,可以區分本訊息是否只有付費訂閱期間內的使用者才收得到。 根據verifyPayType欄位來做區別
具體可以查看發送訊息的介面說明,沒有關聯訊息產品的應用或主題,verifyPayType欄位無效,可以不用傳遞。
你需要注意一個概念,我們銷售的是產品綁定的資源,所以查詢的是資源對應的到期時間。例如一般無差別群發的,就綁定到主題上;一對一透過uid發送的,就綁定到應用程式上,查詢的分別是訂閱主題或應用程式的到期時間。
請求方式:GET
說明:使用者某個使用者在某個資源上的到期時間,因為一個產品可以綁定多個資源,所以回傳的是一個陣列(但一般不會綁定多個)。
請求地址:https://wxpusher.zjiecode.com/api/product/query-pay-end-time?uid={uid}&prodId={產品id}
參數說明:
響應參數:
{
"code": 1000,
"msg": "处理成功",
"data": [
{
"resourceType": 2, //资源类型,1对1uid发送的应用为1,群发主题为2
"resourceID": 123, //应用id或者主题id
"payEndTime": 1737560859272 //用户付费订阅到期时间,毫秒级的时间戳
}
],
"success": true
}
如果你的是軟體產品,請接入WxPusher的授權,這樣方便用戶購買後,和對應的到期時間綁定。 一般的驗證流程是:
為了更好的使用者體驗,我們正在努力開發更多的客戶端,以提高使用者的體驗。
Chrome擴充功能是一個基於Chrome瀏覽器的擴充程序,只要開啟瀏覽器,就可以接收訊息,目前支援Mac、Window電腦,接收訊息的體驗比微信更好,歡迎體驗使用。 你可以造訪這裡https://github.com/wxpusher/wxpusher-chrome-extensions下載和安裝瀏覽器外掛程式。
你也可以到這裡,查看具體的安裝使用方式:https://mp.weixin.qq.com/s/zrUdVqrE0odhUTiD7qhWiQ
因為目前是基於瀏覽器V2 API開發的,Google不讓上架,等我們遷移到V3後會在Chrome Store上架
因為微信的內容限制,為更好的使用者體驗,歡迎你下載iOS蘋果客戶端接收訊息,使用者體驗更佳,下載方式如下:
因為國內Android生態問題,Android應用程式還在開發中,十分抱歉。
WxPusher是免費的推播服務,為了能更好的服務大家,這裡說明一下系統相關資料限制