淺談微信卡券功能開發(3)


閑扯&回顧

    由於過年回來事情比較多,所以斷了一段時間。今天趕緊接着。之前我們介紹完了卡券從創建到發放的基本流程,今天我們將介紹卡券和Code的相關操作。本文主要介紹NodeJS語言下wechat-card模塊的操作方式,另外對重要的地方進行特別說明,以便其他語言開發者參考。

 

卡券ID列表

    這個接口可以查詢到公眾號下的所有卡券ID,需要注意下,這里獲取的是卡券ID,而不是卡券信息,使用方法和查詢門店列表類似,也是通過 offset 和 count 兩個參數來獲取列表,接口如下:

https://api.weixin.qq.com/card/batchget?access_token=TOKEN

    通過wechat-card 進行操作的方法如下:

wxCard.card.getCardIdList(0, 10, function(err, ids) {
    // do something ...
});

    這里的兩個參數不做過多說明,可以參照查詢門店列表接口處的介紹。

 

卡券查詢

    這個接口時用來通過 卡券ID 查詢卡券的詳細信息的接口,可以和上面獲取卡券ID列表的接口搭配來獲取所有卡券的信息。接口如下:

https://api.weixin.qq.com/card/get?access_token=TOKEN    

    通過 wechat-card 獲取卡券信息方式如下:

// 下列卡券id僅用於demo,在實際中不存在
var cardId = "p1Pj9jr90_SQRaVqYI239Ka1erkI";

wxCard.card.getCardDetail(cardId, function(err, card) {
    // do something ...
});

    接口返回的數據可以參見文檔,其實就是添加卡券時候的卡券信息而已。

 

修改卡券

    這個接口用於修改卡券信息,當然並不是所有的信息,只是一部分無關緊要的信息而已,很多關鍵信息都是不允許修改的。接口如下:

https://api.weixin.qq.com/card/update?access_token=TOKEN

    在 wechat-card 修改卡券的方法如下:

// 下面的cardid僅用於demo,實際中不存在
var card = {
    card_id: "p1Pj9jr90_SQRaVqYI239Ka1erkI",
    base_info: {
      // .. some of base info
    },
    special_info: {
      // ...
    }
};

wxCard.card.modifyCard(card, function(err) {
    // do something ...
});

    需要注意的問題有

    1. 在修改時候需要傳遞一個參數對象,包含要修改的卡券的card_id base_info,和special_info, 當然這里base_info和special_info可以修改的字段是非常少的,具體哪些字段可以修改,大家可以參照微信官方的文檔。而且,在卡券修改后,已經發放的卡券也會隨之而改變,而且修改某些字段后,已經審核通過的卡券會重新進入待審核狀態,審核失敗的卡券則不會重新審核,具體哪些字段可以出發重新審核,請大家參照官方文檔。

    2. 微信接口中所有的查詢接口都有緩存,所以有一定的幾率會造成一種情況,在修改卡券成功后立刻進行查詢,有可能緩存沒有更新,而導致查詢到的數據沒有變化,這里有待微信進行優化了

    3. 在修改卡券有效期的時候,需要注意的一點是:修改的時間范圍不能小於原有的時間范圍,比如當前卡券有效期為2015-03-12,那么修改的日期必須為2015-3-12以后。

 

刪除卡券

    這個接口可以通過卡券ID刪除已經創建的卡券, 接口為:

https://api.weixin.qq.com/card/delete?access_token=TOKEN

    使用 wechat-card 刪除卡券的方法如下:

// 下面的cardid僅用於demo,實際中不存在
var cardId = "p1Pj9jr90_SQRaVqYI239Ka1erkI";

wxCard.card.deleteCard(cardId, function(err) {
    // do something ..
});

    這里需要注意的問題有:刪除卡券以后,已經被領取的Code還是有效的,可以通過核銷Code的方式進行核銷。

 

Code查詢

    查詢Code接口可以通過code查詢對應的信息,包括code對應的卡券card id,領取code用戶的openid,以及卡券的有效期。這里比較奇怪的是沒有code的狀態,這里期待微信以后可以支持。

    接口為:

https://api.weixin.qq.com/card/code/get?access_token=TOKEN

    在 wechat-card 中查詢code的方法如下:

// 下面的code僅用於demo,實際中不存在
var code = "882077290937";

wxCard.code.getCodeDetail(code, function(err, details) {
    // details: 為Object類型 包含用戶openid,卡券id和卡券有效時間
});

  

Code修改

    這個接口用於修改已經領取的Code值。

    這個接口使用的情況有:當卡券為自定義SN時,並且允許轉贈卡券時,當卡券贈送給朋友以后,為了保證Code安全性,需要修改該Code的值,推薦在轉贈以后收到事件推送(事件推送為微信向自定義服務器推送數據,在之后我們會進行詳細介紹)時進行修改。

    接口為:

https://api.weixin.qq.com/card/code/update?access_token=TOKEN

    在 wechat-card 中修改Code的方法為:傳遞參數為原始Code,對應的卡券ID, 和新的Code

// 下面的卡券id和code僅用於demo,實際中不存在
var code = "882077290937";
var cardId = "p1Pj9jr90_SQRaVqYI239Ka1erkI";
var newcode = "883920048827";

wxCard.code.modifyCode(code, cardId, newcode, function(err) {
    // do something ...
});

  

設置Code失效

    這個接口可以通過Code將已經領取的卡券設置為失效。接口為:

https://api.weixin.qq.com/card/code/unavailable?access_token=TOKEN

    在 wechat-card 中設置Code失效的方法為:

// 下面的code僅用於demo,實際中不存在
var code = "882077290937";

wxCard.code.setCodeExpire(code, function(err) {
    // do something ...
});

  

修改卡券庫存

    這個接口是用來補充卡券的庫存值或者減少庫存值,卡券庫存即在創建卡券時 base_info.sku.quantity 字段。這個字段無法再修改卡券中進行修改,需要單獨的接口進行修改,接口為:

https://api.weixin.qq.com/card/modifystock?access_token=TOKEN

    在 wechat-card 中修改卡券庫存的方法為:調用方法的第二個參數為要改變的庫存值,比如增加10個,為+10, 比如減少20個,為-20。

// 下面的cardid僅用於demo,實際中不存在
var cardId = "p1Pj9jr90_SQRaVqYI239Ka1erkI";

// 減少10庫存
wxCard.card.modifyCardStock(cardId, -10, function(err) {
   // do something ...
});

// 增加10庫存
wxCard.card.modifyCardStock(cardId, 10, function(err) {
    // do something ...
});

 

總結

    今天先介紹到這里,這篇內容略多,但是操作都是比較簡單的,有需要注意的地方也已經標出。最近有好多朋友發郵件問一些問題,之后我會針對我們自己在開發終於到的問題和大家提出的問題專門總結一篇問題總結。大家如果有其他的問題和建議,可以發站內信共同討論。感謝大家。

 

轉載請注明出處,原網頁http://www.cnblogs.com/kenticny/p/4324963.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM