用途:通过 swiggy-cli 提交 Swiggy Food 或 Instamart 订单,选择现金、UPI 或 Swiggy Money 支付,并强制先获取用户明确同意。由于订单无法通过 API 取消(客服电话 080-67466729),该技能对同意环节要求严格。
主要能力与用法: 下单前每次都要做三步预检查。先用 swiggy <server> cart --json --no-interactive 读取实时购物车,展示商品、数量与应付总额;再用 swiggy <server> addresses --json 确认配送地址并复述“配送到:”;最后直接提问“是否以 ₹X 配送到 Y,用 Z 支付?”,等待明确同意,搜索后的“可以继续”不算付款同意,“是的,下单”才算。
支付选择:用户指明方式时,现金或 COD 用 --pay cash;“UPI/GPay/PhonePe/Paytm”先在 payment-options 中找对应应用 id,有则 --pay upi:<精确复制的id>,否则 --pay upi;“Swiggy Money/wallet”运行 payment-options,仅当服务器列出时才用 --pay swiggypay;未指明则展示 payment-options 列表,不可代为选择。payment-options --json 是唯一依据,不得向用户索要 UPI ID/VPA。
执行示例:现金为 swiggy food checkout --pay cash --yes --json --no-interactive;UPI 为 swiggy food checkout --pay upi --wait --yes --json --no-interactive(最多阻塞约 5 分钟)。--note 仅 Food 可用,发给餐厅,不用于配送说明。
结果读取:meta.payment.pending 为 false 且 status 为 CONFIRMED/PLACED 表示已下单,原样引用 meta.message 并保存 data.orderId;pending 为 true 表示尚未完成,提示在 UPI 应用中完成支付并给出 bridgeUrl,再按 swiggy-pay 处理。退出码 10 为支付失败,读 error.hint,勿盲目重试;退出码 6 为 MCP 错误,先展示 error.message,再运行 swiggy <server> orders --active --json 检查是否已下单。
限制:不可重复为同一购物车调用 checkout;不得在 PENDING_PAYMENT 时宣告成功;用户指定地址缺失时应询问而非替换;PRE-FLIGHT 第三步未在本对话中明确回答“是”之前不得加 --yes。