An ember-cli addon which injects Conekta.js as an Ember Service
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


ember-conekta-service wraps Conekta.js library and makes it available through a service in your ember project. Features based in the ember-stripe-service library.


ember install ember-conekta-service


  • sets conekta.js script in index.html (test, app)
  • initializes conekta with public key
  • injects service in controllers which provides promisified method for Conekta.card.createToken
  • provides debugging logs for easy troubleshooting
  • client side validations for card number, expiration dates, card brand and CVC
  • lazy load conekta.js


In order to use Conekta you must set your public key in config/environment.js.

ENV.conekta = {
  publicKey: 'meep_thisIsATestKey',
  language: 'en', // defaults 'es' if not added
  debug: false, // turn on debugging
  lazyLoad: false, // lazy load conekta
  mock: false // mock out conekta.js, good for offline testing

Lazy Loading

If lazyLoad is set to turn Conekta.js will not be loaded until you call the load() function on the service. It's best to call this function in a route's beforeModel hook.

// subscription page route

import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { get } from '@ember/object';

export default Route.extend({
  conekta: service(),

  beforeModel() {
    return get(this, 'conekta').load();

Example of usage in a route

// subscription page route

import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { get, set } from '@ember/object';

export default Route.extend({
  conekta: service(),

  processCreditCard() {
    let customer = get(this, 'customer');

    // obtain access to the injected service
    let conektaService = get(this, 'conekta');

    // if for example you had the cc set in your route or component
    let card = get(this, 'creditCard');

    return conekta.card.createToken(card).then((token) => {
      // you get access to your newly created token here
      set(customer, 'conektaToken',;
    }).then(() => {
      // do more stuff here
    }).catch((error) => {
      // do something with the error


By setting debug: true in your application configuration you can enable some debugging messages from the service.

var ENV = {
  // some vars...
  conekta: {
    debug: true
  // more config ...


Conekta has a few client-side validation helpers. See more information here

  • validateNumber - Checks that the format of the card number is correct.
  • validateExpirationDate - Checks that the expiration date is a valid and future date.
  • validateCVC - Checks that the security code is a valid whole number, 3 to 4 characters long.
  • getBrand - Returns the type of the card as a string. The possible types are "visa", "mastercard", "amex", "unknown"



  • git clone <repository-url>
  • cd ember-conekta-service
  • npm install


  • npm run lint:js
  • npm run lint:js -- --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • npm test – Runs ember try:each to test your addon against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit


This project is licensed under the MIT License.