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.
Permalink
Failed to load latest commit information.
addon
app
config
tests
vendor
.editorconfig
.ember-cli
.eslintrc.js
.gitignore
.npmignore
.travis.yml
.watchmanconfig
LICENSE.md
README.md
ember-cli-build.js
index.js
package-lock.json
package.json
testem.js

README.md

ember-conekta-service

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.

Installation

ember install ember-conekta-service

Features

  • 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

Configuration

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', token.id);
      return customer.save();
    }).then(() => {
      // do more stuff here
    }).catch((error) => {
      // do something with the error
    });
  }
});

Debugging

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 ...
}

Validations

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"

Contributing

Installation

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

Linting

  • 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 https://ember-cli.com/.

License

This project is licensed under the MIT License.