天天看點

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

回顧

    之前我們介紹完了卡券從建立到發放的基本流程,今天我們将介紹卡券和Code的相關操作。本文主要介紹NodeJS語言下wechat-card子產品的操作方式,另外對重要的地方進行特别說明,以便其他語言開發者參考。

卡券ID清單

    這個接口可以查詢到公衆号下的所有卡券ID,需要注意下,這裡擷取的是卡券ID,而不是卡券資訊,使用方法和查詢門店清單類似,也是通過 offset 和 count 兩個參數來擷取清單,接口如下:

1

https:

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

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

2

3

wxCard.card.getCardIdList(0, 10, 

function

(err, ids) {

// do something ...

});

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

卡券查詢

    這個接口時用來通過 卡券ID 查詢卡券的詳細資訊的接口,可以和上面擷取卡券ID清單的接口搭配來擷取所有卡券的資訊。接口如下:

https:

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

    通過 wechat-card 擷取卡券資訊方式如下:

4

5

6

// 下列卡券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 修改卡券的方法如下:

7

8

9

10

11

12

13

14

// 下面的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 ...

});