Skip to content

esnilara/ember-conekta-service

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

About

An ember-cli addon which injects Conekta.js as an Ember Service

Resources

License

Stars

Watchers

Forks

Packages

No packages published