该方法适用于高并发秒杀、抢购场景,例如商品库存自由几个、几十、几百个,但是同时可能会有几十万的用户参与抢购。

这种场景下,不适合直接按照正常流程进行购买,高并发以及瞬时峰值可能会导致您的应用非常卡乃至无法访问,那么正确的做法应该是这样的:

单独设置秒杀入口页面

此类活动,应该设置单独的一个活动入口页面,不应该将几十万的用户直接引导至应用首页或者其他无关应用。制作一个静态的落地广告页面会是一个非常不错的选择(因为这个页面是几十万用户同时都会访问的);

该页面介绍活动的信息,商品信息,然后放置一个 “立即抢购” 的按钮,点击该按钮后调用本接口:

接口说明

/goods/seckill/grab
POST
两个参数: goodsId 和 seconds

下面是直接使用 SDK :

  1. WXAPI.goodsSeckillGrab(goodsId, seconds)
  • goodsId 为商品id
  • seconds 为名额的保留时间,超过这个时间,系统将根据商品的实际剩余库存重新计算可抢占的名额;一般设置成 60 秒会比较适合;

返回示例:

  1. {
  2. "code": 0,
  3. "data": 3,
  4. "msg": "success"
  5. }
  1. {
  2. "code": 10000,
  3. "data": 0,
  4. "msg": "已售罄"
  5. }
  1. {
  2. "code": 20000,
  3. "msg": "goodsId不正确"
  4. }

返回值说明

如果code返回0,说明用户抢到了秒杀的名额,此时引导用户进入真实下单购买页面进行下单;
如果code返回10000,说明此时正在下单的用户名额已满,此时可以提示用户稍后重试;如果这个时候有的用户中途放弃下单、或者下单以后取消订单、或者长时间未支付,那么库存将会被释放,那么用户还是会有机会拿到秒杀名额继而进入下单界面进行下单