该方法适用于高并发秒杀、抢购场景,例如商品库存自由几个、几十、几百个,但是同时可能会有几十万的用户参与抢购。
这种场景下,不适合直接按照正常流程进行购买,高并发以及瞬时峰值可能会导致您的应用非常卡乃至无法访问,那么正确的做法应该是这样的:
单独设置秒杀入口页面
此类活动,应该设置单独的一个活动入口页面,不应该将几十万的用户直接引导至应用首页或者其他无关应用。制作一个静态的落地广告页面会是一个非常不错的选择(因为这个页面是几十万用户同时都会访问的);
该页面介绍活动的信息,商品信息,然后放置一个 “立即抢购” 的按钮,点击该按钮后调用本接口:
接口说明
/goods/seckill/grab
POST
两个参数: goodsId 和 seconds
下面是直接使用 SDK :
WXAPI.goodsSeckillGrab(goodsId, seconds)
- goodsId 为商品id
- seconds 为名额的保留时间,超过这个时间,系统将根据商品的实际剩余库存重新计算可抢占的名额;一般设置成 60 秒会比较适合;
返回示例:
{
"code": 0,
"data": 3,
"msg": "success"
}
{
"code": 10000,
"data": 0,
"msg": "已售罄"
}
{
"code": 20000,
"msg": "goodsId不正确"
}
返回值说明
如果code返回0,说明用户抢到了秒杀的名额,此时引导用户进入真实下单购买页面进行下单;
如果code返回10000,说明此时正在下单的用户名额已满,此时可以提示用户稍后重试;如果这个时候有的用户中途放弃下单、或者下单以后取消订单、或者长时间未支付,那么库存将会被释放,那么用户还是会有机会拿到秒杀名额继而进入下单界面进行下单