Coinbase Commerce Meteor
A wrapper package for enabling synchronous usage of Coinbase Commerce's REST API.
This package was written up primarily due to scoping issues with the official package
(coinbase-commerce-node) when used in combination with
Meteor.wrapAsync
Installation
meteor add jorgenvatle:coinbase-commerce-meteor
Setup
Import library:
1import CoinbaseCommerce from 'meteor/jorgenvatle:coinbase-commerce-meteor'; 2 3const Commerce = new CoinbaseCommerce('your-api-key', 'your-webhook-shared-secret');
If you add a coinbase
object to your project's settings.json
, you can skip the above constructor arguments.
settings.json
1{ 2 "coinbase": { 3 "key": "Your API key", 4 "secret": "Your shared secret" 5 } 6}
your-script.js
1const Commerce = new CoinbaseCommerce();
Charges
Create charge
1const charge = Commerce.createCharge({ 2 name: 'The Sovereign Individual', 3 description: 'Mastering the Transition to the Information Age', 4 pricing_type: 'fixed_price', 5 local_price: { 6 amount: '100.00', 7 currency: 'USD' 8 }, 9});
Show a charge
1const charge = Commerce.showCharge('charge-id-goes-here');
Invoices
Create invoice
1const invoice = Commerce.createIncoice({ 2 business_name: 'My Business', 3 customer_email: 'john@doe.com', 4 customer_name: 'John Doe', 5 local_price: { 6 currency: 'USD', 7 amount: '499.00', 8 }, 9 memo: 'License Renewal (1 year)' 10})
Webhooks
It's important that you validate webhooks to ensure the authenticity of the webhook data. Without validation, an attacker may be able to spoof webhooks in turn allowing them to fulfill orders that aren't paid for yet.
Validate webhook
The webhook validator throws a Meteor.Error
for webhooks that don't pass the validation.
1Commerce.validateWebhook(req);
Validating with Picker:
1Picker.route('/listeners/coinbase', (params, req, res) => { 2 Commerce.validateWebhook(req); 3 4 // Handle the webhook 5});
If you'd rather not have exceptions thrown for invalid/unauthorized webhooks, use the boolean equivalent:
1if (Commerce.isValidWebhook(req)) { 2 // Webhook is valid! 3}
Contributing
To start the development environment, you need to copy settings.example.json
to settings.json
and add in keys to
your Coinbase Commerce application.
When adding new features, please include tests for them.
Build & Test
Running the following command will start up both the TypeScript watcher as well as the test environment.
npm start
License
This repository is licensed under the ISC license.
Copyright (c) 2018, Jørgen Vatle.