πŸš€ DAY 3 OF LAUNCH WEEK:Announcing Bun and vlt Support in Socket.Learn more β†’
Socket
Book a DemoInstallSign in
Socket

@cloudbeds/payment-element-webcomponent

Package Overview
Dependencies
Maintainers
91
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cloudbeds/payment-element-webcomponent

Web component wrapper for Cloudbeds Payment SDK

latest
Source
npmnpm
Version
0.5.4
Version published
Maintainers
91
Created
Source

Cloudbeds Payment Element Web Component

A web component wrapper for the Cloudbeds Payment SDK, enabling easy integration of payment processing into any website or application. This package provides both CDN and NPM distribution methods for maximum flexibility.

πŸš€ Try the Live Demo

View Interactive Demo β†’

Experience the payment component in action with our live demo featuring:

  • Multiple payment methods (cards, PayPal, bank transfers)
  • Real-time form validation
  • Theme customization examples
  • Event handling demonstrations

Features

  • πŸš€ Easy Integration: Drop-in web component that works with any framework
  • 🌐 Universal Compatibility: Works with vanilla HTML, Vue, Angular, etc.
  • 🎨 Customizable: Full theming support and customizable styling
  • πŸ”’ PCI Compliant: Secure tokenization with industry-standard security
  • 🌍 Internationalization: Multi-language support

Installation

React

If your project is built with React, instead use @cloudbeds/payment-sdk.

Via CDN (For direct HTML usage - most projects will use it like this)

<script src="https://payment-element.cloudbeds.com/0.5.4/cloudbeds-payment-element.min.js"></script>

Quick Start

CDN Usage

<!DOCTYPE html>
<html>
<head>
  <script src="https://payment-element.cloudbeds.com/0.5.4/cloudbeds-payment-element.min.js"></script>
</head>
<body>
  <cloudbeds-payment-element
    api-key="YOUR_API_KEY"
    property-id="YOUR_PROPERTY_ID"
    amount="100.00"
    currency="usd"
    env="prod"
  ></cloudbeds-payment-element>

  <button id="submit-btn">Submit Payment</button>

  <script>
    let paymentHandles = null;
    const paymentElement = document.querySelector('cloudbeds-payment-element');

    /**
      * onRender callback to receive payment handles (for sending & validating payments).
      * @param {Object} handles - Object containing submit & validate functions.
      */
    const onRender = (handles) => {
      paymentHandles = handles;
    };

    // Attach function to save submit and validate functions to paymentElement lifecycle.
    paymentElement['on-render'] = onRender;

    // Submit payment
    document.getElementById('submit-btn').addEventListener('click', async () => {
      if (!paymentHandles) return;

      // Validate form before submitting
      const isValid = await paymentHandles.validate();
      if (!isValid) {
        alert('Please complete all required fields');
        return;
      }

      const result = await paymentHandles.submit();
      console.log('Payment hash:', result?.paymentData?.paymentMethodHash);
    });
  </script>
</body>
</html>

API Reference

Attributes

AttributeTypeRequiredDefaultDescription
api-keystringβœ…-Your Cloudbeds API key
property-idstringβœ…-Your property ID
amountstringβœ…-Payment amount (e.g., "100.00")
currencystring❌Property's currency setting ("usd" if none)Currency code in lowercase, e.g. "usd", "eur"
envstring❌"prod"Environment: "prod", "stage", "dev", or "local"
langstring❌"en"Language code for localization (e.g. "en", "es")
gueststring❌nullGuest information as JSON string
themestring❌SDK default theme objectCustom theme configuration as JSON string
allowed-payment-methodsstring❌All payment method the property allowsAllowed payment methods as JSON array
scoped-cssstring❌"false"Enable scoped CSS ("true" or "false")
capturestring❌"auto"Payment capture mode ("auto" or "manual")

Event Handlers

EventDescriptionCallback DataRequired
onRenderRuns when component rendersPaymentHandles objectβœ…
onChangeRuns when form data changesForm data object❌
onErrorRuns when an error occursError object❌
onSubmitRuns after payment submissionSubmission result❌

PaymentHandles Methods

interface PaymentHandles {
  submit(): Promise<PaymentResult>;
  validate(): Promise<boolean>;
}

Setting Amount Dynamically

Instead of hardcoding the amount in HTML, you can set it from a JavaScript variable:

const paymentElement = document.getElementById('cloudbeds-payment-element');
paymentElement.setAttribute('amount', 12.21);

Example

<payment-element-webcomponent
  id="payment-element"
  api-key="YOUR_API_KEY"
  property-id="YOUR_PROPERTY_ID"
  currency="usd"
  env="prod"
></payment-element-webcomponent>

<script>
  // Calculate amount from your cart/order
  const amount = calculateAmount();

  // Set the amount attribute
  document
    .getElementById('payment-element')
    .setAttribute('amount', amount.toFixed(2));
</script>

Note: Always use .toFixed(2) to ensure proper decimal formatting.

Complete Example

See the included example html file for a comprehensive example showing:

  • Multiple payment methods
  • Event handling
  • Validation
  • Error handling

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)
  • Mobile browsers (iOS Safari, Chrome Mobile)

Support

For issues and questions, please contact support@cloudbeds.com

Keywords

web-component

FAQs

Package last updated on 22 Oct 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts