DiDi Delivery 骑手行程与提现数据 API
DiDi Delivery: Deliver & Earn 是 DiDi Global 面向 DiDi Food 的骑手端,独立配送员用它接餐厅订单,步行、骑行或滑板车完成取餐与送达。骑手用手机号开户、上传证件,并到 DiDi Courier Center 当面核验后才能上线接单。登录后首页列出可接配送,打开进行中的取送任务,送达后查看行程收入,再通过 DiDi Pay 与应用内钱包提现。Play 商店在墨西哥、智利等拉丁美洲 DiDi Food 城市上架,评分 3.0(92,942 条评价)。这些市场的骑手常把它与 Soy Rappi、Uber Eats 一起跑同一班外卖。
取餐 takeInfo 列出 shopName、shopAddress 与 cashAdvances;送达 SendInfo 带 customerName、customerAddress 与 cashReceivable,客户号码带 isPhoneProtect。骑手资料线名包括 ID、realname、phone、workType 与 cityID。钱包 accountSection 把 balance 与 kycStatus、fullKycStatus、已绑定 cardNum 挂在一起;余额详情再补 totalBalance、totalEarning 与 cashback,流水行保留 transId、transDate 与 amountText。
提现报价返回 channelName、inputAmount 与 commissionAmount,随后更新 canWithdraw 与 availableBalance。提现资料带法定 name 与 idNo;进度行暴露 withdrawId、bankCard 与 predictionTime。车队看板叠加进行中的取餐;报税工具对齐流水;出金台按 bindCard 银行行结算。openData Studio 把这些字段做成可调用的开放数据。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
发送登录验证码
POST
/v1/didi-food/session/otpopendata向骑手发送短信或邮箱一次性验证码;返回 errno 以及 prompt、voiceSupport。
认证方式: 无(发起登录)。请求体带 cell 或 email 与 code_type;BaseParam 附带 country_id、country_calling_code、canonical_country_code、appid、role、lang。
- cell
- code_type
- os_type
- country_id
- country_calling_code
- canonical_country_code
- api_version
- app_version
- lang
- errno
- error
- traceId
- prompt
- voiceSupport
POST /v1/didi-food/session/otp HTTP/1.1 Content-Type: application/json { "cell": "5215512345678", "code_type": 1, "os_type": "android", "country_id": 52, "country_calling_code": "+52", "canonical_country_code": "MX", "api_version": "1.0.2", "app_version": "2.2.78", "lang": "es-MX" }{ "errno": 0, "error": "", "traceId": "tr_9c81e2b0", "code_type": 1, "prompt": "We sent a code to **5678", "voiceSupport": true }验证码登录
POST
/v1/didi-food/session/verifyosint用一次性验证码换取护照 ticket、uid、cell 与 countryId,供后续钱包、提现与骑手 RPC 使用。
认证方式: 无(签发 ticket)。请求体带 cell、code、codeType、loginType;extra_info 可含 code_type。
- cell
- code
- codeType
- loginType
- extra_info
- ticket
- uid
- countryId
- callingCode
- role
- userType
- verifySessionId
- errno
- traceId
POST /v1/didi-food/session/verify HTTP/1.1 Content-Type: application/json { "cell": "5215512345678", "code": "482193", "codeType": 1, "loginType": 1, "country_id": 52, "country_calling_code": "+52", "canonical_country_code": "MX", "api_version": "1.0.2", "app_version": "2.2.78", "extra_info": { "code_type": 1 } }{ "errno": 0, "error": "", "traceId": "tr_9c81e2b0", "ticket": "tk_8f21c0a4", "uid": 1843921001, "cell": "5215512345678", "email": "", "countryId": 52, "callingCode": "+52", "role": 2, "userType": 1, "verifySessionId": "vs_44102" }刷新护照 ticket
POST
/v1/didi-food/session/renewopendata续期护照 ticket,使钱包、DiDi Pay 与骑手 RPC 会话无需再次验证码即可保持登录。
认证方式: 请求体携带现有 ticket;可选 returncell。
- ticket
- returncell
- errno
- uid
- cell
- countryId
- callingCode
POST /v1/didi-food/session/renew HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "returncell": 1, "canonical_country_code": "MX", "api_version": "1.0.2", "app_version": "2.2.78" }{ "errno": 0, "error": "", "ticket": "tk_c91e2b77", "uid": 1843921001, "cell": "5215512345678", "countryId": 52, "callingCode": "+52" }读取骑手资料
POST
/v1/didi-food/courierosint加载已登录骑手:ID、realname、phone、workType、cityID / countyID 与 countryCode,供骑手首页使用。
认证方式: 验证码登录签发的令牌作为表单字段 token。
- token
- ID
- phone
- realname
- nickname
- headImg
- countyGroupID
- countyID
- cityID
- areaID
- status
- workType
- channel
- level
- vehicleType
- countryCode
- country
- vendorCode
- isShopper
- ttsSwitch
POST /v1/didi-food/courier HTTP/1.1 Content-Type: application/x-www-form-urlencoded token=tk_8f21c0a4{ "ID": "1843921001", "phone": "5215512345678", "realname": "Maria Lopez", "nickname": "Maria", "headImg": "", "countyGroupID": "mx-cdmx", "countyID": "09000", "cityID": "51234500", "areaID": "51234501", "status": 1, "workType": 1, "channel": 1, "level": "2", "vehicleType": "bike", "countryCode": "MX", "country": "Mexico", "vendorCode": "didi_food", "isShopper": false, "ttsSwitch": true }读取行程配送详情
POST
/v1/didi-food/jobs/{deliveryId}opendata打开进行中的 DiDi Food 任务:取餐 takeInfo(shopName、shopAddress、cashAdvances)与送达 SendInfo(customerName、cashReceivable、isPhoneProtect)。
认证方式: 验证码登录签发的令牌作为表单字段 token。
- token
- deliveryId
- takeInfo
- orderIndex
- shopName
- shopAddress
- shopPhone
- cashAdvances
- isShopPhoneProtect
- customerName
- customerPhone
- customerPoiName
- customerAddress
- customerPoiAddress
- cashReceivable
- hideCustomerAddress
- isPhoneProtect
- name
- currency
- fee
- desc
POST /v1/didi-food/jobs/{deliveryId} HTTP/1.1 Content-Type: application/x-www-form-urlencoded token=tk_8f21c0a4&deliveryId=dl_7f21c0a4{ "takeInfo": { "orderIndex": "1", "shopName": "Tacos El Guero", "shopAddress": "Av. Insurgentes 120", "shopPhone": "5551230000", "cashAdvances": "0.00", "isShopPhoneProtect": 1 }, "sendInfo": { "customerName": "Ana", "customerPhone": "5559870000", "customerPoiName": "Depto 4B", "customerAddress": "Calle Reforma 88", "customerPoiAddress": "Calle Reforma 88", "cashReceivable": "128.50", "hideCustomerAddress": 0, "isPhoneProtect": 1 }, "fee": { "name": "Delivery fee", "currency": "MXN", "fee": 28.5, "desc": "Base + distance" } }读取热区订单预测
POST
/v1/didi-food/demand/forecastopendata返回订单预测组件:refreshTime 以及 columnList 中的 num、mark,供热区曲线使用。
认证方式: 验证码登录签发的令牌作为表单字段 token。
- token
- defaultInfo
- refreshTime
- columnList
- num
- mark
POST /v1/didi-food/demand/forecast HTTP/1.1 Content-Type: application/x-www-form-urlencoded token=tk_8f21c0a4{ "defaultInfo": {}, "refreshTime": 60, "columnList": [ { "num": 12.0, "mark": 1 }, { "num": 18.0, "mark": 0 } ] }查询骑手钱包首页余额
POST
/v1/didi-food/walletopenbanking加载钱包首页快照:accountBalance.balance、kycStatus / fullKycStatus,以及已绑定 bankCard.cardNum。
认证方式: 登录签发的 ticket,放在 JSON 请求体。
- ticket
- errno
- errmsg
- data
- channelId
- needFuidLogin
- accountSection
- accountBalance
- balance
- title
- linkUrl
- authenticationStatus
- kycStatus
- fullKycStatus
- supportFullKyc
- bankCard
- cardNum
- bhasInterest
- paySection
- financialSection
POST /v1/didi-food/wallet HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "canonical_country_code": "MX", "lang": "es-MX" }{ "errno": 0, "errmsg": "", "data": { "channelId": "MX_WALLET", "needFuidLogin": false, "accountSection": { "accountSectionName": "DiDi Pay", "accountBalance": { "balance": "1850.40", "title": "Available", "linkUrl": "" }, "authenticationStatus": "VERIFIED", "kycStatus": "PASS", "fullKycStatus": "PASS", "supportFullKyc": true, "bankCard": { "cardNum": "****1234", "title": "BBVA", "linkUrl": "", "redDot": "0" }, "bhasInterest": false }, "paySection": {}, "financialSection": {} } }读取账户余额详情
POST
/v1/didi-food/wallet/balanceopenbanking加载余额详情快照:totalBalance / totalEarning、cashback 与 interests,以及空状态 withoutHistory。
认证方式: 登录签发的 ticket,放在 JSON 请求体。
- ticket
- errno
- errmsg
- data
- totalBalance
- totalBalanceLabel
- totalBalanceTitle
- totalEarning
- totalEarningLabel
- cashback
- cashbackLabel
- interests
- interestLabel
- hasHit
- withoutHistory
- judBlockedBalance
- marketingResourceEntrance
POST /v1/didi-food/wallet/balance HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4" }{ "errno": 0, "errmsg": "", "data": { "totalBalance": 185040, "totalBalanceLabel": "$1,850.40", "totalBalanceTitle": "Available", "totalEarning": 12850, "totalEarningLabel": "$128.50", "cashback": 450, "cashbackLabel": "$4.50", "interests": 12, "interestLabel": "$0.12", "hasHit": true, "withoutHistory": false, "judBlockedBalance": { "amount": 0 }, "marketingResourceEntrance": {} } }列出账户流水
POST
/v1/didi-food/wallet/ledgeropenbanking返回钱包历史行,含 transId、businessType、transDate 与 amountText,供流水页使用。
认证方式: 登录签发的 ticket,放在 JSON 请求体。
- ticket
- nextIndex
- linkUrl
- errno
- statement
- title
- transId
- transDate
- transDateTitle
- time
- businessType
- detailLink
- amountText
POST /v1/didi-food/wallet/ledger HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "nextIndex": 0 }{ "errno": 0, "errmsg": "", "data": { "nextIndex": 20, "linkUrl": "", "statement": [ { "title": "DiDi Food delivery", "transId": "txn_7f21c0a4", "transDate": "2026-10-03", "transDateTitle": "3 Oct", "time": 1759507200000, "businessType": "DELIVERY", "detailLink": "", "amountText": { "text": "$128.50" } } ] } }读取账户 KYC 状态
POST
/v1/didi-food/wallet/kycosint读取 fullKycStatus 与 status,用于控制钱包提现以及 Courier Center 身份核验门槛。
认证方式: 登录签发的 ticket,放在 JSON 请求体。
- ticket
- errno
- errmsg
- data
- fullKycStatus
- status
POST /v1/didi-food/wallet/kyc HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4" }{ "errno": 0, "errmsg": "", "data": { "fullKycStatus": 1, "status": 1 } }试算手动提现
POST
/v1/didi-food/payouts/quoteopenfinance在骑手确认前提现报价:channelName、inputAmount、oriAmount 与 commissionAmount。
认证方式: 登录签发的 ticket 放在 JSON 请求体,并附带 utc_offset、osChannel=Android、app_version。
- ticket
- inputAmount
- utc_offset
- osChannel
- app_version
- errno
- data
- channelName
- oriAmount
- commissionAmount
POST /v1/didi-food/payouts/quote HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "inputAmount": [ "500.00" ], "utc_offset": -360, "osChannel": "Android", "app_version": "2.2.78" }{ "errno": 0, "errmsg": "", "data": { "channelName": "SPEI", "inputAmount": [ "500.00" ], "oriAmount": [ "500.00" ], "commissionAmount": [ "8.50" ] } }创建手动提现
POST
/v1/didi-food/payoutsopenfinance提交提现并返回 DriverWithdrawInfo:availableBalance、canWithdraw、hasBindAccount 与 bindCard 列表。
认证方式: 登录签发的 ticket 放在 JSON 请求体。
- ticket
- inputAmount
- channelName
- errno
- data
- driverInfo
- availableBalance
- availableBalanceSplit
- realBalance
- canWithdraw
- hasBindAccount
- showTransferIn
- bindCard
- bankCode
- bankName
- cardNum
- cardStatus
- commissionFee
- withdrawMin
- withdrawMax
POST /v1/didi-food/payouts HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "inputAmount": [ "500.00" ], "channelName": "SPEI", "osChannel": "Android", "app_version": "2.2.78" }{ "errno": 0, "errmsg": "", "data": { "driverInfo": { "availableBalance": 135040, "availableBalanceSplit": [ "1,350.40" ], "realBalance": 135040, "realBalanceSplit": [ "1,350.40" ], "canWithdraw": true, "hasBindAccount": true, "showTransferIn": false, "bindCard": [ { "bankCode": "012", "bankName": "BBVA", "cardNum": "****1234", "cardStatus": 1, "commissionFee": 850, "commissionFeeDisplay": 8.5, "withdrawMin": 10000, "withdrawMax": 5000000, "isDefault": true } ] } } }创建 DiDi Pay 订单
POST
/v1/didi-food/wallet/checkoutopenfinance打开 DiDi Pay 收银订单,返回 orderId、outTradeId 与 cashierType,供支付面板使用。
认证方式: 登录签发的 ticket,放在 JSON 请求体。
- ticket
- errno
- data
- orderMetaData
- orderId
- outTradeId
- cashierType
- jumpToH5
- thirdPartyParams
- noticeInfo
- paymentPasswordInfo
POST /v1/didi-food/wallet/checkout HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4" }{ "errno": 0, "errmsg": "", "data": { "orderMetaData": { "orderId": "ord_8f21c0a4", "outTradeId": "ot_44102", "cashierType": 1, "jumpToH5": false, "thirdPartyParams": "", "noticeInfo": {}, "paymentPasswordInfo": {} } } }查询骑手提现资料
POST
/v1/didi-food/payouts/profileosint加载骑手提现资料:法定姓名、idNo、fastTrackStatus 与 bindChannelCodeList,供绑定银行卡页使用。
认证方式: 登录签发的 ticket 放在 JSON 请求体,并附带 utc_offset、osChannel=Android、app_version。
- ticket
- utc_offset
- osChannel
- app_version
- errno
- data
- name
- idNo
- status
- isAbnormal
- fastTrackStatus
- fastTrackStatusDesc
- freeWithdraw
- bindCardRule
- bindChannelCodeList
- isDefaultChannel
- lastWithdrawRetMsg
- withdrawGray
POST /v1/didi-food/payouts/profile HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "utc_offset": -360, "osChannel": "Android", "app_version": "2.2.78", "canonical_country_code": "MX" }{ "errno": 0, "errmsg": "", "data": { "name": "Maria Lopez", "idNo": "LOPM850101XXXX", "status": 1, "isAbnormal": false, "fastTrackStatus": "PASS", "fastTrackStatusDesc": "Verified", "freeWithdraw": 2, "bindCardRule": "SPEI", "bindChannelCodeList": [ "SPEI", "CLABE" ], "isDefaultChannel": true, "lastWithdrawRetMsg": "", "withdrawGray": 0 } }查询提现银行卡渠道状态
POST
/v1/didi-food/payouts/channelsopenbanking列出已绑定出金渠道,含 channelId、accountTitle、status 与 isDefaultChannel,供银行账户管理页使用。
认证方式: 登录签发的 ticket 放在 JSON 请求体;另带 caller=fintech_sdk。
- ticket
- caller
- errno
- data
- channelId
- accountTitle
- status
- isAbnormal
- isDefaultChannel
- lastWithdrawRetMsg
- withdrawGray
- icon
POST /v1/didi-food/payouts/channels HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "caller": "fintech_sdk", "osChannel": "Android", "app_version": "2.2.78" }{ "errno": 0, "errmsg": "", "data": [ { "channelId": "SPEI", "accountTitle": "BBVA ****1234", "status": "ACTIVE", "isAbnormal": false, "isDefaultChannel": 1, "lastWithdrawRetMsg": "", "withdrawGray": 0, "icon": "" } ] }查询提现进度
POST
/v1/didi-food/payouts/{withdrawId}openfinance按 withdrawId 跟踪提现:status、amount、commissionFee、bankName / bankCard 以及 createTime / predictionTime。
认证方式: 登录签发的 ticket 放在 JSON 请求体,并附带 utc_offset、osChannel、app_version。
- ticket
- withdrawId
- errno
- data
- status
- amount
- amountSplit
- originalAmount
- commissionFee
- bankName
- bankCard
- withdrawMethodName
- createTime
- submitTime
- predictionTime
- finishTime
- bounceTime
- createContent
- submitContent
- finishContent
- bounceContent
- isDisplayRule
- accountErrorLink
POST /v1/didi-food/payouts/{withdrawId} HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "withdrawId": "wd_7f21c0a4", "osChannel": "Android", "app_version": "2.2.78" }{ "errno": 0, "errmsg": "", "data": { "withdrawId": "wd_7f21c0a4", "status": 2, "amount": "500.00", "amountSplit": [ "500.00" ], "originalAmount": "500.00", "commissionFee": "8.50", "bankName": "BBVA", "bankCard": "****1234", "withdrawMethodName": "SPEI", "createTime": 1759507200000, "submitTime": 1759507260000, "predictionTime": 1759593600000, "finishTime": 0, "bounceTime": 0, "createContent": "Requested", "submitContent": "Sent to bank", "finishContent": "", "bounceContent": "", "isDisplayRule": true, "accountErrorLink": "" } }开通骑手人脸核验会话
POST
/v1/didi-food/kyc/face-sessionosint在骑手绑定出金账户前签发人脸核验会话(session、bizCode)。
认证方式: 登录签发的 ticket 放在 JSON 请求体;开户风控需要人脸核验时调用。
- ticket
- errno
- errmsg
- data
- session
- bizCode
POST /v1/didi-food/kyc/face-session HTTP/1.1 Content-Type: application/json { "ticket": "tk_8f21c0a4", "osChannel": "Android", "app_version": "2.2.78" }{ "errno": 0, "errmsg": "", "data": { "session": "fs_9c81e2b0", "bizCode": 1001 } }
数据类别
- 配送
- 余额
- 交易
- 提现
- KYC
- 身份
数据使用场景与案例
进行中行程叠加
调度台读取 takeInfo.shopName / shopAddress 与 SendInfo.cashReceivable / customerAddress,让车队看板显示当前 DiDi Food 取送,而无需截取骑手屏幕。
骑手钱包对账
夜间任务读取 accountBalance.balance 以及流水 transId / transDate / amountText,让车队或报税工具把 DiDi Food 结算与自有账本对齐。
提现作业
出金台先消费试算里的 channelName、commissionAmount、inputAmount,创建后再按 availableBalance、canWithdraw 与 bindCard.cardNum / bankName 入账。
提现 KYC 门槛
合规叠加层在放行提现前查看钱包首页的 kycStatus、fullKycStatus、authenticationStatus,以及骑手 ID / realname / workType。
常见问题
DiDi Delivery 骑手如何鉴权?
应用先向手机号或邮箱发送一次性验证码,再换成 passport ticket、uid、cell 与 countryId。钱包与提现把 ticket 放在 JSON 请求体;骑手 RPC 以表单字段 token 提交。刷新调用负责续期,无需再次验证码。
进行中配送暴露哪些行程字段?
进行中任务返回取餐 takeInfo.shopName、shopAddress、shopPhone、cashAdvances,以及送达 SendInfo.customerName、customerAddress、cashReceivable、isPhoneProtect。骑手首页再补 ID、realname、phone、workType、cityID、countryCode。
骑手钱包首页有哪些字段?
钱包首页返回 accountSection.accountBalance.balance、kycStatus、fullKycStatus、authenticationStatus 与 bankCard.cardNum。余额详情再补 totalBalance、totalEarning 与 cashback。流水再补 transId、transDate、businessType、amountText。
提现怎么走?
试算步骤报价 channelName、inputAmount、oriAmount、commissionAmount。创建提现后返回 availableBalance、canWithdraw、hasBindAccount 与 bindCard(bankCode、bankName、cardNum、withdrawMin、withdrawMax)。
相关主题
- DiDi Delivery API
- DiDi Food 骑手钱包
- DiDi Pay 提现
- takeInfo shopName
- cashReceivable
- 骑手 KYC
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业