转载

浅谈微信卡券功能开发(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 ...
});

 

总结

    今天先介绍到这里,这篇内容略多,但是操作都是比较简单的,有需要注意的地方也已经标出。

文章最后发布于: 2015-08-25 17:47:59
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览