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 cheddar with all npm packages installed. Try it out:

require("request/package.json"); // request is a peer dependency. require("request-promise-native/package.json"); // request-promise-native is a peer dependency. var cheddar = require("cheddar")

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

cheddar v0.11.2

Wrapper for the Cheddar recurring billing system APIs

Node.js Cheddar API wrapper

This module will simplify the process of integrating Cheddar into your existing node.js apps.

**Table of Contents**

Installation

npm install cheddar

Also install the peer dependencies:

npm install request

Basic usage

import Cheddar from 'cheddar';

const cheddar = new Cheddar({
  username: "email@example.com",
  password: "passwordExample",
  productCode: "PRODUCT_CODE",
});

cheddar.getPlans()
  .then(plans => console.log(plans))
  .catch(err => console.error(err));

// When inside an async function, you can simply await any Cheddar function
const plans = await cheddar.getPlans();

Or using ES5:

var Cheddar = require("cheddar");

var cheddar = new Cheddar({
  username: "email@example.com",
  password: "passwordExample",
  productCode: "PRODUCT_CODE",
});

cheddar.getPlans()
  .then(function (plans) { console.log(plans); })
  .catch(function (err) { console.error(err); });

Implemented methods

  • getPlans()
  • getPlan(planCode)
  • getCustomers([query])
  • getCustomer(customerCode)
  • searchCustomers([query])
  • createCustomer(customerData)
  • editCustomerAndSubscription(customerData)
  • editCustomer(customerCode, customerData)
  • editSubscription(customerCode, customerData)
  • deleteCustomer(customerCode)
  • cancelSubscription(customerCode)
  • addItem(customerCode, itemCode, [amount])
  • removeItem(customerCode, itemCode, [amount])
  • setItemQuantity(customerCode, itemCode, amount)
  • addCustomCharge(customerCode, chargeCode, quantity, amount, description)
  • deleteCustomCharge(customerCode, chargeId)
  • resendInvoiceEmail(idOrNumber)
  • oneTimeInvoice(customerCode, invoiceData)
  • getPromotions([query])
  • getPromotion(promotionCode)

All methods return a promise with the requested data in JSON format.

Using a proxy

You might want to set up a proxy to communicate with Cheddar. Cheddar blocks most of the Heroku servers (a range of AWS IPs):

Recently, a large block of IPs on the Heroku platform were listed by DenyHosts due to a spike in SSH brute force attacks coming from the Heroku platform. In short, you need to be coming from an IP that isn't listed.

A proxy url is easily set with the CHEDDAR_PROXY_URL environment variable:

CHEDDAR_PROXY_URL=https://example.com:1234 node your-server.js

Running tests

First add a config file (config.json) with all your Cheddar credentials:

{
  "username": "EMAIL",
  "password": "PASSWORD",
  // User either productCode OR productId
  "productCode": "PRODUCTCODE",
  "productId": "PRODUCTID",
  "planCode": "PLANCODE",
  "itemCode": "ITEMCODE",
  "promoCode": "PROMOCODE"
}

Now you can install all dependencies and run the tests:

npm install
npm test

WARNING: Only run the tests on a development account to prevent any side effects in production

NOTE: Not all API calls have been fully tested yet.

Credits

Original work was done by Kevin Smith.

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