UNPKG

@spree/storefront-api-v2-sdk

Version:

Node module to easily integrate your JavaScript or TypeScript application with Spree Storefront API V2. You can create an entirely custom Storefront in JS/TS with this package including one page checkout, Single Page Apps, PWAs and so on.

401 lines (400 loc) 15.1 kB
import { Http } from '@spree/core-api-v2-sdk'; import type { IQuery, IToken } from '@spree/core-api-v2-sdk'; import type { CreateStripeSessionOptions, OrderUpdate, AddStoreCredit, AddPayment, NestedAttributes, SelectShippingMethod, AddPaymentOptions, SelectShippingMethodOptions, ShippingRatesOptions, PaymentMethodsOptions, RemoveStoreCreditsOptions, AddStoreCreditOptions, CompleteOptions, AdvanceOptions, OrderUpdateOptions, OrderNextOptions } from '../interfaces/Checkout'; import type { IOrderResult } from '../interfaces/Order'; import type { IPaymentMethodsResult } from '../interfaces/PaymentMethod'; import type { IShippingMethodsResult, ShippingRatesResult } from '../interfaces/ShippingMethod'; import { StripeCheckoutSessionSummaryResult } from '../interfaces/StripeCheckoutSessionSummary'; export default class Checkout extends Http { /** * Updates the Checkout. You can run multiple Checkout updates with different data types. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1NA-update-checkout). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * order: { * email?: string * special_instructions?: string * bill_address_attributes?: { * firstname: string * lastname: string * address1: string * city: string * phone: string * zipcode: string * state_name: string * country_iso: string * } * ship_address_attributes?: { * firstname: string * lastname: string * address1: string * city: string * phone: string * zipcode: string * state_name: string * country_iso: string * } * shipments_attributes?: [ * { * selected_shipping_rate_id: number * id: number * } * ] * } * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.orderUpdate({ * bearer_token: '7381273269536713689562374856', * order: { * email: 'john@snow.org' * } * }) * * // or guest user * const response = await client.checkout.orderUpdate({ * order_token: '7381273269536713689562374856', * order: { * email: 'john@snow.org' * } * }) * ``` */ orderUpdate(options: OrderUpdateOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ orderUpdate(token: IToken, params: OrderUpdate | NestedAttributes): Promise<IOrderResult>; /** * Goes to the next Checkout step. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1NQ-next-checkout-step). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.orderNext({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.checkout.orderNext({ * order_token: '7381273269536713689562374856' * }) * ``` */ orderNext(options: OrderNextOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ orderNext(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Advances Checkout to the furthest Checkout step validation allows, until the Complete step. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1Ng-advance-checkout). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.advance({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.checkout.advance({ * order_token: '7381273269536713689562374856' * }) * ``` */ advance(options: AdvanceOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ advance(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Completes the Checkout. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1Nw-complete-checkout). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.complete({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.checkout.complete({ * order_token: '7381273269536713689562374856' * }) * ``` */ complete(options: CompleteOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ complete(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Adds Store Credit payments if a user has any. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1OA-add-store-credit). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * amount: number * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.addStoreCredits({ * bearer_token: '7381273269536713689562374856', * amount: 100 * }) * * // or guest user * const response = await client.checkout.addStoreCredits({ * order_token: '7381273269536713689562374856', * amount: 100 * }) * ``` */ addStoreCredits(options: AddStoreCreditOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ addStoreCredits(token: IToken, params: AddStoreCredit): Promise<IOrderResult>; /** * Remove Store Credit payments if any applied. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc1OQ-remove-store-credit). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.removeStoreCredits({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.checkout.removeStoreCredits({ * order_token: '7381273269536713689562374856' * }) * ``` */ removeStoreCredits(options: RemoveStoreCreditsOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ removeStoreCredits(token: IToken, params?: IQuery): Promise<IOrderResult>; /** * Returns a list of available Payment Methods. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MzE0Mjc2MA-list-payment-methods). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.paymentMethods({ * bearer_token: '7381273269536713689562374856' * }) * * // or guest user * const response = await client.checkout.paymentMethods({ * order_token: '7381273269536713689562374856' * }) * ``` */ paymentMethods(options: PaymentMethodsOptions): Promise<IPaymentMethodsResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ paymentMethods(token: IToken): Promise<IPaymentMethodsResult>; /** * @hidden * @deprecated Use {@link shippingRates} instead. */ shippingMethods(token: IToken, params?: IQuery): Promise<IShippingMethodsResult>; /** * Returns a list of available Shipping Rates for Checkout. Shipping Rates are grouped against Shipments. Each checkout cna have multiple Shipments eg. some products are available in stock and will be send out instantly and some needs to be backordered. See [api docs](https://api.spreecommerce.org/docs/api-v2/ed60ec67b7d90-list-shipping-rates). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * const response = await client.checkout.shippingRates({ * bearer_token: '7381273269536713689562374856', * include: 'shipping_rates,stock_location' * }) * * // or guest user * const response = await client.checkout.shippingRates({ * order_token: '7381273269536713689562374856', * include: 'shipping_rates,stock_location' * }) * ``` */ shippingRates(options: ShippingRatesOptions): Promise<ShippingRatesResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ shippingRates(token: IToken, params?: IQuery): Promise<ShippingRatesResult>; /** * Selects a Shipping Method for Shipment(s). See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MjY1NTc1NzY-selects-shipping-method-for-shipment-s). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * shipping_method_id: string * shipment_id?: string * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * const response = await client.checkout.selectShippingMethod({ * bearer_token: '7381273269536713689562374856', * shipping_method_id: '42' * }) * ``` */ selectShippingMethod(options: SelectShippingMethodOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ selectShippingMethod(token: IToken, params: SelectShippingMethod): Promise<IOrderResult>; /** * Creates new Payment for the current checkout. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MjYyODA2NTY-create-new-payment). * * **Required token:** [Bearer token](../pages/tokens.html#bearer-token) or [Order token](../pages/tokens.html#order-token) * * **Options schema:** * ```ts * interface options { * payment_method_id: string * source_id?: string * amount?: number * source_attributes?: { * gateway_payment_profile_id: string * cc_type?: string * last_digits?: string * month?: string * year?: string * name: string * } * } * ``` * * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema) * * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema) * * **Example:** * ```ts * // Logged in user * * // Create new credit card * const response = await client.checkout.addPayment({ * bearer_token: '7381273269536713689562374856', * payment_method_id: '1', * source_attributes: { * gateway_payment_profile_id: 'card_1JqvNB2eZvKYlo2C5OlqLV7S', * cc_type: 'visa', * last_digits: '1111', * month: '10', * year: '2026', * name: 'John Snow' * } * }) * * // Use existing credit card * const response = await client.checkout.addPayment({ * bearer_token: '7381273269536713689562374856', * payment_method_id: '1', * source_id: '1' * }) * * // or guest user * * // Create new credit card * const response = await client.checkout.addPayment({ * order_token: '7381273269536713689562374856', * payment_method_id: '1', * source_attributes: { * gateway_payment_profile_id: 'card_1JqvNB2eZvKYlo2C5OlqLV7S', * cc_type: 'visa', * last_digits: '1111', * month: '10', * year: '2026', * name: 'John Snow' * } * }) * ``` */ addPayment(options: AddPaymentOptions): Promise<IOrderResult>; /** * @hidden * @deprecated Use the combined options signature instead. */ addPayment(token: IToken, addPaymentParams: AddPayment): Promise<IOrderResult>; /** * @hidden */ createStripeSession(options: CreateStripeSessionOptions): Promise<StripeCheckoutSessionSummaryResult>; }