/** * @public * @category 토스페이 * @name RequestTossPayPaysBillingOptions * @description 토스페이 정기결제창을 띄울 때 필요한 옵션이에요. * @property {string} wrappedToken 정기결제 래핑 토큰이에요. */ export interface RequestTossPayPaysBillingOptions { /** * 정기결제 래핑 토큰이에요. */ wrappedToken: string; } /** * @public * @category 토스페이 * @name RequestTossPayPaysBillingResult * @description 토스페이 정기결제창에서 사용자가 인증에 성공했는지 여부예요. * @property {boolean} success 인증이 성공했는지 여부예요. * @property {string} [reason] 인증이 실패했을 경우의 이유예요. */ export interface RequestTossPayPaysBillingResult { /** * 인증이 성공했는지 여부예요. */ success: boolean; /** * 인증이 실패했을 경우의 이유예요. */ reason?: string; } /** * @public * @category 토스페이 * @name requestTossPayPaysBilling * @description 토스페이 정기결제창을 띄우고, 사용자 인증을 수행해요. 인증이 완료되면 성공 여부를 반환해요. * * 이 함수는 결제창을 통해 사용자 인증만 해요. 실제 결제 처리는 인증 성공 후 서버에서 별도로 해야 해요. * * @property {() => boolean} isSupported 현재 앱 버전이 이 기능을 지원하는지 확인하는 함수예요. * @param {RequestTossPayPaysBillingOptions} options 정기결제창을 띄울 때 필요한 옵션이에요. * @returns {Promise} 인증 성공 여부를 포함한 결과를 반환해요. * * @example * * ### 토스페이 정기결제창 띄우고 인증 처리하기 * * ```tsx * import { TossPay } from '@apps-in-toss/web-framework'; * * async function handleBilling() { * try { * // 실제 구현 시 정기결제 생성 역할을 하는 API 엔드포인트로 대체해주세요. * const { wrappedToken } = await fetch('/my-api/billing/create').then(res => res.json()); * * const { success, reason } = await TossPay.requestTossPayPaysBilling({ wrappedToken }); * * if (success) { * // 실제 구현 시 정기결제를 실행하는 API 엔드포인트로 대체해주세요. * await fetch('/my-api/billing/execute', { * method: 'POST', * body: JSON.stringify({ wrappedToken }), * headers: { 'Content-Type': 'application/json' }, * }); * } else { * console.log('인증 실패:', reason); * } * } catch (error) { * console.error('정기결제 인증 중 오류가 발생했어요:', error); * } * } * ``` */ export declare function requestTossPayPaysBilling(options: { params: RequestTossPayPaysBillingOptions; }): Promise; export declare namespace requestTossPayPaysBilling { var isSupported: () => boolean; } export {};