平台 API 允许您读取和写入与部署在 Pi 应用平台上的应用及其用户相关的 Pi 服务器的数据。
概述
基本路径:
最新版本的平台 API 可在以下网址获取api.minepi.com/v2:
关于 API 版本控制的说明:
平台 API 目前版本为 v2。我们将尽可能避免对 API 版本进行任何重大更改,并将重大更改作为新的主要版本发布。但是,如有必要(例如安全或隐私修复),我们可能会在不另行通知的情况下对现有版本进行重大更改。
授权
平台 API 支持两种不同的授权机制。
访问令牌授权
某些 API 调用需要您提供用户的访问令牌才能访问资源。这些调用通常与用户数据相关(例如/me:)。可以使用以下 Authorization 标头访问这些端点:
Authorization: Bearer <user access token>
这些端点可以从后端/服务器应用程序访问,也可以从前端/客户端应用程序访问。
服务器 API 密钥授权
由于各种原因,您的后端/服务器应用程序必须发出一些 API 调用。可以使用以下 Authorization 标头访问这些端点:
Authorization: Key <your Server API Key>
警告:服务器 API 密钥仅供服务器使用。
您的服务器 API 密钥必须保存在您的服务器上,不得发送给客户端(请勿在客户端 JavaScript 代码中使用它)。将来,您的服务器 API 密钥可能会启用应用程序本身的敏感操作,而这些操作不应被用户允许执行。允许用户访问您的服务器 API 密钥会造成严重的安全漏洞。
API 参考
验证
访问用户的资源:
获取用户信息,包括用户已同意与您的应用共享的用户信息。
GET /me
授权方式:访问令牌
响应类型:UserDTO
通过将用户的访问令牌发送到后端并使用此 API 端点来验证使用前端 SDK 获取的数据(恶意用户可能会篡改请求并向您发送错误数据),以验证令牌的有效性和用户的身份。
访问令牌是很长的随机字符串,如果令牌被篡改,则请求将失败(401 HTTP 错误代码)(被篡改的令牌不属于任何真实用户)。
付款
有两种不同的付款方式。
U2A(用户到应用)
A2U(应用到用户)
创建付款(U2A):
如果付款类型为 U2A,请使用createPayment客户端 JavaScript SDK 的方法创建付款。更多详情请参阅“付款”部分。
创建付款(A2U):
POST /payments
授权方式:服务器 API 密钥
响应类型:PaymentDTO
请求正文示例:
{
"payment": {
"amount": 1,
"memo": "From app to user test",
"metadata": {"test": "test metadata"},
"uid": "a1111111-aaaa-bbbb-2222-ccccccc3333d"
}
}收到付款:
获取付款信息。
GET /payments/{payment_id}授权方式:服务器 API 密钥
响应类型:PaymentDTO
批准付款:
服务器端批准:将付款标记为已批准,使用户能够将交易提交到区块链。
POST /payments/{payment_id}/approve授权方式:服务器 API 密钥
响应类型:PaymentDTO
完成付款:
服务器端完成:通过向 Pi 服务器证明您的应用程序已获得付款的 txid,将付款标记为已完成,从而使用户能够关闭付款流程。
POST /payments/{payment_id}/complete授权方式:服务器 API 密钥
响应类型:PaymentDTO
请求正文示例:
{
"txid": "7a7ed20d3d72c365b9019baf8dc4c4e3cce4c08114d866e47ae157e3a796e9e7"
}取消付款:
将付款标记为已取消。
POST /payments/{payment_id}/cancel授权方式:服务器 API 密钥
响应类型:PaymentDTO
获取未完成的服务器付款:
返回处于以下两种状态之一的服务器付款(即 A2U 付款)列表:
已创建付款,但尚未进行区块链交易;
区块链交易已提交,但开发者尚未完成支付。
GET /payments/incomplete_server_payments
授权方式:服务器 API 密钥
响应类型:{ "incomplete_server_payments": Array< PaymentDTO > }
广告
验证激励广告状态
adId通过客户端 Pi SDK 方法返回的激励广告状态进行验证displayAd('rewarded')
GET /ads_network/status/:adId
授权方式:服务器 API 密钥
响应类型:RewardedAdStatusDTO
资源类型
UserDTO
{
uid: string, // An app-specific user identifier
credentials: {
scopes: Array<Scope>, // a list of granted scopes
valid_until: {
timestamp: number,
iso8601: string
}
},
username?: string, // The user's Pi username. Requires the `username` scope.
}PaymentDTO
{
// Payment data:
identifier: string, // payment identifier
user_uid: string, // user's app-specific ID
amount: number, // payment amount
memo: string, // a string provided by the developer, shown to the user
metadata: Object, // an object provided by the developer for their own usage
from_address: string, // sender address of the blockchain transaction
to_address: string, // recipient address of the blockchain transaction
direction: Direction, // direction of the payment
created_at: string, // the payment's creation timestamp
network: AppNetwork, // a network of the payment
// Status flags representing the current state of this payment
status: {
developer_approved: boolean, // Server-Side Approval
transaction_verified: boolean, // blockchain transaction verified
developer_completed: boolean, // Server-Side Completion
cancelled: boolean, // cancelled by the developer or by Pi Network
user_cancelled: boolean, // cancelled by the user
},
// Blockchain transaction data:
transaction: null | { // This is null if no transaction has been made yet
txid: string, // id of the blockchain transaction
verified: boolean, // true if the transaction matches the payment, false otherwise
_link: string, // a link to the operation on the Blockchain API
},
};RewardedAdStatusDTO
{
"identifier": string; // the adId token returned from the Pi SDK displayAd("rewarded") method
"mediator_ack_status": "granted" | "revoked" | "failed" | null;
"mediator_granted_at": string | null; // ISO 8601 date string
"mediator_revoked_at": string | null; // ISO 8601 date string
Pi 打赏
微信打赏