npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@8pay/sdk

v1.6.0

Published

JavaScript SDK for interacting with 8pay's smart contracts.

Downloads

16

Readme

@8pay/sdk

The SDK provides a way to programmatically interact with 8Pay's smart contracts along with some helper functions to simplify the integration process.

Requirements

  • web3 (1.0.0 or higher)

Installation

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js.

Installation is done using the npm install command:

$ npm install @8pay/sdk

Usage

This module uses web3 under the hood, which is one of the most popular libraries used to interact with the Web 3.0.

To keep things familiar with web3, it follows the same structure when sending transactions and also adds additional functionalities.

To get started, create an instance of the 8pay's SDK and choose the network on which you want to operate:

const Web3 = require('web3');
const EightPay = require('@8pay/sdk');

const web3 = new Web3('<provider-url>');
const eightPay = new EightPay(web3, EightPay.Network.BSC);

Supported networks

  • BSC
  • ETHEREUM
  • POLYGON
  • SANDBOX

Sending transactions

There are two ways to sign a transaction before broadcasting it to the blockchain:

  • With an unlocked account (e.g. when using Metamask)
eightPay.fixedRecurring.bill(planId, subscriptionIds)
    .send({ from: account })
  • With private key
eightPay.fixedRecurring.bill(planId, subscriptionIds)
    .send({ privateKey: '0x32df7......' })

Estimate gas

The gas consumed by a transaction can be estimated using the estimateGas function which takes an options object and returns the amount of gas required:

eightPay.fixedRecurring.bill(planId, subscriptionIds)
    .estimateGas(options)

Options

The send and estimateGas methods accept the same options object available in web3 which allows setting parameters like gas, gasPrice, nonce and so on.

Events

The following events are emitted when sending a transaction: sending, sent, transactionHash, receipt, confirmation and error.

const receipt = await eightPay.fixedRecurring.bill(planId, subscriptionIds)
    .send({ from: account })
    .once('sending', payload => {})
    .once('sent', payload => {})
    .once('transactionHash', hash => {})
    .once('receipt', receipt => {})
    .on('confirmation', confirmation => {})
    .on('error', error => {})

Fixed Recurring

Bill

Bills subscriptions of a plan.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription ids
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];

const receipt = await eightPay.fixedRecurring.bill(planId, subscriptionIds)
    .send({ from: account })

Terminate

Forcefully cancels subscriptions of a plan.

Note: The sender account must be the plan's admin or an operational account with terminate permission.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription ids
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];

const receipt = await eightPay.fixedRecurring.terminate(planId, subscriptionIds)
    .send({ from: account })

Variable Recurring

Bill

Bills subscriptions of a plan.

Note: The sender account must be the plan's admin or an operational account with bill permission.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription ids
  • amounts - array of amounts to charge for each subscription
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];
const amounts = [eightPay.utils.parseAmount('10', '8PAY')];

const receipt = await eightPay.variableRecurring.bill(planId, subscriptionIds, amounts)
    .send({ from: account })

Terminate

Forcefully cancels subscriptions of a plan.

Note: The sender account must be the plan's admin or an operational account with terminate permission.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription on-chain ids
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];

const receipt = await eightPay.variableRecurring.terminate(planId, subscriptionIds)
    .send({ from: account })

On Demand

Bill

Bills subscriptions of a plan.

Note: The sender account must be the plan's admin or an operational account with bill permission.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription ids
  • amounts - array of amounts to charge for each subscription
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];
const amounts = [eightPay.utils.parseAmount('10', '8PAY')];

const receipt = await eightPay.onDemand.bill(planId, subscriptionIds, amounts)
    .send({ from: account })

Terminate

Forcefully cancels subscriptions of a plan.

Note: The sender account must be the plan's admin or an operational account with terminate permission.

Parameters:

  • planId - id of the plan
  • subscriptionIds - array of subscription ids
const planId = '0x57b2059e526841b3dfd964144513359c9fcfd6d91040b6c47f589c1e032b6bf4';
const subscriptionIds = ['0xe63ba761797e289076f80a7c0916a31740684806aaf507da85f81ee785fec6ba'];

const receipt = await eightPay.onDemand.terminate(planId, subscriptionIds)
    .send({ from: account })

Accounts

The accounts utility can be used to obtain an account object from a private key or a mnemonic. The account object has two properties: address and privateKey.

const privateKey = '<private-key>';
const account = eightPay.accounts.fromPrivateKey(privateKey);

// OR

const mnemonic = '<mnemonic>';
const mnemonicIndex = 0;
const account = eightPay.accounts.fromMnemonic(mnemonic, mnemonicIndex);

console.log(account);

/*
{
    address: '0x2F2....',
    privateKey: '0x1Ee...'
}
*/

Utils

To help in parsing amount from and to ethereum decimals, you can use the parseAmount and formatAmount functions.

const parsedAmount = eightPay.utils.parseAmount('1', '8PAY') // 1000000000000000000
const amount = eightPay.utils.formatAmount(parsedAmount, '8PAY') // 1