paypal-checkout-v6/errors.js

"use strict";

/**
 * @name BraintreeError.PayPal Checkout V6 - Creation Error Codes
 * @description Errors that occur when creating the PayPal Checkout V6 component.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_NOT_ENABLED Occurs when PayPal is not enabled on the Braintree control panel.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_SANDBOX_ACCOUNT_NOT_LINKED Occurs only when testing in Sandbox, when a PayPal sandbox account is not linked to the merchant account in the Braintree control panel.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_TOKENIZATION_KEY_NOT_SUPPORTED Occurs when a tokenization key is used instead of a client token. V6 SDK requires client tokens.
 */

/**
 * @name BraintreeError.PayPal Checkout V6 - SDK Loading Error Codes
 * @description Errors that occur when loading the PayPal v6 SDK.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_SDK_SCRIPT_LOAD_FAILED Occurs when the PayPal v6 SDK script fails to load.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_SDK_INITIALIZATION_FAILED Occurs when the PayPal V6 SDK instance creation fails.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_CLIENT_TOKEN_INVALID Occurs when the client token is invalid or expired.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_SDK_NOT_INITIALIZED Occurs when a method is called before loading the PayPal SDK.
 */

/**
 * @name BraintreeError.PayPal Checkout V6 - Session Error Codes
 * @description Errors that occur when creating or starting payment sessions.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_SESSION_CREATION_FAILED Occurs when something goes wrong when initializing the flow.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_PAYMENT_START_FAILED Occurs when something goes wrong when starting the flow.
 * @property {CUSTOMER} PAYPAL_CHECKOUT_V6_PAYMENT_CANCELED Occurs when a customer cancels the payment flow.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INVALID_SESSION_OPTIONS Occurs when session options are invalid or missing required fields.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_APP_SWITCH_URLS_REQUIRED Occurs when returnUrl or cancelUrl is missing for direct-app-switch mode.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INSTANCE_NOT_READY Occurs when start() is called before the PayPal SDK instance is ready.
 */

/**
 * @name BraintreeError.PayPal Checkout V6 - Order Error Codes
 * @description Errors that occur when creating PayPal orders.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_ORDER_CREATION_FAILED Occurs when Braintree backend order creation fails.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INVALID_ORDER_OPTIONS Occurs when order options are invalid or missing required fields.
 */

/**
 * @name BraintreeError.PayPal Checkout V6 - Tokenization Error Codes
 * @description Errors that occur when tokenizing PayPal payments.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_TOKENIZATION_FAILED Occurs when PayPal account could not be tokenized.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_MISSING_TOKENIZATION_DATA Occurs when required tokenization data (payerID, orderID) is missing.
 */

/**
 * @name BraintreeError.PayPal Checkout V6 - Update Error Codes
 * @description Errors that occur when updating PayPal payments.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INVALID_UPDATE_OPTIONS Occurs when update options are invalid or missing required fields.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_PAYMENT_NOT_FOUND Occurs when the specified payment ID cannot be found.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_CURRENCY_MISMATCH Occurs when the update currency doesn't match the original payment currency.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_UPDATE_FAILED Occurs when the payment update request fails.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INVALID_LINE_ITEMS Occurs when line items have invalid format or inconsistent currency.
 * @name BraintreeError.PayPal Checkout V6 - Billing Agreement Error Codes
 * @description Errors that occur when creating billing agreements for vault flow.
 * @property {NETWORK} PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CREATION_FAILED Occurs when Braintree backend billing agreement creation fails.
 * @property {MERCHANT} PAYPAL_CHECKOUT_V6_INVALID_BILLING_AGREEMENT_OPTIONS Occurs when billing agreement options are invalid or missing required fields.
 * @property {CUSTOMER} PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CANCELED Occurs when a customer cancels the billing agreement flow.
 */

var BraintreeError = require("../lib/braintree-error");

module.exports = {
  // Configuration/Setup Errors
  PAYPAL_CHECKOUT_V6_NOT_ENABLED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_NOT_ENABLED",
    message: "PayPal is not enabled for this merchant.",
  },
  PAYPAL_CHECKOUT_V6_SANDBOX_ACCOUNT_NOT_LINKED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_SANDBOX_ACCOUNT_NOT_LINKED",
    message:
      "A linked PayPal Sandbox account is required to use PayPal Checkout V6 in Sandbox. See https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live#linked-paypal-testing for details on linking your PayPal sandbox with Braintree.",
  },
  PAYPAL_CHECKOUT_V6_TOKENIZATION_KEY_NOT_SUPPORTED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_TOKENIZATION_KEY_NOT_SUPPORTED",
    message:
      "PayPal Checkout V6 requires a client token for authorization. Tokenization keys are not supported.",
  },

  // SDK Loading Errors
  PAYPAL_CHECKOUT_V6_SDK_SCRIPT_LOAD_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_SDK_SCRIPT_LOAD_FAILED",
    message: "PayPal V6 SDK script failed to load.",
  },
  PAYPAL_CHECKOUT_V6_SDK_INITIALIZATION_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_SDK_INITIALIZATION_FAILED",
    message: "PayPal V6 SDK instance creation failed.",
  },
  PAYPAL_CHECKOUT_V6_CLIENT_TOKEN_INVALID: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_CLIENT_TOKEN_INVALID",
    message: "Client token is invalid or expired.",
  },
  PAYPAL_CHECKOUT_V6_SDK_NOT_INITIALIZED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_SDK_NOT_INITIALIZED",
    message:
      "PayPal SDK has not been initialized. Call loadPayPalSDK() before using this method.",
  },

  // Eligibility Check Errors
  PAYPAL_CHECKOUT_V6_ELIGIBILITY_CHECK_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_ELIGIBILITY_CHECK_FAILED",
    message: "Failed to check payment method eligibility.",
  },
  PAYPAL_CHECKOUT_V6_INVALID_ELIGIBILITY_OPTIONS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_ELIGIBILITY_OPTIONS",
    message:
      "Eligibility check options are invalid or missing required fields (amount, currency).",
  },

  // Session/Payment Errors
  PAYPAL_CHECKOUT_V6_SESSION_CREATION_FAILED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_SESSION_CREATION_FAILED",
    message: "Failed to create PayPal payment session.",
  },
  PAYPAL_CHECKOUT_V6_PAYMENT_START_FAILED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_PAYMENT_START_FAILED",
    message: "Failed to start PayPal payment flow.",
  },
  PAYPAL_CHECKOUT_V6_PAYMENT_CANCELED: {
    type: BraintreeError.types.CUSTOMER,
    code: "PAYPAL_CHECKOUT_V6_PAYMENT_CANCELED",
    message: "Customer canceled the PayPal payment.",
  },
  PAYPAL_CHECKOUT_V6_INVALID_SESSION_OPTIONS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_SESSION_OPTIONS",
    message: "PayPal session options are invalid or missing required fields.",
  },
  PAYPAL_CHECKOUT_V6_APP_SWITCH_URLS_REQUIRED: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_APP_SWITCH_URLS_REQUIRED",
    message:
      "returnUrl and cancelUrl are required when using direct-app-switch presentation mode.",
  },
  PAYPAL_CHECKOUT_V6_INSTANCE_NOT_READY: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INSTANCE_NOT_READY",
    message:
      "PayPal SDK instance is not ready. Ensure loadPayPalSDK() has completed before calling start().",
  },

  // Order Creation Errors
  PAYPAL_CHECKOUT_V6_ORDER_CREATION_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_ORDER_CREATION_FAILED",
    message: "Could not create PayPal order.",
  },
  PAYPAL_CHECKOUT_V6_INVALID_ORDER_OPTIONS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_ORDER_OPTIONS",
    message: "PayPal order options are invalid or missing required fields.",
  },

  // Tokenization Errors
  PAYPAL_CHECKOUT_V6_TOKENIZATION_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_TOKENIZATION_FAILED",
    message: "Could not tokenize PayPal account.",
  },
  PAYPAL_CHECKOUT_V6_MISSING_TOKENIZATION_DATA: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_MISSING_TOKENIZATION_DATA",
    message: "Missing required tokenization data (payerID or orderID).",
  },

  // Update Payment Errors
  PAYPAL_CHECKOUT_V6_INVALID_UPDATE_OPTIONS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_UPDATE_OPTIONS",
    message: "PayPal update options are invalid or missing required fields.",
  },
  PAYPAL_CHECKOUT_V6_PAYMENT_NOT_FOUND: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_PAYMENT_NOT_FOUND",
    message: "The specified payment ID cannot be found or is no longer active.",
  },
  PAYPAL_CHECKOUT_V6_CURRENCY_MISMATCH: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_CURRENCY_MISMATCH",
    message:
      "The currency provided for the update does not match the original payment currency.",
  },
  PAYPAL_CHECKOUT_V6_UPDATE_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_UPDATE_FAILED",
    message: "Could not update PayPal payment details.",
  },
  PAYPAL_CHECKOUT_V6_INVALID_LINE_ITEMS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_LINE_ITEMS",
    message: "Line items have invalid format or inconsistent currency.",
  },

  // Billing Agreement Errors
  PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CREATION_FAILED: {
    type: BraintreeError.types.NETWORK,
    code: "PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CREATION_FAILED",
    message: "Could not create PayPal billing agreement.",
  },
  PAYPAL_CHECKOUT_V6_INVALID_BILLING_AGREEMENT_OPTIONS: {
    type: BraintreeError.types.MERCHANT,
    code: "PAYPAL_CHECKOUT_V6_INVALID_BILLING_AGREEMENT_OPTIONS",
    message:
      "Billing agreement options are invalid or missing required fields.",
  },
  PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CANCELED: {
    type: BraintreeError.types.CUSTOMER,
    code: "PAYPAL_CHECKOUT_V6_BILLING_AGREEMENT_CANCELED",
    message: "Customer canceled the billing agreement.",
  },
};