Skip to content

Node.js libraries for PayPal Invoicing (calculations, JSON format, etc)

Notifications You must be signed in to change notification settings

djMax/node-paypal-invoice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PayPal Invoicing

This node.js module and browser script attempts to make it easier to work with PayPal Invoices. There is a good deal of math involved in matching our rounding and calculation rules/order so that our computations agree with yours. This module provides both an implementation of that and a (hopefully growing) set of canonical test cases to validate your own implementations.

Using the Module

From node.js:

    var Invoice = require('node-paypal-invoice');
    var i = new Invoice('USD');

    // Args are quantity, unitPrice, itemId and (optional) detailId.
    // Matching of items is done on itemId and detailId. So if you
    // addItem with the same itemId/detailId, it will just add the quantity
    // specified rather than creating a new item.
    var item = new Invoice.Item(1, '3.99', 'UID');
    i.addItem(item);
    var totals = i.calculate();
    console.log(totals.total.toString());

Numbers

In case you weren't already aware, floats are evil when it comes to money. They are not capable of representing all real numbers (i.e. they are not arbitrary precision) so don't use them. We use the bignumber.js module internally, and for convenience you can get at this via Invoice.Number, like so:

    var suchPrecise = new Invoice.Amount('3.99').times(2).plus('1.32');

If you do this a lot, maybe you want some sugar:

    var Invoice = require('node-paypal-invoice');
    var $$ = Invoice.Number;
    var myAmount = $$('3.99').times(2).plus('1.32');

About

Node.js libraries for PayPal Invoicing (calculations, JSON format, etc)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published