专注Pi币Web3生态,
聚焦主网迁移与价值共识!

Pi 应用支付怎么接入?前端 SDK、后端验证与未完成支付处理

提前布局加密财富_全球头部数字货币交易所推荐注册:
Pi 应用从 SDK 初始化到后端确认支付并交付功能的流程图
本站依据 Pi 官方 Authentication、Payments 与 Common Mistakes 文档绘制。

Pi 官方开发文档把应用支付分成前端发起与后端确认两部分。前端负责加载 Pi SDK、认证用户和启动支付;后端负责验证身份、批准 paymentId、完成链上支付并决定何时交付商品或功能。只在浏览器端显示“支付成功”不能作为最终凭据。

第一步:加载 SDK 并区分测试与生产

应用必须从官方地址加载 https://sdk.minepi.com/pi-sdk.js,随后调用 Pi.init()。官方文档特别说明,Pi Browser 不会自动注入 window.Pi;缺少脚本标签或初始化调用时,后续认证与支付方法会直接失败。

开发阶段使用 Sandbox,生产环境再切换为主网设置。测试时同时记录浏览器版本、网络环境和应用配置,避免把 Sandbox 支付结果误当作主网成交。

第二步:认证结果必须交给后端验证

调用 Pi.authenticate() 时,只申请当前功能真正需要的范围;接受支付时需要 payments。前端拿到的 accessToken 应发送给自己的后端,后端再通过 Pi Platform API 的 /me 验证。用户名或前端返回的 user 对象只能用于显示,不能单独决定账户权限或发货。

第三步:支付要经过 approve 与 complete

  1. 前端调用 Pi.createPayment();
  2. onReadyForServerApproval 返回 paymentId 后,发送给后端;
  3. 后端用保存在服务器环境变量中的 API Key 调用 approve;
  4. 用户签名并提交交易,前端取得 txid;
  5. 前端把 paymentId 与 txid 发送给后端,后端调用 complete;
  6. 只有服务器确认 complete 成功后,才交付付费内容或功能。

Server API Key 不应写入网页、移动端包或公开仓库。客户端能看到的任何“秘密”都应视为已暴露。

为什么必须处理未完成支付?

用户可能在链上提交后关闭页面、断网,或在后端 complete 之前退出。官方要求在认证时提供 onIncompletePaymentFound 回调。应用应把未完成支付交给后端核对,而不是直接重建一笔新订单,否则可能造成重复扣款或重复交付。

上线前的最小测试清单

  • SDK 加载失败、Pi Browser 版本过旧和用户取消授权时有明确提示;
  • 后端能拒绝无效或过期 accessToken,并以 /me 结果为准;
  • approve 成功但用户未签名、链上已提交但 complete 未完成都能恢复;
  • 重复发送同一 paymentId 或 txid 不会重复交付;
  • 日志不记录完整 accessToken、API Key 或不必要的用户信息。

关于近期 Developer Portal、BlockExplorer 与 SoloHost 的变化,可参阅Pi 开发者平台更新梳理。如应用还要申请展示或广告变现,也要参考Pi 开发者生态规模与资格边界,平台存在分发能力并不代表应用自动获得流量或广告资格。

本文只解释官方接入流程。接口参数、审核规则和生产环境要求可能更新,上线前应重新核对 Pi 官方开发文档。

参考来源

赞(0) 打赏
未经允许不得转载:派想网 » Pi 应用支付怎么接入?前端 SDK、后端验证与未完成支付处理

迎接Pi币主网时代

Pi APP下载价格行情

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信收款二维码