先理解唯一推荐接入路径:统一 SDK、托管支付、托管登录、后端校验与结果消费
这页解决什么问题:帮助你先确定《优易点统一门户》的唯一推荐接入路线。
适用场景:标准托管用户,希望尽快完成网页支付与托管登录接入。
完成后你将得到什么:一条可直接交给 AI 或开发者执行的默认实现路径。
优易点统一门户负责托管以下能力:
本文档覆盖的 SDK 版本为 @youidian/sdk v3.3.10。
默认只讲一条路线:
@youidian/sdk@youidian/sdk/client 使用 PaymentUI 打开托管支付@youidian/sdk/client 使用 LoginUI 打开托管登录@youidian/sdk/server 使用 PaymentClientloginToken,再建立本地用户与会话默认路径中:
productCode 发起支付metadata.customAmount 暴露托管输入或集成方自有输入所需配置loginTokenapiUrl、checkoutUrl、loginUrl、baseUrl从 SDK v3.1.0 开始,如果集成方需要在自己的价格页判断“是否已购买”“是否应该显示升级入口”,可以在后端调用 getActiveSubscription(userId)。这个判断应由集成方后端完成,而不是交给公开托管 checkout 页面来做。
从 SDK v3.2.0 开始,LoginUI 会为 OAuth 重定向自动生成同源登录回调 URL。标准登录接入不需要自建回调页面。
从 SDK v3.2.2 开始,登录回调不再把 callbackUrl 放进 query 参数。SDK 会通过 hash/window.name 传递回调上下文,默认避开 popup.closed 轮询,也不会强制回调页执行 window.close()。
从 SDK v3.3.0 开始,LoginUI 默认使用 iframe 模态窗口打开托管登录页。如需保留旧版完整弹窗流程,可传入 displayMode: "popup"。
从 SDK v3.3.2 开始,根包也会导出服务端手机号绑定请求与响应类型。当你的后端需要在自己的账号设置流程里让已登录的托管用户绑定手机号时,使用 PaymentClient.sendPhoneVerificationCode(...) 和 PaymentClient.bindPhoneNumber(...)。
从 SDK v3.3.10 开始,PaymentClient.createOrder(...) 支持 merchantPricing,用于后端计算优惠券、会员价、活动价或企业采购价后再创建订单。如果最终应付金额为 0,请使用 FREE 渠道创建订单,再打开既有订单收银台。
如果客户已经在线下完成对公转账,并且财务或业务系统确认到账,请使用 PaymentClient.createBankTransferOrder(...) 补录已支付订单。完整流程见对公转账订单。
从 SDK v3.3.10 开始,PaymentClient 还提供实时库存查询:在后端调用 getProductStock(...) 或 getProductStocks(...),再决定是否展示购买按钮。限购产品如果在用户下单前已售罄,createOrder(...) 会返回 OUT_OF_STOCK(409)。完整库存生命周期和参数说明见库存限购产品。
从 SDK v3.3.10 开始,托管支付弹窗在用户取消或关闭待支付订单时,会尽力发送取消请求。对于库存限购产品,这会更快释放待支付订单占用的库存,而不必等库存占用超时。
特殊控制需求、私有部署、自定义域名与显式建单,请看高级接入。
你的后端
-> getProducts(...)
-> 如产品限购,再调用 getProductStock(...) 或 getProductStocks(...)
-> 你的价格页展示产品、价格、产品权益
-> 你的前端 PaymentUI.openPayment({ appId, userId, productCode })
-> 优易点统一门户托管支付页
-> 用户确认产品并完成支付
-> 优易点统一门户创建并推进订单
-> 前端收到成功回调 orderId
-> 你的后端查询订单 / 权益
-> 你的系统发放权益、刷新账户状态或读取更新后的余额
你的前端
-> LoginUI.openLogin({ appId })
-> 优易点统一门户托管登录页
-> 用户完成登录
-> 前端收到 loginToken
-> 前端把 loginToken 提交给你的后端
-> 你的后端 verifyLoginToken(loginToken)
-> 你的系统匹配或创建本地用户并建立会话
@youidian/sdk/login 当成默认入口loginToken