Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including happychain with all npm packages installed. Try it out:

var happychain = require("happychain")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

happychain v3.3.8

HappyChain is a payment api for Ethereum applications. The missing blockchain API for Ethereum

Getting started with HappyChain NPM module

npm module for HappyChain


Install and save happychain from npm.

npm install --save happychain

Then require it in your js file

var happychain = require('happychain');

HappyChain API functions Reference


Inputs: email, password Outputs: key, secret

Retrieves your key and secret if you already have an account. If you dont have an account, creates a new one and returns a key/secret. Outputs get returned into a callback.

Note: We dont reccomend putting in a real password, auth details aren't being encrypted until they hit our api, do so at your own peril.


var email = '';
var password = 'Adminadmin2017!';

happychain.getKey(email, password, function(auth_details) {
  var key = auth_details.key;
  var secret = auth_details.secret;

  console.log('client: happyPay.getKey()');
  console.log('email = '+email);
  console.log('key = '+key);
  console.log('secret = '+secret);


Inputs: Outputs: token object

Generates an empty token object to be filled out into a callback. You can console.log() it to find out what the possible data fields are. You should call this on your client side and fill out the data fields there so that no credit card info touches your servers.


Inputs: key, secret, token Outputs: updated token object

Sends the card info to happychain servers and returns a token in a callback. The token is a redacted version of the information which is saveable on your servers without violating PCI compliancy. Like above, call only from the client side to make sure credit card info never touches your servers.


Inputs: key, secret, token, amount Outputs: receipt

Actually charges the card. The tokenization and charge process are separated to facilitate recurring payments or a second attempt at a payment if the payment fails. Returns a receipt object in the callback. For now, the receipt object only has a success field.

HappyChain.chargeEth() [COMING SOON]

Inputs: key, secret, to, from, from_key, amount Outputs: 1st callback(transaction hash), 2nd callback(transaction receipt)

Not deployed yet because of some minor eth.filter() issues. This will eventually be an easy to integrate "Pay with Eth" button that works with metamask out of the box!

Example usage:

happyPay.getKey("email", "password", function(results){
    var key = results.key;
    var secret = results.secret;

        token.cardnumber = "123456789101112";
        token.cvv = "123";

        happyPay.tokenize(key, secret, token, function(token) {
            var amount = 100
            console.log("key" + key)
            happyPay.chargeCard(key, secret, token, amount, function(receipt) {
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free