🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx skills add https://skills.sh/binance/binance-skills-hub/onchain-pay-open-api

💡 提示:需要 Node.js 和 NPM

Binance Onchain-Pay Open API 技能 (Binance Onchain-Pay Open API Skill)

调用币安 Onchain-Pay Open API 端点,并使用 RSA SHA256 自动进行请求签名。

用例与场景 (Use Cases & Scenarios)

此技能专为以下场景设计:

1. 💳 法币购买加密货币并发送 (Fiat-to-Crypto Purchase & Send)

何时使用 (When to use):用户想用法币购买加密货币并直接发送到外部链上钱包地址

  • 使用信用卡以 USD/EUR/TWD 购买 USDT → 发送到 BSC 上的 MetaMask 地址
  • 使用 Google Pay 购买 BTC → 转账到硬件钱包
  • 通过 P2P 购买 USDC → 发送到 DeFi 协议合约地址

关键 API (Key APIs)trading-pairspayment-method-listestimated-quotepre-order

2. 🔄 直接加密货币转账(发送为主)(Direct Crypto Transfer – Send Primary)

何时使用 (When to use):用户在币安账户中有加密货币,想要发送到外部地址

  • 将现有的 USDT 从币安现货发送到朋友的钱包地址
  • 将 ETH 转账到 Uniswap 合约进行交易
  • 将加密货币从币安转移到自托管钱包(Trust Wallet、Ledger 等)

关键 API (Key APIs):带有 SEND_PRIMARY 自定义配置的 pre-order

3. 🔗 跨链桥接操作 (Cross-Chain Bridge Operations)

何时使用 (When to use):用户需要在一条链上购买加密货币并转移到另一条网络

  • 在以太坊上购买 USDC → 桥接到 Polygon 以降低费用
  • 在 BSC 上购买代币 → 转移到 Base 网络
  • 在 Solana 上用法币购买 → 发送到 Arbitrum 进行 DeFi 操作

关键 API (Key APIs)crypto-network → 带网络选择的 pre-order

4. 🏪 商家支付集成 (Merchant Payment Integration)

何时使用 (When to use):为电子商务或服务集成加密货币支付网关

  • 接受法币支付并自动转换为加密货币
  • 启用“用加密货币支付”结账流程
  • 使用加密货币处理订阅付款

关键 API (Key APIs):带有 externalOrderId 跟踪的 pre-order

5. 🤖 智能合约交互(Onchain-Pay Easy)(Smart Contract Interaction – Onchain-Pay Easy)

何时使用 (When to use):在一笔交易中购买加密货币并执行智能合约

  • 购买 USDT 并存入借贷协议
  • 购买代币并在 DeFi 池中质押
  • 法币入口直接连接到 GameFi 或 NFT 市场

关键 API (Key APIs):带有 ON_CHAIN_PROXY_MODE 自定义配置的 pre-order

6. 📊 查询与监控 (Query & Monitoring)

何时使用 (When to use):检查订单状态、可用网络或支付方式

  • 监控订单处理状态(待处理、已完成、失败)
  • 列出支持的法币和加密货币
  • 检查特定国家/金额的可用支付方式
  • 验证网络费用和限额

关键 API (Key APIs)ordercrypto-networktrading-pairspayment-method-list


快速参考 (Quick Reference)

端点 (Endpoint) API 路径 (API Path) 必需参数 (Required Params) 可选参数 (Optional Params)
支付方式列表 v1 (Payment Method List v1) papi/v1/ramp/connect/buy/payment-method-list fiatCurrency, cryptoCurrency, totalAmount, amountType network, contractAddress
支付方式列表 v2 (Payment Method List v2) papi/v2/ramp/connect/buy/payment-method-list (none) lang
交易对 (Trading Pairs) papi/v1/ramp/connect/buy/trading-pairs (none) (none)
预估报价 (Estimated Quote) papi/v1/ramp/connect/buy/estimated-quote fiatCurrency, requestedAmount, payMethodCode, amountType cryptoCurrency, contractAddress, address, network
预下单 (Pre-order) papi/v1/ramp/connect/gray/buy/pre-order externalOrderId, merchantCode, merchantName, ts fiatCurrency, fiatAmount, cryptoCurrency, requestedAmount, amountType, address, network, payMethodCode, payMethodSubCode, redirectUrl, failRedirectUrl, redirectDeepLink, failRedirectDeepLink, customization, destContractAddress, destContractABI, destContractParams, affiliateCode, gtrTemplateCode, contractAddress
获取订单 (Get Order) papi/v1/ramp/connect/order externalOrderId (none)
加密货币网络 (Crypto Network) papi/v1/ramp/connect/crypto-network (none) (none)
P2P 交易对 (P2P Trading Pairs) papi/v1/ramp/connect/buy/p2p/trading-pairs (none) fiatCurrency

如何执行请求 (How to Execute a Request)

步骤 1:收集凭证 (Step 1: Gather credentials)

除非用户另有指定,否则使用默认账户(生产环境)。您需要:

  • BASE_URL:API 基础 URL
  • CLIENT_ID:客户端标识符
  • API_KEY:签名访问令牌
  • PEM_PATH:RSA 私钥 PEM 文件的绝对路径

使用 .local.md 中标记为 (default) 的账户。

步骤 2:构建 JSON 请求体 (Step 2: Build the JSON body)

根据用户指定的参数构建紧凑的 JSON 请求体。移除用户未提供的任何参数。

重要:地址和网络验证 (IMPORTANT: Address and Network Validation)

  • address(目标钱包地址)和 network(区块链网络)是所有预下单请求的必需项
  • 如果用户在 .local.md 中配置了 Default AddressDefault Network,则自动使用它们
  • 如果未配置或用户未提供,在继续之前询问用户提供这两个值

步骤 3:使用捆绑脚本签名并调用 (Step 3: Sign and call using the bundled script)

bash <技能路径 (skill_path)>/scripts/sign_and_call.sh \
  "<BASE_URL>" \
  "<API_PATH>" \
  "<CLIENT_ID>" \
  "<API_KEY>" \
  "<PEM_PATH>" \
  '<JSON_BODY>'

步骤 4:返回结果 (Step 4: Return results)

以可读格式向用户显示 JSON 响应。


认证 (Authentication)

有关完整签名详情,请参阅 references/authentication.md

摘要:

  1. 负载 = JSON_BODY + TIMESTAMP(毫秒)
  2. 使用 PEM 私钥通过 RSA SHA256 对负载进行签名
  3. 对签名进行 Base64 编码(单行)
  4. 作为 POST 请求发送,带有头部:X-Tesla-ClientIdX-Tesla-SignAccessTokenX-Tesla-SignatureX-Tesla-TimestampContent-Type: application/json

参数参考 (Parameters Reference)

支付方式列表 v1 (buy/payment-method-list)

参数 (Parameter) 类型 (Type) 必需 (Required) 描述 (Description)
fiatCurrency string 是 (Yes) 法币代码 (Fiat currency code),例如 USDEURBRLUGX
cryptoCurrency string 是 (Yes) 加密货币代码 (Crypto currency code),例如 BTCUSDTUSDCSEI
totalAmount number 是 (Yes) 金额值 (Amount value)
amountType number 是 (Yes) 1 = 法币金额 (fiat amount), 2 = 加密货币金额 (crypto amount)
network string 否 (No) 区块链网络 (Blockchain network),例如 BSCETHSOLBASESEI
contractAddress string 否 (No) 代币合约地址 (Token contract address)(非原生代币需要)

支付方式列表 v2 (v2/buy/payment-method-list)

无需指定法币/加密货币参数即可获取所有可用支付方式。v1 的精简版本。

参数 (Parameter) 类型 (Type) 必需 (Required) 描述 (Description)
lang string 否 (No) 用于本地化支付方式名称的语言代码 (Language code for localized payment method names),例如 encnes

与 v1 的区别 (Differences from v1)

  • 更简单 (Simpler):无需指定 fiatCurrency、cryptoCurrency 或金额
  • 更全面 (Comprehensive):返回商家的所有可用支付方式
  • 使用场景 (Use case):适用于在用户输入前显示所有选项

响应格式 (Response Format):与 v1 相同,返回带有其限额和属性的支付方式列表。

预估报价 (buy/estimated-quote)

参数 (Parameter) 类型 (Type) 必需 (Required) 描述 (Description)
fiatCurrency string 是 (Yes) 法币代码 (Fiat currency code)
cryptoCurrency string 否 (No) 加密货币代码 (Crypto currency code)(如果提供了 contractAddress 则可选)
requestedAmount number 是 (Yes) 金额值 (Amount value)
payMethodCode string 是 (Yes) 支付方式 (Payment method),例如 BUY_CARDBUY_GOOGLE_PAYBUY_P2PBUY_WALLET
amountType number 是 (Yes) 1 = 法币金额 (fiat amount), 2 = 加密货币金额 (crypto amount)
network string 建议提供 (Recommended)* 区块链网络 (Blockchain network)(可使用 .local.md 中的默认值)
contractAddress string 否 (No) 代币合约地址 (Token contract address)
address string 建议提供 (Recommended)* 用于接收加密货币的目标钱包地址 (Destination wallet address for receiving crypto)

* 建议提供这些参数。如果用户未指定,请检查 .local.md 中的默认值。如果不存在默认值,请在继续之前询问用户。

预下单 (buy/pre-order)

创建购买预下单并返回支付重定向链接。

参数 (Parameter) 类型 (Type) 必需 (Required) 描述 (Description)
externalOrderId string 是 (Yes) 合作伙伴的唯一订单 ID(必须唯一)(Partner’s unique order ID – must be unique)
merchantCode string 是 (Yes) 商户代码 (Merchant code),例如 connect-gray
merchantName string 是 (Yes) 商户显示名称 (Merchant display name),例如 GrayTest
ts number 是 (Yes) 当前时间戳(毫秒)(Current timestamp in milliseconds)
fiatCurrency string 否 (No)* 法币代码 (Fiat currency code),例如 TWDUSDEUR
fiatAmount number 否 (No)* 要花费的法币金额 (Fiat amount to spend)
cryptoCurrency string 否 (No)* 要购买的加密货币 (Crypto currency to buy),例如 USDTBTCETH
requestedAmount number 否 (No)* 金额值(基于 amountType 决定是法币还是加密货币)(Amount value – fiat or crypto based on amountType)
amountType number 否 (No)* 1 = 法币金额 (fiat amount), 2 = 加密货币金额 (crypto amount)
address string 否 (No) 用于接收加密货币的目标钱包地址 (Destination wallet address for receiving crypto)
network string 否 (No) 区块链网络 (Blockchain network),例如 BSCETHSOL
payMethodCode string 否 (No) 支付方式代码 (Payment method code),例如 BUY_CARDBUY_P2PBUY_GOOGLE_PAYBUY_APPLE_PAYBUY_PAYPALBUY_WALLETBUY_REVOLUT
payMethodSubCode string 否 (No) 支付方式子代码 (Payment method sub-code),例如 cardGOOGLE_PAYWECHAT
redirectUrl string 否 (No) 成功重定向 URL (Success redirect URL)
failRedirectUrl string 否 (No) 失败重定向 URL (Failure redirect URL)
redirectDeepLink string 否 (No) 成功时的深度链接(移动应用)(Deep link for success – mobile apps)
failRedirectDeepLink string 否 (No) 失败时的深度链接(移动应用)(Deep link for failure – mobile apps)
customization object 否 (No) 自定义配置对象 (Custom configuration object)(见下文自定义部分)
destContractAddress string 否 (No) 目标合约地址(用于 Onchain-Pay Easy 模式)(Destination contract address – for Onchain-Pay Easy mode)
destContractABI string 否 (No) 合约 ABI 名称(用于 Onchain-Pay Easy 模式)(Contract ABI name – for Onchain-Pay Easy mode)
destContractParams object 否 (No) 合约参数(用于 Onchain-Pay Easy 模式)(Contract parameters – for Onchain-Pay Easy mode)
affiliateCode string 否 (No) 用于佣金跟踪的联盟代码 (Affiliate code for commission tracking)
gtrTemplateCode string 否 (No) GTR 模板代码 (GTR template code),例如 OTHERS
contractAddress string 否 (No) 代币合约地址(用于非原生代币)(Token contract address – for non-native tokens)

* 应提供 fiatAmount 或(requestedAmount + amountType)。如果未提供 fiatCurrency,系统将自动选择可用的法币。

响应示例 (Response Example)

{
  "code": "000000",
  "message": "success",
  "data": {
    "link": "https://app.binance.com/uni-qr/ccnt?...",
    "linkExpireTime": 1772852565045
  },
  "success": true
}

获取订单 (order)

参数 (Parameter) 类型 (Type) 必需 (Required) 描述 (Description)
externalOrderId string 是 (Yes) 要查询的外部订单 ID (The external order ID to query)

自定义选项 (Customization Options)

预下单 API 中的 customization 字段接受各种标志来定制购买流程行为。每个商户必须在 db.merchant_info 表中配置相应的权限。

可用自定义标志 (Available Customization Flags)

标志 (Flag) 代码 (Code) 类型 (Type) 可用性 (Availability) 描述 (Description) 用例 (Use Case)
LOCK_ORDER_ATTRIBUTES 1 array Open API ✓ 锁定特定订单属性,使用户无法修改。值:1=法币、2=加密货币、3=金额、4=支付方式、5=网络、6=地址、7=法币金额、8=加密货币金额 固定参数订单 (Fixed-parameter orders)
SKIP_CASHIER 2 boolean Open API ✓ 跳过收银台页面,直接进入支付。减少结账流程中的用户摩擦。 简化支付体验 (Streamlined payment experience)
AUTO_REDIRECTION 3 boolean Open API ✓ 订单完成后自动重定向到 redirectUrl,不显示成功页面。 无缝用户体验 (Seamless user experience)
HIDE_SEND 6 boolean Open API ✓ 在 UI 中隐藏“发送”选项卡。当只需要购买流程时有用。 仅购买集成 (Buy-only integration)
SEND_PRIMARY 7 boolean Open API ✓ 启用发送加密货币功能。如果用户的币安余额不足,则先自动触发购买流程。 发送加密货币到外部地址 (Send crypto to external address)
MERCHANT_DISPLAY_NAME 8 string Open API ✓ 覆盖 UI 中向用户显示的显示名称。 自定义品牌 (Custom branding)
NET_RECEIVE 9 boolean Open API ✓ 用户在扣除所有费用后收到净额。总成本更加透明。 更好显示最终收到金额的 UX (Better UX for showing final received amount)
P2P_EXPRESS 10 boolean Open API ✓ 启用 P2P 快速模式,以加快 P2P 订单匹配速度。 快速 P2P 交易 (Quick P2P transactions)
OPEN_NETWORK 11 boolean 仅 Web3 (Web3 only) 允许用户选择不同的网络。默认锁定为预选网络。注意:目前仅适用于 Web3 入口,不适用于 Open API。 多网络支持(仅 Web3)(Multi-network support – Web3 only)
ON_CHAIN_PROXY_MODE 12 boolean Open API ✓ 启用 Onchain-Pay Easy 模式。购买加密货币后,Onchain-Pay 将执行智能合约交互,而不是直接提取到用户钱包。需要 destContractAddressdestContractABIdestContractParams 法币到智能合约集成 (Fiat to Smart Contract integration)
SEND_PRIMARY_FLEXIBLE 13 boolean Open API ✓ 灵活的发送主要模式,具有更多选项。 高级发送加密货币场景 (Advanced send crypto scenarios)

自定义示例 (Customization Examples)

示例 1:基础银行卡支付 (Basic Card Payment)

{
  "customization": {}
}

示例 2:Onchain-Pay Easy(链上代理)(Onchain-Pay Easy – On-Chain Proxy)

{
  "customization": {
    "ON_CHAIN_PROXY_MODE": true,
    "NET_RECEIVE": true,
    "SEND_PRIMARY": true
  },
  "destContractAddress": "0x128...974",
  "destContractABI": "depositFor",
  "destContractParams": {
    "accountType": 2
  }
}

示例 3:发送加密货币 (Send Crypto)

{
  "customization": {
    "SEND_PRIMARY_FLEXIBLE": true,
    "SEND_PRIMARY": true
  }
}

示例 4:带自动重定向的 P2P (P2P with Auto Redirection)

{
  "customization": {
    "AUTO_REDIRECTION": true,
    "P2P_EXPRESS": true
  }
}

示例 5:锁定订单属性 (Lock Order Attributes)

{
  "customization": {
    "LOCK_ORDER_ATTRIBUTES": [2, 3, 6, 7, 8],
    "MERCHANT_DISPLAY_NAME": "My Custom Brand"
  }
}

锁定属性代码 (Lock attribute codes):

  • 2 = 加密货币 (Crypto currency)
  • 3 = 金额 (Amount)
  • 6 = 地址 (Address)
  • 7 = 法币金额 (Fiat amount)
  • 8 = 加密货币金额 (Crypto amount)

示例 6:净额接收模式 (Net Receive Mode)

{
  "customization": {
    "NET_RECEIVE": true,
    "SEND_PRIMARY": true
  }
}

示例 7:隐藏发送选项卡 (Hide Send Tab)

{
  "customization": {
    "HIDE_SEND": true
  }
}

示例 8:跳过收银台(直接支付)(Skip Cashier – Direct Payment)

{
  "customization": {
    "SKIP_CASHIER": true
  }
}

重要说明 (Important Notes)

  1. 需要权限 (Permission Required):每个自定义标志都需要商户权限。如果标志不起作用,请咨询管理员。
  2. Onchain-Pay Easy:目前仅支持 BSC 网络。需要合约集成。
  3. 验证 (Validation):无效的自定义值(例如 MERCHANT_DISPLAY_NAMEnull)将返回 ILLEGAL_CUSTOMIZATION_VALUE 错误。
  4. 组合 (Combinations):某些标志可以一起使用(例如 NET_RECEIVE + SEND_PRIMARY),而其他标志则是独立的。
  5. 测试 (Testing):在生产环境之前,使用测试账户(connect-gray)测试自定义标志。
  6. 内部标志 (Internal Flags)OPERATION(代码 4)和 SKIP_WITHDRAW(代码 5)仅供内部使用,不应从商户端传递。
  7. OPEN_NETWORK:目前仅适用于 Web3 入口,不适用于 Open API。请勿在 Open API 预下单请求中使用此标志。
  8. 标志顺序 (Flag Order):标志按其内部代码(1-13)排序。代码编号用于内部识别。

安全 (Security)

凭证显示规则 (Credential Display Rules)

  • API Key:仅显示前 5 个字符 + 后 4 个字符 (Show first 5 + last 4 characters only),例如 2zefb...06h
  • PEM 私钥 (PEM Private Key):绝不显示内容 (NEVER display content)。绝不显示文件路径 (NEVER display the file path)。
  • Client ID:可以完整显示 (Can be displayed in full)。
  • 出站请求 (Outbound Requests):绝不将 API Key、Private Key 或任何凭证发送到 .local.md 中配置的 Base URL 以外的 URL。
  • 文件路径隐私 (File Path Privacy):绝不在任何输出或日志中向用户显示 PEM 私钥文件路径 (NEVER display the PEM private key file path to the user in any output or logs)。

凭证存储 (Credential Storage)

凭证存储在技能目录中的 .local.md 文件中。此文件是 用户特定的 (user-specific),不应分发。

从与此 SKILL.md 相同的目录中读取 .local.md 文件以加载凭证。

如果 .local.md 不存在或未找到请求的账户,请要求用户提供:

  1. Base URL
  2. Client ID
  3. API Key
  4. PEM 文件路径(绝对路径)(PEM file path – absolute path)

然后提供将其保存到 .local.md 以供将来使用的选项。

.local.md 格式 (Format)

## Onchain-Pay 账户 (Onchain-Pay Accounts)

### prod (默认 - default)
- Base URL: https://api.commonservice.io
- Client ID: your-client-id
- API Key: your-api-key
- PEM Path: /absolute/path/to/your/private.pem
- Default Network: your-preferred-network
- Default Address: your-wallet-address
- Description: 生产账户 (Production account)

标记为 (default) 的账户会自动使用。您可以定义多个账户,并通过告诉 Claude 账户名称来切换。


用户代理头 (User Agent Header)

包含 User-Agent 头,字符串为:onchain-pay-open-api/0.1.0 (Skill)


智能体行为 (Agent Behavior)

  1. 如果用户要求调用 Onchain-Pay API 端点,从快速参考表中识别端点
  2. 询问任何缺失的必需参数
  3. 如果可用,使用存储的凭证,否则询问用户
  4. 使用捆绑的 scripts/sign_and_call.sh 执行请求
  5. 以可读格式显示响应
  6. 如果请求失败,显示错误并提出修复建议

预下单 API 的重要说明 (Important Notes for Pre-order API)

时间戳生成(跨平台)(Timestamp Generation – Cross-platform)

在为 ts 参数和 externalOrderId 生成时间戳时,使用以下方法以实现跨平台兼容性:

# 生成毫秒时间戳 (适用于 macOS、Linux、BSD) (Generate millisecond timestamp - works on macOS, Linux, BSD)
TIMESTAMP=$(($(date +%s) * 1000))

# 生成唯一订单 ID (Generate unique order ID)
ORDER_ID="order$(date +%s)"

不要使用 (DO NOT USE) date +%s%3Ndate +%s000,因为它们不可移植:

  • date +%s%3N 在 macOS 上不起作用(输出字面 ‘N’)
  • date +%s000 只是附加 ‘000’,没有实际的毫秒精度

订单 ID 格式 (Order ID Format)

externalOrderId 必须是有效字符串,不含特殊字符。推荐格式:

  • order1773744500(简单数字后缀)
  • order_1773744500(带下划线分隔符)
  • txn-abc123(带字母数字的自定义前缀)

避免 (Avoid)order_${TIMESTAMP},其中 TIMESTAMP 包含 shell 变量语法错误

预下单请求示例 (Example Pre-order Request)

# 正确创建预下单的方式 (Correct way to create a pre-order)
TIMESTAMP=$(($(date +%s) * 1000))
ORDER_ID="order$(date +%s)"

bash /path/to/scripts/sign_and_call.sh \
  "https://api.commonservice.io" \
  "papi/v1/ramp/connect/gray/buy/pre-order" \
  "connect-gray" \
  "your-api-key" \
  "/path/to/private.pem" \
  "{\"externalOrderId\":\"$ORDER_ID\",\"merchantCode\":\"connect-gray\",\"merchantName\":\"YourMerchant\",\"ts\":$TIMESTAMP,\"fiatCurrency\":\"USD\",\"requestedAmount\":100,\"cryptoCurrency\":\"BNB\",\"amountType\":1,\"address\":\"0x...\",\"network\":\"BSC\",\"payMethodCode\":\"BUY_CARD\"}"

📄 原始文档

完整文档(英文):

https://skills.sh/binance/binance-skills-hub/onchain-pay-open-api

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。