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请向用户显示(更新提示文案)。
示例代码
这有帮助吗?