Skip to content

商户开放API

商户需要先登录到控制台->开发者, 获取商户开发者Secret才能调用本系列API。

介绍

请求方式

  • HOST: https://open.idatariver.com
  • Headers: Authorization: Bear Your_Developer_Secret

多语言支持

平台支持自动将商户的项目/商品信息翻译为多国语言, 如果需要获取指定语言版本, 只需要在Headers里传递X-Idr-Locale字段。

接口会将自动翻译的结果存放在nameI18n与descI18n字段里。

目前自动翻译包括项目/商品的name和desc字段。

X-Idr-Locale语言
en🇬🇧 English
fa🇮🇷 فارسی
zh-cn🇨🇳 简体中文
ja🇯🇵 日本語
ru🇷🇺 Русский
zh-hk🇭🇰 繁体中文
de🇩🇪 Deutsche
ar🇦🇪 العربية
es🇪🇸 Español
fr🇫🇷 Français
ko🇰🇷 한국어
tr🇹🇷 Türkçe
uk🇺🇦 Українська
uz🇺🇿 O'zbekcha
kk🇰🇿 Қазақша
pl🇵🇱 Polski
pt🇵🇹 Português
pa🇮🇳 ਪੰਜਾਬੀ

请求示例

shell
curl https://open.idatariver.com/mapi?key=value \
  -H "Authorization: Bearer $iDataRiver_Merchant_Secret" \
  -H "X-Idr-Locale: zh-cn" \
shell
curl https://open.idatariver.com/mapi \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $iDataRiver_Merchant_Secret" \
  -H "X-Idr-Locale: zh-cn" \
  -d '{
    "key": "value"
  }'

返回格式

为了更好的统一管理维护API,API均按照以下字段格式返回

字段名称描述
code(必填)返回码,整数类型,根据此字段判断返回业务状态,详细含义见下方表格
result(可选)完整的原始返回结果,其字段结构与解释应由供应商提供
msg(可选)请求失败原因

返回码解释

code字段的含义与解释

code描述
0请求成功
1000内部错误
1001参数错误
1002请求资源不存在
1003内部处理较忙,请稍后重试
1004权限不足

接口文档

使用场景

开放API分为公开API私密API,区别如下:

公开API一般是由用户触发调用的,比如下单,查看商家主页的商品信息等,适合放在独立站前端使用。

私密API只应该由商家自己使用,用于访问或管理商户核心数据,适合后端处理商户数据管理。

即便是公开API也不应该 直接 在前端暴露调用方式,以免泄漏商户密钥。

商户店铺基础信息 公开

返回商户基础信息。

GET /mapi/merchant/basicInfo

返回核心字段说明
字段类型描述
namestring商家名称
descstring商家简介
contactsobject商家联系方式
websiteobject独立站配置

商户主页信息 公开

返回商户项目列表,以及项目下的所有商品信息。

GET /mapi/merchant/info

返回核心字段说明

示例

字段类型描述
namestring商家名称
descstring商家简介
contactsobject商家联系方式
guaranteenumber商家保证金
projectsarray已上架的项目列表, 内部字段可参考项目详情接口
websiteobject独立站配置

获取订单详情 公开

根据订单id获取订单详细信息。

GET /mapi/order/info

字段类型是否必填描述
idstring订单id
返回核心字段说明

示例

字段类型描述
idstring订单id
skuNamestring商家名称
statusstring订单状态, 可取值为: NEW(新订单), DONE(已支付), EXPIRED(过期未支付), REFUND(已退款)
quantitynumber下单数量
projectNamestring项目名称
projectTypestring项目类型
merchantstring商家id
oriPricenumber订单原价
pricenumber订单实际支付价格(会扣除代金券优惠)
affCodestring订单推广id, 需开通代理商功能后使用
anonymousbool是否是匿名下单
consumerstring消费者在iDataRiver的用户id, 匿名下单时为空
contactInfostring消费者匿名支付时留下的查询信息, 任何人可用此字段查询订单
couponstring优惠券码
paymentFeeCoveredbool是否由商家承担此订单的支付通道费用
dtstring订单创建日期
createdAtstring订单创建时间(UTC+0时区)
createdTSstring订单创建时间戳
digitalItemsStrstring当订单支付完成后, 返回用户购买的数字内容
expiredIntervalnumber订单支付有效期
mContactsobject商家联系方式
mPaymentsarray订单支付方式(仅显示当前可用的支付通道)
mPayments[*].enabledbool当前支付通道是否开启
mPayments[*].isPlatformbool是否是平台内置支付
mPayments[*].namestring支付通道名称
mPayments[*].descstring支付通道描述信息
mPayments[*].methodstring支付通道id, 平台内置支付通道可取值为: credits(平台余额支付), crypto(加密货币), alipay(支付宝), wxpay(微信支付), onramp(Visa/Mastercard), onramp-google(Google Pay), onramp-apple(Apple Pay), onramp-revolut(Revolut), onramp-venmo(Venmo), gcash (GCash)
mPayments[*].ratioRangestring支付通道收取百分比费率
mPayments[*].fixedFeeRangestring支付通道收取固定费用(USD)
projectobject项目信息, 内部字段解释请参考项目详情接口
skuobject商品信息, 内部字段解释请参考商品详情接口

创建商品订单 公开

商品下单。

POST /mapi/order/add

字段类型是否必填描述
projectIdstring项目id, 你可以在获取全部项目接口里获取项目的id字段
skuIdstring商品id
orderInfoobject商品下单明细, 示例: {"quantity": 1,"coupon": "","contactInfo": "","affCode":""}, 其中quantity为下单数量, coupon为优惠券(没有请传空字符串), contactInfo为联系方式(必填), 用户可通过此值找回订单, 字符长度为5-100, affCode是代理商推广码(选填)。

针对BUYMEABTC项目, 不需要传skuId字段, orderInfo字段格式如下:

{"amount":5, "private": false, "name": "", "message": ""}

  • amount赞助金额, 单位usd
  • private是否公开赞助信息
  • name昵称,可为空
  • message留言消息,可为空
返回核心字段说明
字段类型描述
orderIdstring订单id

支付商品订单 公开

获取订单支付跳转链接。

如果订单价格为0,将直接购买成功并且不返回支付链接。

对于使用支付宝/微信支付场景, 应该添加以下提示语: 【如果无法打开支付页面, 请关闭VPN或切换网络。】

POST /mapi/order/pay

字段类型是否必填描述
idstring订单id
methodstring支付method, 来自于订单详情接口字段mPayments里的的method
redirectUrlstring支付成功后的重定向链接, 应该指向订单页面, 需要包含完整域名
callbackUrlstring订单支付成功或退款时触发的后端回调通知, 会将订单数据以post请求(json格式)发送给此链接, 请在5秒内处理完毕并返回200/201状态码, 否则会认为回调失败, 回调失败时会进行重试(最多5次)。此url必须使用域名https,不能通过ip访问

回调检查

callbackUrl回调的订单数据字段请参考订单详情api。

你可以通过回调订单的status字段判断当前订单是已支付还是已退款

在使用回调功能接受到订单通知时, 请主动请求一次订单信息对订单真实状态进行确认。

这样可以避免商家的callbackUrl被漏泄时, 来自第三方的恶意回调。

需要注意: 此处回调优先级高于商家设置的事件钩子

返回核心字段说明
字段类型描述
payUrlstring支付链接
payCurrencystring支付货币
amountnumber支付金额

查询商品订单列表 公开

根据创建订单时留下的联系方式或订单id,查询订单列表。

GET /mapi/order/search

字段类型是否必填描述
querystring下单留的联系方式或者订单号
返回核心字段说明
字段类型描述
itemsarray订单列表
items[*].idstring订单id
items[*].pricestring订单价格
items[*].quantitystring下单数量
items[*].skuNamestring商品名称
items[*].statusstring订单状态
items[*].datestring订单创建日期(UTC+0时区)

获取商家订单列表 私密

按时间倒序获取商家的订单列表。

GET /mapi/order/list

字段类型是否必填描述
statusstring订单状态, 默认为空表示不筛选状态, 可取值: DONE(已完成), NEW(新订单), EXPIRED(已过期), REFUND(已退款)
pagestring翻页参数, 默认为1, 每次翻页+1
返回核心字段说明
字段类型描述
hasMorebool是否需要翻页
itemsarray订单列表
items[*].idstring订单id
items[*].pricestring订单价格
items[*].quantitystring下单数量
items[*].skuNamestring商品名称
items[*].statusstring订单状态
items[*].payMethodstring已完成订单的付款方式
items[*].payTostring可取值为 platform由平台代收, merchant直接支付给商家自定义收款
items[*].platformFeenumber平台服务费
items[*].paymentFeenumber支付通道费
items[*].paymentFeeCoveredbool支付通道费是否由商家承担
items[*].profitnumber由平台代收时, 扣除所有手续费后的商家净收益
items[*].datestring订单创建日期(UTC+0时区)

获取全部项目 私密

返回商家创建的所有项目,包括未上线状态项目。

GET /mapi/project/list

返回核心字段说明

示例

字段类型描述
projectsarray项目列表
projects[*].idstring项目id
projects[*].typestring项目类型
projects[*].statusstring项目状态
projects[*].coverstring封面图, 返回图片链接或base64图片数据
projects[*].namestring项目名称
projects[*].nameI18nobject项目名称(多语言)
projects[*].descstring项目描述
projects[*].descI18nobject项目描述(多语言)
projects[*].i18nTypenumber0开启自动翻译、1不翻译
projects[*].ownerstring商户id
projects[*].seoPathstring项目链接路径
projects[*].slugstring项目短id
projects[*].createdTSstring项目创建时间戳
projects[*].createdAtstring项目创建时间
projects[*].updatedAtstring项目更新时间

获取指定项目 私密

获取项目包含的所有数据,包括商品列表,定价列表,优惠券列表。

并且数字商品会返回所有库存数据。

GET /mapi/project/detail

字段类型是否必填描述
idstring项目id
返回核心字段说明

示例

字段类型描述
idstring项目id
typestring项目类型
statusstring项目状态
coverstring封面图, 返回图片链接或base64图片数据
namestring项目名称
nameI18nobject项目名称(多语言)
descstring项目描述
descI18nobject项目描述(多语言)
i18nTypenumber0开启自动翻译、1不翻译
ownerstring商户id
seoPathstring项目链接路径
slugstring项目短id
createdTSstring项目创建时间戳
createdAtstring项目创建时间
updatedAtstring项目更新时间
affiliatesarray代理商列表
affiliates[*].idstringid
affiliates[*].userIdstring带货商家在平台的商家id
affiliates[*].codestring代理商推广码
affiliates[*].namestring代理商名称
affiliates[*].rationumber分成比例
affiliates[*].totalAmountnumber总带货金额
affiliates[*].settledAmountnumber已结算金额
affiliates[*].settledProfitnumber已结算利润
affiliates[*].lastSettleAtstring最近一次结算日期
affiliates[*].lastSettleTSstring最近一次结算时间戳
couponsarray优惠券列表
coupons[*].idstringid
coupons[*].statusstring优惠券状态
coupons[*].codestring优惠码
coupons[*].scopestring优惠范围, 可取值为: globle(所有商品生效), specific(指定商品生效)
coupons[*].policystring优惠策略, 可取值为: reduction(降价), fixed(一口价), discount(打折券)
coupons[*].fixednumber一口价优惠的金额, 仅policy=fixed有意义
coupons[*].discountnumber打折券的折扣比例, 仅policy=discount有意义
coupons[*].cappednumber降价金额, 仅policy=reduction有意义
coupons[*].usedNumnumber已使用次数
coupons[*].scopeItemsarrayscope=specific时, 指定生效的商品id列表
pricingsarray定价计划列表
pricings[*].idstringid
pricings[*].statusstring优惠券状态
pricings[*].scopestring优惠范围, 可取值为: globle(所有商品生效), specific(指定商品生效)
pricings[*].policystring优惠策略, 可取值为: fixed(固定价), stage_quantity(按购买数量阶梯优惠), stage_rpd(API业务使用, 按接口每日调用次数阶梯优惠), dynamic(API业务使用, 每次调用都动态计价)
pricings[*].pricenumberpolicy=fixed时的定价金额
pricings[*].stagesarray阶梯定价规则
pricings[*].dynamicCappednumberpolicy=dynamic时允许的最大金额, 默认不超过0.2usd
pricings[*].scopeItemsarrayscope=scopeItems时, 指定生效的商品id列表
skusarray商品/SKU列表
skus[*].idstring商品id
skus[*].statusstring商品上架状态
skus[*].prioritynumber商品展示优先级, 值越小优先级越高
skus[*].soldnumber销量
skus[*].pricingScopestring可取值globalspecific, 表示价格是全局定价还是指定定价
skus[*].docLinkstring商品外部描述文档链接
skus[*].stocknumber库存
skus[*].namestring商品名称
skus[*].nameI18nobject商品名称(多语言)
skus[*].descstring商品描述
skus[*].descI18nobject商品描述(多语言)
skus[*].hiddenStockbool是否隐藏库存
skus[*].itemTypestringtype=DIGITAL时, 可取值为reuse(重复销售), consumable(售后删档)
skus[*].itemsarraytype=DIGITAL时, 所有数据项
skus[*].itemsNumstringtype=DIGITAL时, 数据项数量

新建项目 私密

创建一个新项目。

POST /mapi/project/add

字段类型是否必填描述
namestring项目名称
typestring项目类型, 目前支持数字商品:DIGITAL
返回核心字段说明
字段类型描述
idstring项目id

修改项目信息 私密

修改项目基础信息。

POST /mapi/project/update

字段类型是否必填描述
idstring项目id, 可从项目列表接口获取
namestring项目名称, 字数不超过50
statusstring项目状态, 可选值: ONLINE, OFFLINE
i18nTypestring自动翻译状态, 可选值: 开启-0, 关闭-1, 默认为1
descstring项目描述, 字数不超过500
coverstring图片base64编码, 不得超过2Mb, 仅支持PNGJPGJPEG格式, 样例:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAkACQAAD...

删除项目(不可撤销) 私密

删除项目。

POST /mapi/project/remove

字段类型是否必填描述
projectstring项目id

获取单个商品/SKU详情 私密

获取项目下指定商品的详细信息,数字商品将返回数据项。

GET /mapi/project/sku/detail

字段类型是否必填描述
idstring商品/SKU id
返回核心字段说明

示例

字段类型描述
idstring商品id
statusstring项目状态
namestring项目名称
nameI18nobject项目名称(多语言)
descstring项目描述
descI18nobject项目描述(多语言)
ownerstring商户id
projectstring项目id
prioritynumber商品展示优先级, 值越小优先级越高
soldnumber销量
docLinkstring商品外部描述文档链接
stocknumber库存
hiddenStockbool是否隐藏库存
itemTypestringtype=DIGITAL时, 可取值为reuse(重复销售), consumable(售后删档)
itemsarraytype=DIGITAL时, 所有数据项
itemsNumstringtype=DIGITAL时, 数据项数量
orderobject下单相关字段
createdTSstring项目创建时间戳
createdAtstring项目创建时间
updatedAtstring项目更新时间

新增项目商品/SKU 私密

在指定项目下增加一个商品。

POST /mapi/project/sku/add

字段类型是否必填描述
projectIdstring项目id
返回核心字段说明
字段类型描述
idstring商品id

更新商品/SKU 私密

更新商品信息。

修改数字商品库存数据时,会使用新的数据直接覆盖原来的库存数据项。

因此如果要更改数字商品的库存数据项,请先将商品下架,以防止导致与正在购买的订单产生冲突。

POST /mapi/project/sku/update

字段类型是否必填描述
idstring商品/SKU id
namestring商品名称, 字数不大于50
statusstring商品状态, 可选值: ONLINE, OFFLINE
prioritynumber商品优先级, 取值范围为1-100
itemTypestring数据项类型, 可取值: 重复出售-reuse、售后删档-consumable
itemsarray数字商品的数据项, 每一个元素均对应一个卡密, 例如:["123", "456"], 必须同时传递itemType参数。 🔔 此值会直接覆盖原来的卡密, 请谨慎调用
docLinkstring外部文档链接
hiddenStockbool是否隐藏库存, 取值 truefalse
descstring项目描述, 字数不大于500

更新商品时,至少保证有一个有效字段需要更新,否则会返回失败。

删除商品/SKU 私密

永久删除商品,无法撤销。

POST /mapi/project/sku/remove

字段类型是否必填描述
idstring商品/SKU id

新增定价计划 私密

添加一个定价计划。

POST /mapi/project/pricing/add

字段类型是否必填描述
projectIdstring项目id
返回核心字段说明
字段类型描述
idstring定价计划id

更新定价计划 私密

修改定价计划。

POST /mapi/project/pricing/update

字段类型是否必填描述
idstring定价计划id
statusstring商品状态, 可选值: ONLINE, OFFLINE
scopestring商品状态, 可选值: 全局-global, 指定范围-specific
scopeItemsarrayscope=specific时, 此数组元素为需要生效的商品id, 且不能为空
policystring定价策略, 可选值: 固定价-fixed, 批发价-stage_quantity
pricestring固定价格, 当policy=fixed时, 需要传此参数
stagesobject批发价设置, 当policy=stage_quantity时, 需要传此参数, 示例: [{ "threshold": 0, 'price': 10 },{ "threshold": 10, 'price': 8 }]表示购买数量小于10个的单价为10usd, 大于等于10个的单价为8usd, 最多设置5个阶梯

删除定价计划 私密

永久删除定价计划,无法撤销。

请保证商品至少有一个可用的定价计划。

POST /mapi/project/pricing/remove

字段类型是否必填描述
idstring定价计划id

新增优惠券 私密

添加一个优惠券。

POST /mapi/project/coupon/add

字段类型是否必填描述
projectIdstring项目id
返回核心字段说明
字段类型描述
idstring优惠券id

更新优惠券 私密

修改优惠券规则。

POST /mapi/project/coupon/update

字段类型是否必填描述
idstring优惠券id
statusstring商品状态, 可选值: ONLINE, OFFLINE
scopestring商品状态, 可选值: 全局-global, 指定范围-specific
scopeItemsarrayscope=specific时, 此数组元素为需要生效的商品id, 且不能为空
policystring定价策略, 可选值: 减价券-reduction, 打折券-discount, 一口价券-fixed
reductionnumber减价券的金额, 当policy=reduction时, 需要传此参数
fixednumber一口价券金额, 当policy=fixed时, 需要传此参数
discountnumber打折券比例, 取值范围1-100, 当policy=discount时, 需要传此参数
cappednumber打折券优惠上限, 当policy=discount时, 可以通过传此参数控制最多优惠的金额数量

删除优惠券 私密

永久删除优惠券,无法撤销。

POST /mapi/project/coupon/remove

字段类型是否必填描述
idstring优惠券id

telegram机器人群发消息 私密

此功能需要商家先开通了自定义telegram机器人, 商家也可以直接在商城应用Telegram群发助手使用。

添加一条telegram广播消息,使用商家自定义的telegram机器人发送。

🔔 本接口不限制群发消息次数,但是同一时间只能有一条正在群发的消息,必须等待上一条群发处理完后才能继续群发。

强烈建议合理使用此功能,每次群发会自动剔除无效用户。

POST /mapi/rainbow/broadcast/add

字段类型是否必填描述
contentstring群发文本内容, 长度不能超过4000
testbool是否为测试模式, 传true表示只给商家绑定的账号发送(常用于正式群发前的效果测试), 传false表示群发给所有可接收消息的用户

获取telegram机器人历史群发记录 私密

获取近期telemgram机器人群发的历史记录,包括返回群发用户总数拒收用户发送成功数量执行总时长

GET /mapi/rainbow/broadcast/list

返回核心字段说明

示例

字段类型描述
itemsarray群发记录列表
items[*].idstring全局唯一id
items[*].eidstring业务唯一id(用于除重)
items[*].statusstring执行状态
items[*].paramsobject群发参数
items[*].createdTSstring创建时间戳
items[*].createdAtstring创建时间

查询License授权码 公开

查询License详情。

GET /mapi/license/query

字段类型是否必填描述
codestring授权码, 支持同时传入多个(使用逗号分隔), 一次最多传100个
返回核心字段说明
字段类型描述
itemsarray成功激活的授权码列表
items[*].licensestring授权码
items[*].statusstring授权码状态
items[*].statesstring业务参数
items[*].orderstring订单id
items[*].merchantstring商家id
items[*].skuNamestring商品名称
items[*].createdTSstring创建时间戳
items[*].createdAtstring创建时间
items[*].activateTSstring创建时间戳
items[*].activateAtstring创建时间

激活License授权码 私密

License商品售出的授权码标记为已使用状态, 此过程不可逆。

授权码只能激活一次, 授权码在被使用后商家应该调用此接口进行激活处理, 防止被重复使用。

POST /mapi/license/activate

字段类型是否必填描述
codestring授权码, 支持同时传入多个(使用逗号分隔), 一次最多传100个

返回结果里会包含成功激活的授权码信息。

返回核心字段说明
字段类型描述
itemsarray成功激活的授权码列表
items[*].licensestring授权码
items[*].statusstring授权码状态
items[*].statesstring业务参数
items[*].orderstring订单id
items[*].merchantstring商家id
items[*].skuNamestring商品名称
items[*].createdTSstring创建时间戳
items[*].createdAtstring创建时间
items[*].activateTSstring创建时间戳
items[*].activateAtstring创建时间

Make things simple and timeproof.