浅谈微信卡券功能开发(3)

闲扯&回顾

    由于过年回来事情比较多,所以断了一段时间。今天赶紧接着。之前我们介绍完了卡券从创建到发放的基本流程,今天我们将介绍卡券和Code的相关操作。本文主要介绍NodeJS语言下wechat-card模块的操作方式,另外对重要的地方进行特别说明,以便其他语言开发者参考。

 

卡券ID列表

    这个接口可以查询到公众号下的所有卡券ID,需要注意下,这里获取的是卡券ID,而不是卡券信息,使用方法和查询门店列表类似,也是通过 offset 和 count 两个参数来获取列表,接口如下:

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

    通过wechat-card 进行操作的方法如下:

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

    这里的两个参数不做过多说明,可以参照查询门店列表接口处的介绍。

 

卡券查询

    这个接口时用来通过 卡券ID 查询卡券的详细信息的接口,可以和上面获取卡券ID列表的接口搭配来获取所有卡券的信息。接口如下:

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

    通过 wechat-card 获取卡券信息方式如下:

1
2
3
4
5
6
// 下列卡券id仅用于demo,在实际中不存在
var cardId = "p1Pj9jr90_SQRaVqYI239Ka1erkI";
 
wxCard.card.getCardDetail(cardId, function(err, card) {
    // do something ...
});

    接口返回的数据可以参见文档,其实就是添加卡券时候的卡券信息而已。

 

修改卡券

    这个接口用于修改卡券信息,当然并不是所有的信息,只是一部分无关紧要的信息而已,很多关键信息都是不允许修改的。接口如下:

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

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

1
2
3
4
5
6
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删除已经创建的卡券, 接口为:

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

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

1
2
3
4
5
6
// 下面的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的状态,这里期待微信以后可以支持。

    接口为:

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

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

1
2
3
4
5
6
// 下面的code仅用于demo,实际中不存在
var code = "882077290937";
 
wxCard.code.getCodeDetail(code, function(err, details) {
    // details: 为Object类型 包含用户openid,卡券id和卡券有效时间
});

  

Code修改

    这个接口用于修改已经领取的Code值。

    这个接口使用的情况有:当卡券为自定义SN时,并且允许转赠卡券时,当卡券赠送给朋友以后,为了保证Code安全性,需要修改该Code的值,推荐在转赠以后收到事件推送(事件推送为微信向自定义服务器推送数据,在之后我们会进行详细介绍)时进行修改。

    接口为:

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

    在 wechat-card 中修改Code的方法为:传递参数为原始Code,对应的卡券ID, 和新的Code

1
2
3
4
5
6
7
8
// 下面的卡券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将已经领取的卡券设置为失效。接口为:

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

    在 wechat-card 中设置Code失效的方法为:

1
2
3
4
5
6
// 下面的code仅用于demo,实际中不存在
var code = "882077290937";
 
wxCard.code.setCodeExpire(code, function(err) {
    // do something ...
});

  

修改卡券库存

    这个接口是用来补充卡券的库存值或者减少库存值,卡券库存即在创建卡券时 base_info.sku.quantity 字段。这个字段无法再修改卡券中进行修改,需要单独的接口进行修改,接口为:

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

    在 wechat-card 中修改卡券库存的方法为:调用方法的第二个参数为要改变的库存值,比如增加10个,为+10, 比如减少20个,为-20。

1
2
3
4
5
6
7
8
9
10
11
12
// 下面的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 ...
});

 

总结

    今天先介绍到这里,这篇内容略多,但是操作都是比较简单的,有需要注意的地方也已经标出。最近有好多朋友发邮件问一些问题,之后我会针对我们自己在开发终于到的问题和大家提出的问题专门总结一篇问题总结。大家如果有其他的问题和建议,可以发站内信共同讨论。感谢大家。

浅谈微信卡券功能开发(3)

上一篇:模拟手机操作


下一篇:微信无法调起支付解决办法