1. 项目背景与准备工作
最近接了个活儿,客户想在自己的小程序里集成美团的卡券核销功能。说白了,就是用户买了美团的团购券,到店消费时,店员用我们的小程序扫一下券码,就能完成核销确认。听起来简单,但实际对接起来,从申请权限到调试签名,每一步都可能踩坑。我用的是ThinkPHP5.0框架,这个框架在国内用的人多,生态也熟,做这种业务对接比较顺手。如果你也在用TP5,或者对美团API的对接流程一头雾水,那这篇实战记录应该能帮到你,我会把代码掰开揉碎了讲,争取让你看完就能上手。
首先,你得有个美团开放平台的账号。别小看这一步,申请应用、获取AppKey和Secret(也就是密钥)是第一步,也是最关键的一步。这俩东西就像你家的门牌号和钥匙,没有它们,API的大门你连敲都敲不开。申请的时候,注意选择“团购”相关的权限,特别是“验券(核销)”和“撤销验券”这两个核心能力,一定要勾选上。申请过程可能需要一点时间审核,耐心等等。
拿到AppKey和Secret之后,别急着写代码。我建议你先在ThinkPHP5.0项目里规划一下代码结构。我习惯把这类第三方接口的调用封装成独立的服务类(Service),这样逻辑清晰,以后维护或者换其他平台的API也方便。但为了让大家看得更直观,我这里会先在一个控制器(Controller)里把完整流程走通,后面你再根据自己的项目结构去优化封装。
2. 核心流程与接口梳理
美团卡券核销相关的API主要围绕三个核心操作:查询券状态、核销(验券)、撤销核销。这三个操作对应三个不同的接口地址,但它们的调用流程和签名逻辑是相通的。理解了这个流程,你就掌握了对接的精髓。
整个流程可以概括为:构造参数 -> 生成签名 -> 发送请求 -> 处理响应。听起来像废话?但很多新手栽就栽在细节上。比如,签名到底怎么算?参数顺序有没有要求?哪些参数是公共的,哪些是业务特有的?别急,我们一步步来。
先看看这三个接口是干嘛的:
- 查询券状态:用户出示券码后,你先调用这个接口,看看这张券是不是有效的、有没有被用过、是不是对应这个店铺。这叫“验前准备”,避免无效操作。
- 核销(验券):确认券有效后,调用这个接口完成真正的核销。调用成功,美团那边就会标记这张券已使用。
- 撤销核销:手滑了,核销错了怎么办?别慌,只要在一定时间内(具体看美团规则),可以调用这个接口把核销操作撤销,券就恢复成未使用状态。
这三个接口的地址(Endpoint)不一样,需要的业务参数也略有不同,但公共参数(像app_key, timestamp, sign这些)和签名算法是完全一样的。下面这个表格帮你快速理清区别:
| 功能 | 接口地址 (Endpoint) | 关键业务参数 | 说明 |
|---|---|---|---|
| 查询券状态 | https://openapi.dianping.com/router/tuangou/receipt/prepare |
receipt_code (券码), open_shop_uuid (店铺ID) |
核销前的安全检查,必做。 |
| 核销(验券) | https://openapi.dianping.com/router/tuangou/receipt/consume |
receipt_code, open_shop_uuid, app_shop_account (操作账号)等 |
执行核销操作。 |
| 撤销核销 | https://openapi.dianping.com/router/tuangou/receipt/reverseconsume |
receipt_code, open_shop_uuid, app_deal_id (套餐ID)等 |
回滚核销操作。 |
3. 授权与Session获取的坑
在正式调用核销接口前,还有一个前置任务:获取session。这个session不是我们网站登录的那个session,你可以把它理解为美团API颁发给你的一次性“临时通行


338

被折叠的 条评论
为什么被折叠?



