@ekko-earth/checkout-js
v1.0.7
Published
JavaScript SDK for ekko Checkout
Downloads
408
Readme
@ekko-earth/checkout-js
JavaScript SDK for Ekko Checkout integration.
Installation
npm install @ekko-earth/checkout-jsUsage
import { initCheckout } from '@ekko-earth/checkout-js';
const checkout = initCheckout({
checkoutSessionId: 'cs_1234567890',
clientSecret: 'sk_test_1234567890',
mode: 'production',
container: '#checkout-container', // or HTMLElement
locale: 'en-GB',
cspNonce: 'your-csp-nonce', // optional for CSP compliance
features: {
carbonCompensation: true,
roundUp: true,
rewardBar: true,
learnMore: true
},
appearance: {
theme: 'light',
image: 'elephant',
primaryColor: '#007bff',
secondaryColor: '#6c757d',
highlightColor: '#28a745',
textFont: 'Inter, sans-serif',
outerCornerRadius: 8
},
events: {
ready: (event) => {
console.log('Checkout ready!', event);
console.log('Session ID:', event.checkoutSessionId);
console.log('Carbon impact:', event.carbonImpact);
},
error: (event) => {
console.error('Checkout error:', event);
// Handle specific error codes as strings
if (event.code === 'invalid_payment_method') {
// Handle invalid payment method
} else if (event.code === 'network_error') {
// Handle network error
}
// iframe can emit any error code - handle generically
},
toggleChanged: (event) => {
console.log('Toggle changed:', event);
console.log('Key:', event.key);
console.log('Enabled:', event.enabled);
console.log('Delta amount:', event.deltaAmount);
console.log('Total payment:', event.totalPaymentAmount);
},
sizeChanged: (event) => {
console.log('Size changed:', event);
console.log('Height:', event.height);
console.log('Width:', event.width);
}
}
});
// Cleanup when done
checkout.destroy();API Reference
initCheckout(options)
Creates an embedded checkout instance.
Options
checkoutSessionId(required): Your checkout session IDclientSecret(required): Client secret for authenticationmode(required): Environment mode - one of:'production'- Production environment'sandbox'- Sandbox environment
container(required): HTMLElement or CSS selector where to mount checkoutlocale(optional): Locale code (e.g., 'en-GB', 'fr-FR', 'de-DE', 'ar-SA')cspNonce(optional): CSP nonce for inline styles compliancefeatures(optional): Feature togglescarbonCompensation(boolean, default: true) - Show carbon compensation optionroundUp(boolean, default: true) - Show round up to donate optionrewardBar(boolean, default: true) - Show environmental impact rewardslearnMore(boolean, default: true) - Show learn more information
appearance(optional): Visual customisationtheme: 'light' | 'dark' (default: 'light') - Overall colour schemeimage: 'elephant' | 'mountain' | 'forest' | 'ocean' (default: 'elephant') - Hero imageprimaryColor(string) - Primary brand colour (hex)secondaryColor(string) - Secondary colour (hex)highlightColor(string) - Accent/highlight colour (hex)textFont(string) - Font family for textouterCornerRadius(number) - Border radius in pixels
events(optional): Event callbacks
Event Types
ready(ReadyEvent) - Checkout is loaded and ready
checkoutSessionId- Session IDcarbonImpact.grams- Carbon impact in gramscarbonImpact.ounces- Carbon impact in ouncescarbonImpact.compensation.compensationValue- Compensation amountcarbonImpact.compensation.serviceFee- Service feecarbonImpact.compensation.currencyCode- ISO 4217 currency code
error(ErrorEvent) - Error occurred
code- Error code (string) - Can be any error code from iframe or SDKmessage- Human readable error message
Note: Error codes are not exported as enums since the iframe can emit any error code. Handle them as strings.
toggleChanged(ToggleChangedEvent) - User toggled a checkout option
key- Toggle key: 'carbonCompensation' | 'roundUp'enabled- Whether toggle is now enableddeltaAmount- Amount change (minor units, positive/negative)totalContributionAmount- New total for this toggletotalPaymentAmount- New total payment amountcurrencyCode- ISO 4217 currency code
sizeChanged(SizeChangedEvent) - Checkout iframe size changed (optional)
height- New height in pixelswidth- New width in pixels
Instance Methods
destroy()- Remove checkout and cleanup resources
