返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 微信开发深度解析 苏震巍 著 专业科技 文轩网
  • 新华书店正版
    • 作者: 苏震巍 著著
    • 出版社: 电子工业出版社
    • 出版时间:2017-07-01 00:00:00
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    文轩网图书旗舰店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

         https://product.suning.com/0070067633/11555288247.html

     

    商品参数
    • 作者: 苏震巍 著著
    • 出版社:电子工业出版社
    • 出版时间:2017-07-01 00:00:00
    • 版次:1
    • 印次:1
    • 印刷时间:2017-07-01
    • 字数:990千字
    • 页数:602
    • 开本:16开
    • 装帧:平装
    • 国别/地区:中国
    • 版权提供:电子工业出版社

    微信开发深度解析

    作  者:苏震巍 著
    定  价:99
    出 版 社:电子工业出版社
    出版日期:2017年07月01日
    页  数:624
    装  帧:简装
    ISBN:9787121317385
    主编推荐

    内容简介

    本书以深度剖析Senparc.Weixin SDK框架的设计思想和使用方法为主干,全面介绍了开发微信公众号(包含了订阅号、服务号和小程序)所需的关键技能,包括了从需求分析、策划,到账号申请、验证,再到全面的API及开发工具介绍,侧重于服务器端开发。本书也涵盖了盛派网络团队在多年的研发过中收集到的大量注意点,帮助开发者“避坑”。全书包含了四个部分:微信基础介绍(靠前~3章)、Senparc.Weixin SDK框架介绍(第4~13章)、Senparc.Weixin SDK接口介绍(靠前4~19章)和微信小程序(第20章),由浅入深指导开发者学习微信开发,在此过程中可以结合配套系统进行阅读和练习:https://book.weixin.senparc.com。同时,本书也是Senparc.Weixin SDK作者为开发者奉上的一份官方文档,书中详细介绍了null

    作者简介

    苏震巍,香港理工大学硕士,9岁起钻研软件编程,12岁开始专注互联网及Web领域的研发,24岁出版图书《ASP.NET 4.5+Server Server网站模块化开发》,被众多大学选用为教材,目前靠前很受欢迎的.NET开源项目之一:Senparc.Weixin SDK的作者。

    精彩内容

    目录
    ★部分  微信基础介绍 章  使用本书 2 1.1 我是否适合读这本书 3 1.2 如何用好这本书 3 1.3  各章节导读 5 1.4  名词解释 7 1.5  学习资源 8 1.6  帮助我们改进 9 习题 9 第2章  策划你的个微信项目 10 2.1  需求分析 10 2.1.1  沟通需求 10 2.1.2  整理需求 13 2.1.3  制定方案 14 2.2  数据库设计 17 2.3  接口统计 21 2.4  业务逻辑 22 2.5  技术架构 24 2.6  微信公众号策划 26 2.7  统一培训 27 习题 28 第3章  开发微信公众号前的准备 29 3.1  准备工作 29 3.1.1  基本技能 29 3.1.2  开发环境 30 3.1.3  域名 31 3.1.4  服务器 31 3.1.5  SSL证书 31 3.2  消息通信 31 3.2.1  公众平台的消息通信过程 31 3.2.2  XML通信格式 32 3.2.3  消息通信中需要注意的问题 33 3.3  访问网页 34 3.4  使用测试号进行测试 34 3.5  使用微信 Web 开发者工具调试微信 36 3.5.1  下载和安装 36 3.5.2  使用开发者工具 37 3.6  单元测试 39 3.7  在线接口调试工具 39 3.8  服务号、订阅号和认证账号的功能差别 40 3.8.1  服务号 40 3.8.2  订阅号 44 3.9  微信公众号申请 47 习题 56 ★第二部分  Senparc.Weixin SDK框架介绍 第4章  Senparc.Weixin SDK设计架构 58 4.1  开源项目 58 4.2  开源协议 58 4.3  微信平台生态与 Senparc.Weixin SDK 59 4.4  文件目录 61 4.4.1  根目录 61 4.4.2  src目录 61 4.5  Senparc.Weixin.dll 62 4.5.1  Senparc.Weixin文件结构 62 4.5.2  Senparc.Weixin类库结构 65 4.5.3  使用Senparc.Weixin注意点 65 4.6  Senparc.Weixin.MP.dll 66 4.6.1  Senparc.Weixin.MP.dll文件结构 66 4.6.2  Senparc.Weixin.MP.dll类库 69 4.7  Senparc.Weixin.WxOpen.dll 69 4.8  Senparc.Weixin.MP.MvcExtension.dll 71 4.9  Senparc.Weixin.Cache.Redis.dll 71 4.10  Senparc.Weixin.Cache.Memcached.dll 72 4.11  其他类库 72 4.12  单元测试 72 4.13  修改源代码和贡献代码 72 4.13.1  注册 GitHub 账号 73 4.13.2  Fork项目 75 4.13.3  修改代码 76 4.13.4  提交代码 78 4.13.5  贡献代码 79 习题 82 第5章  微信公众号开发全过程案例 83 5.1  开发准备 83 5.1.1  安装开发环境及工具 83 5.1.2  创建解决方案 84 5.1.3  创建项目 85 5.1.4  使用 Nuget 安装 Senparc.Weixin SDK 88 5.2  开发 90 5.2.1  准备基础框架 91 5.2.2  创建数据库 91 5.2.3  同步数据库 92 5.2.4  建立数据库框架 95 5.2.5  开发Repository仓储模块 98 5.2.6  缓存 100 5.2.7  开发业务逻辑 102 5.2.8  Controller控制器 105 5.2.9  Web项目和UI 111 5.3  单元测试 111 5.4  部署 112 5.5  消息验证和线上测试 112 5.6  在Microsoft Azure上运行微信公众号示例 112 习题 116 第6章  使用SDK Demo:Senparc.Weixin.MP.Sample 117 6.1  文件位置及结构 117 6.1.1  Senparc.Weixin.MP.Sample 解决方案文件夹 117 6.1.2  Senparc.Weixin.MP.Sample 解决方案 118 6.1.3  Senparc.Weixin.MP.Sample Web项目 119 6.1.4  Senparc.Weixin.MP.Sample.CommonService 项目 121 6.2  配置项目 122 6.2.1  Web.Config文件 122 6.2.2  Global.asax 文件 124 6.2.3  首页 125 6.3  微信消息 126 6.3.1  消息处理 127 6.3.2  消息模拟及并发消息测试 134 6.4  微信菜单 135 6.5  OAuth 138 6.6  JS-SDK 140 6.7  微信支付 141 6.8  素材 143 6.9  缓存测试 143 6.10  异步方法 145 6.11  微信内置浏览器过滤 146 6.12  微信小程序 147 6.12.1  消息处理 147 6.12.2  模板消息 148 6.12.3  WebSocket 148 6.13  其他 148 6.13.1  开放平台 148 6.13.2  企业号 149 6.13.3  文档下载 149 6.14  WebForms项目 150 6.15  单元测试 150 6.15.1  单元测试项目 150 6.15.2  单元测试方法 151 6.16  配置服务器和参数 153 6.16.1  配置IIS 153 6.16.2  安装 .NET Framework 4.5 154 6.16.3  设置IIS站点 155 6.16.4  解析域名 156 6.16.5  检查 Web.config 文件 156 6.17  部署 156 习题 157 第7章  MessageHandler:简化消息处理流程 158 7.1  设计思想 158 7.2  消息类型 160 7.2.1  概述 160 7.2.2  命名规则 161 7.2.3  全局消息基类 161 7.2.4  请求消息 161 7.2.5  响应消息 165 7.3  原始消息处理方法 169 7.4  使用MessageHandler 170 7.4.1  步:通过Nuget安装Senparc.Weixin.MP 170 7.4.2  第二步:创建你自己的MessageHandler 170 7.4.3  第三步:写3行关键代码 175 7.5  OnExecuting()和OnExecuted() 175 7.6  解决用户上下文(Session)问题 176 7.6.1  消息容器:MessageContainer 177 7.6.2  消息队列:MessageQueue 178 7.6.3  单用户上下文:MessageContext 179 7.6.4  全局上下文:WeixinContext 183 7.6.5  上下文移除事件:WeixinContextRemovedEventArgs 185 7.7  消息去重 185 7.8  消息加密 187 7.9  消息格式转换 189 7.9.1  XML转实体 190 7.9.2  实体转XML 190 7.10  消息代理 191 7.11  了解MessageHandler设计原理 191 7.11.1  Senparc.Weixin.MessageHandlers.MessageHandler结构 192 7.11.2  Senparc.Weixin.MP.MessageHandlers.MessageHandler结构 196 7.11.3  抽象类及虚方法 198 7.11.4  构造函数 198 7.11.5  Execute()方法 200 7.11.6  CancelExcute属性 201 7.11.7  OnExecuting()方法 202 7.11.8  DefaultResponseMessage()方法 202 习题 203 第8章  缓存策略 204 8.1  设计原理 204 8.2  基础缓存策略接口:IBaseCacheStrategy 206 8.3  数据容器缓存策略接口:IContainerCacheStragegy 207 8.3.1  原始IContainerCacheStragegy设计思路 207 8.3.2  优化IContainerCacheStragegy设计思路 208 8.3.3  优化IContainerItemCollection和ContainerItemCollection 208 8.4  本地数据容器缓存策略:LocalContainerCacheStrategy 211 8.4.1  创建LocalContainerCacheStrategy类 211 8.4.2  定义数据源 212 8.4.3  实现容器缓存策略 214 8.4.4  运用单例模式 216 8.4.5  测试 218 8.5  分布式缓存 219 8.5.1  起因 219 8.5.2  负载均衡 220 8.5.3  分布式缓存 220 8.5.4  分布式使用的注意点 221 8.6  Redis分布式缓存策略:RediscontainerCacheStrategy 222 8.6.1  Redis简介 222 8.6.2  安装Redis 222 8.6.3  StackExchange.Redis缓存扩展 222 8.6.4  实现Redis缓存策略 224 8.6.5  单元测试 225 8.7  Memcached分布式缓存策略:MemcachedContainerCacheStrategy 225 8.7.1  Memcached简介 225 8.7.2  安装Memcached 226 8.7.3  EnyimMemcached缓存扩展 226 8.7.4  实现Memcached缓存策略 227 8.8  缓存策略工厂:CacheStrategyFactory 227 8.8.1  创建CacheStrategyFactory 227 8.8.2  配置和使用CacheStrategyFactory 229 习题 230 第9章  并发场景下的分布式锁 231 9.1  概述 231 9.2  为什么需要分布式锁 231 9.3  分布式锁的设计 232 9.3.1  IBaseCacheStrategy 接口设计 232 9.3.2  ICacheLock 接口设计 234 9.3.3  分布式锁基类:BaseCacheLock 236 9.4  本地锁 236 9.4.1  LocalCacheLock 236 9.4.2  实现 BeginCacheLock 238 9.5  Redis 锁 238 9.5.1  RedisCacheLock 238 9.5.2  Redlock.CSharp 240 9.5.3  实现BeginCacheLock 240 9.6  Memcached锁 241 9.6.1  MamcachedCacheLock 241 9.6.2  实现BeginCacheLock 242 习题 242 0章  Container:数据容器 243 10.1  设计思路及原理 243 10.2  BaseContainerBag 245 10.3  BaseContainer 246 10.4  AccessTokenContainer 253 10.5  JsApiTicketContainer 262 10.6  BindableBase 262 10.7  ContainerHelper 264 习题 265 1章  SenparcMessageQueue:消息队列 266 11.1  设计原理 266 11.2  队列项:SenparcMessageQueueItem 267 11.3  消息队列:SenparcMessageQueue 268 11.3.1  GenerateKey()方法 269 11.3.2  MessageQueueDictionary 269 11.3.3  MessageQueueList 269 11.3.4  有关Dictionary和List的效率测试 270 11.4  自动线程处理:SenparcMessageQueueThreadUtility 272 11.4.1  SenparcMessageQueueThreadUtility 272 11.4.2  线程工具类:ThreadUtility 274 11.4.3  优化扩展 276 习题 278 2章  接口调用及数据请求 279 12.1  设计规则 279 12.2  响应类型 281 12.2.1  基类:WxJsonResult 281 12.2.2  扩展响应类型 282 12.3  请求 284 12.3.1  GET请求 284 12.3.2  POST请求 286 12.3.3  JSON 请求 290 12.3.4  文件上传/下载 292 12.3.5  公共方法 293 12.4  使用AccessToken请求接口:CommonJsonSend 293 12.4.1  Sent<T>() 方法 293 12.4.2  JsonSetting 295 12.4.3  WeixinJsonConventer 298 12.5  AccessToken自动处理器:ApiHandlerWapper 299 习题 302 3章  Debug模式及异常处理 303 13.1  Debug模式设计原理 303 13.2  WeixinTrace 304 13.3  异常处理 308 13.3.1  WeixinException 308 13.3.2  ErrorJsonResultException 309 13.3.3  MessageHandlerException 310 13.3.4  UnknownRequestMsgTypeException 311 13.3.5  UnRegisterAppIdException 311 13.3.6  WeixinMenuException 312 13.4  微信官方在线调试工具 314 习题 315 ★第三部分  Senparc.Weixin SDK接口介绍 4章  微信接口 318 14.1  微信接口概述 318 14.2  开始使用微信接口 319 14.2.1  获取接口调用凭据(AccessToken) 319 14.2.2  获取凭证接口 320 14.2.3  获取微信服务器IP地址 321 14.3  自定义菜单管理 322 14.3.1  自定义菜单 322 14.3.2  个性化菜单 328 14.4  消息管理 329 14.4.1  发送客服消息 329 14.4.2  发送消息-群发接口和原创校验 332 14.4.3  发送消息-模板消息接口 334 14.4.4  获取公众号的自动回复规则 334 14.5  微信网页授权(OAuth) 334 14.6  素材管理 335 14.6.1  新增临时素材 335 14.6.2  获取临时素材 335 14.6.3  新增较为素材 335 14.6.4  获取较为素材 335 14.6.5  删除较为素材 335 14.6.6  修改较为图文素材 336 14.6.7  获取素材总数 336 14.6.8  获取素材列表 336 14.7  用户管理 336 14.7.1  用户标签管理 336 14.7.2  设置用户备注名 338 14.7.3  获取用户基本信息(UnionID机制) 338 14.8  账号管理 339 14.8.1  创建二维码 339 14.8.2  获取下载二维码的地址 339 14.8.3  长链接转短链接 339 14.9  数据统计接口 339 14.9.1  用户分析数据接口 340 14.9.2  图文分析数据 340 14.9.3  消息分析数据 341 14.9.4  接口分析数据接口 342 14.10  微信JS-SDK 343 14.10.1  获取验证地址 343 14.10.2  获取AccessToken 343 14.10.3  刷新access_token 343 14.10.4  获取用户基本信息 343 14.10.5  检验授权凭证(access_token)是否有效 343 14.11  微信小店接口 344 14.11.1  语义理解接口 344 14.12  微信卡券接口 344 14.12.1  创建卡券 344 14.12.2  投放卡券 345 14.12.3  核销卡券 346 14.12.4  管理卡券 346 14.12.5  会员卡专区 348 14.12.6  朋友的券专区 349 14.12.7  第三方代制专区 350 14.12.8  第三方授权相关接口(开放平台) 352 14.13  微信门店接口 352 14.13.1  上传图片 352 14.13.2  创建门店 352 14.13.3  查询门店信息 353 14.13.4  查询门店列表 353 14.13.5  修改门店服务信息 353 14.13.6  删除门店 353 14.13.7  获取门店类目表 353 14.13.8  设备功能介绍 353 14.14  多客服功能 354 14.14.1  客服管理接口 354 14.14.2  多客服会话控制接口 355 14.14.3  获取客服聊天记录接口 356 14.15  摇一摇周边 356 14.15.1  申请开通摇一摇周边 356 14.15.2  设备管理 356 14.15.3  页面管理 357 14.15.4  素材管理 358 14.15.5  配置设备与页面的关联关系 358 14.15.6  数据统计 359 14.15.7  HTML5页面获取设备信息 359 14.15.8  获取设备及用户信息 360 14.15.9  摇一摇红包 361 14.16  微信连Wi-Fi 361 14.16.1  第三方平台获取开插件wifi_token 361 14.16.2  Wi-Fi门店管理 362 14.16.3  Wi-Fi设备管理 362 14.16.4  配置联网方式 363 14.16.5  商家主页管理 363 14.16.6  Wi-Fi数据统计 364 14.16.7  卡券投放 364 14.17  小程序 364 14.18  异步方法 365 习题 366 5章  模板消息 367 15.1  概述 367 15.2  使用规则 367 15.3  申请模板消息 369 15.3.1  开通模板消息功能 369 15.3.2  添加消息模板 370 15.3.3  创建自定义消息模板 373 15.4  接口介绍 374 15.4.1  设置所属行业 374 15.4.2  获取设置的行业信息 374 15.4.3  获得模板ID(添加模板) 374 15.4.4  获取模板列表 375 15.4.5  删除模板 375 15.4.6  发送模板消息 375 15.4.7  事件推送 381 15.4.8  异步方法 382 习题 383 6章  微信网页授权(OAuth 2.0) 384 16.1  OAuth 2.0简介 384 16.2  设置微信OAuth回调域名 386 16.3  开发微信OAuth接口 387 16.3.1  创建Controller 387 16.3.2  GetAuthorizeUrl() 方法 388 16.3.3  GetAccessToken() 方法 391 16.3.4  GetUserInfo() 方法 394 16.3.5  RefreshToken() 方法 398 16.3.6  Auth() 方法 398 16.4  异步OAuth接口 399 16.5  调试OAuth 399 16.5.1  调试工具 399 16.5.2  设置 400 16.6  使用SenparcOAuthAttribute实现OAuth自动登录 403 16.6.1  SenparcOAuthAttribute 定义 403 16.6.2  使用 SenparcOAuthAttribute 406 16.7  解决 OAuth 出现 40029(invalid code)错误 408 16.7.1  现象和问题 408 16.7.2  原因 408 16.7.3  解决方案一 411 16.7.4  解决方案二 411 16.7.5  解决方案三 412 16.7.6  解决方案四 412 16.7.7  解决方案总结 414 16.8  一些误区和注意点 414 16.8.1  每次打开页面都使用OAuth获取OpenId 414 16.8.2  认为不使用HTTPS没有关系 416 16.8.3  在Callback(redirectUrl) 页面直接输出页面 416 16.8.4  短信通知包含需要OAuth的网页(体验问题) 417 16.8.5  不使用OAuth,而使用菜单事件判断来访者身份 418 习题 419 7章  其他帮助类及辅助接口 420 17.1  概述 420 17.2  序列化和JSON相关 420 17.2.1  SerializerHelper 420 17.2.2  WeixinJsonConventer 422 17.2.3  JsonSetting 422 17.3  时间帮助类:DateTimeHelper 423 17.4  加密解密 424 17.4.1  MD5 424 17.4.2  SHA1 425 17.4.3  AES 426 17.5  浏览器相关 427 17.5.1  判断当前网页是否在浏览器内 427 17.6  JS-SDK 429 17.6.1  获取签名信息 429 17.6.2  JsSdkUiPackage 430 17.6.3  获取 SHA1 加密信息 432 17.6.4  卡券相关 433 17.7  地图及位置 435 17.7.1  LBS位置计算帮助类:GpsHelper 435 17.7.2  百度地图 435 17.7.3  谷歌地图 435 习题 436 8章  微信网页开发:JS-SDK 437 18.1  概述 437 18.2  签名 438 18.2.1  通过JsApiTicketContainer获取jsapi_ticket 438 18.2.2  获取签名 439 18.3  JS-SDK使用步骤 439 18.3.1  步:绑定域名 439 18.3.2  第二步:引入JS文件 440 18.3.3  第三步:通过config接口注入权限验证配置 441 18.3.4  第四步:通过ready接口处理成功验证 442 18.3.5  第五步:通过error接口处理失败验证 442 18.4  接口调用说明 442 18.5  基础接口 443 18.6  具体业务接口 443 18.6.1  分享接口 444 18.6.2  图像接口 446 18.6.3  音频接口 447 18.6.4  智能接口 450 18.6.5  设备信息 451 18.6.6  地理位置 451 18.6.7  摇一摇周边 452 18.6.8  界面操作 452 18.6.9  微信扫一扫 454 18.6.10  微信小店 454 18.6.11  微信支付 455 18.6.12  微信卡券 455 18.7  参考资料 458 18.7.1  所有菜单项列表 458 18.7.2  卡券扩展字段cardExt说明 459 18.7.3  所有JS接口列表 459 习题 461 9章  微信支付 462 19.1  支付模式 463 19.1.1  刷卡支付 463 19.1.2  扫码支付 463 19.1.3  公众号支付 463 19.1.4  APP支付 463 19.2  申请微信支付 463 19.2.1  流程介绍 463 19.2.2  步:申请开户 464 19.2.3  第二步:小额打款 466 19.2.4  第三步:支付验证费用 467 19.3  获取商户证书 468 19.3.1  接收邮件 468 19.3.2  安装操作证书 468 19.3.3  下载证书 471 19.3.4  一些注意点 474 19.4  接口规则 475 19.4.1  协议规则 475 19.4.2  参数规定 476 19.4.3  安全规范 479 19.4.4  获取OpenId 480 19.5  公众号支付 480 19.5.1  支付场景介绍 480 19.5.2  公众号后台的配置 482 19.5.3  设置测试目录 486 19.5.4  商户后台的配置 487 19.5.5  业务流程 489 19.5.6  HTML5页面调起支付API 491 19.6  微信支付API 492 19.6.1  统一下单 493 19.6.2  查询订单 496 19.6.3  关闭订单 497 19.6.4  申请退款 498 19.6.5  查询退款 499 19.6.6  下载对账单 500 19.6.7  支付结果通知 502 19.6.8  交易保障 503 19.7  企业付款 503 19.7.1  概述 503 19.7.2  企业付款 API 505 19.7.3  查询企业付款 API 506 19.8  微信支付Demo开发 507 19.8.1  后端开发 507 19.8.2  前端开发 514 19.9  需要注意的一些事 517 19.9.1  关于服务器SSL版本 517 19.9.2  关于IPv6 518 19.9.3  关于阿里云主机 518 习题 518 ★第四部分  微信小程序 第20章  微信小程序 522 20.1  注册小程序 523 20.2  管理信息及微信认证 525 20.2.1  信息设置 525 20.2.2  微信认证 527 20.3  准备开发 528 20.3.1  开发参数设置 528 20.3.2  添加开发者和体验者 532 20.3.3  下载开发工具 532 20.3.4  开发个小程序 533 20.3.5  预览小程序 542 20.3.6  发布小程序 542 20.4  使用SDK进行后端开发 545 20.4.1  Senparc.Weixin.WxOpen.dll 545 20.4.2  对接MessageHandler 545 20.4.3  回复客服消息 551 20.4.4  获取二维码 555 20.4.5  其他高级接口 556 20.5  使用模板消息 556 20.5.1  概述 556 20.5.2  步:选取消息模板 556 20.5.3  第二步:设置并添加模板 558 20.5.4  第三步:发送模板消息 559 20.5.5  申请模板 563 20.6  实现数据请求 565 20.7  登录接口及用户信息管理 569 20.7.1  登录:wx.login 569 20.7.2  登录状态维护:SessionContainer 571 20.7.3  验证:wx.checkSession 573 20.7.4  签名加密 573 20.7.5  加密数据解密算法 575 20.8  实现WebSocket 通信 578 20.8.1  关于 WebSocket 578 20.8.2  在服务器上配置 WebSocket 578 20.8.3  使用 Senparc.WebSocket 进行 WebSocket 开发 580 20.9  小程序的微信支付 591 20.10  小程序开发过程中的常见问题 594 20.10.1  使用HTTPS 594 20.10.2  安装WMSVC证书 596 20.10.3  申请免费的SSL证书 596 20.10.4  解决Unexpected response code: 200 错误 601 习题

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购