For the complete documentation index, see llms.txt. This page is also available as Markdown.

IAP.createOneTimePurchaseOrder

功能说明

会跳转到单次应用内支付订单页。支付·商品发放流程是 options / onEvent / onError 按事件风格选项处理。

  • options.sku:是要下单的商品 ID。(productId已废弃)

  • options.processProductGrant:在创建订单后发放商品时调用。将发放成功与否 true/false(或 Promise)返回。

  • onEvent:支付成功时 type: 'success'以及结果数据调用。

  • onError:在支付过程中发生错误时调用。

返回值 cleanup 函数在应用内支付功能结束后必须调用,以释放资源。

Toss App Android/iOS 5.219.0 可在以上版本使用。若在不支持的版本中调用则 UNSUPPORTED_APP_VERSION 会发生错误。

类型

IAP.createOneTimePurchaseOrder(params: IapCreateOneTimePurchaseOrderOptions): () => void;

Params

interface IapCreateOneTimePurchaseOrderOptions {
  options: {
    sku: string;
    /** @deprecated 使用 sku */
    productId?: string;
    processProductGrant: (params: {
      orderId: string;
    }) => boolean | Promise<boolean>;
  };
  onEvent: (event: {
    type: "success";
    data: IapCreateOneTimePurchaseOrderResult;
  }) => void | Promise<void>;
  onError: (error: unknown) => void | Promise<void>;
}

interface IapCreateOneTimePurchaseOrderResult {
  orderId: string;
  displayName: string;
  displayAmount: string;
  amount: number;
  currency: string;
  fraction: number;
  miniAppIconUrl: string | null;
}

Response

在支付流程结束后调用以释放资源的 cleanup 函数(() => void)作为返回值。

错误

错误代码 onError可通过……接收,或由包裹调用的 try/catch中捕获到的错误的 error.code 值。

代码
说明

INVALID_PRODUCT_ID

商品 ID 无效,或不存在该商品的情况。

PAYMENT_PENDING

支付仍在等待批准的情况。

NETWORK_ERROR

因网络/服务器问题无法处理请求的情况。

INVALID_USER_ENVIRONMENT

在特定设备·账户·设置下无法购买的商品。

ITEM_ALREADY_OWNED

尝试再次购买已购买过的商品的情况。

APP_MARKET_VERIFICATION_FAILED

已完成支付,但在应用商店验证失败的情况。

TOSS_SERVER_VERIFICATION_FAILED

已完成支付,但向服务器传输/保存失败的情况。

INTERNAL_ERROR

因服务器内部问题无法处理请求的情况。

KOREAN_ACCOUNT_ONLY

在 iOS 上不是韩国账号的情况。

USER_CANCELED

用户离开订单页的情况。

PRODUCT_NOT_GRANTED_BY_PARTNER

合作方商品发放失败的情况。

UNSUPPORTED_APP_VERSION

如果当前运行的 Toss App 版本不支持此功能,调用后会立即发生。 IAP.createOneTimePurchaseOrder.isSupported()可通过它提前确认,发生时 error.message请向用户显示(更新提示文案)。

示例代码

这有帮助吗?