Nanobots Protecting Microbots

    @accept-nano/client
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    accept-nano-client

    Build Status Coverage Status npm (scoped) npm bundle size (scoped) GitHub

    Payment gateway for NANO

    accept-nano-client is a JavaScript package that helps you to communicate with accept-nano for receiving NANO payments easily in your client-side applications.

    Installation

    via NPM

    npm install accept-nano-client
     
    yarn add accept-nano-client

    ES Modules / TypeScript

    import * as acceptNano from '@accept-nano/client'

    CommonJS

    const acceptNano = require('@accept-nano/client')

    Directly in Browser, as a UMD module

    After the accept-nano-client script is loaded there will be a global variable called acceptNano, which you can access via window.acceptNano

    <html>
      <head>
        ...
        <script src="https://unpkg.com/@accept-nano/client@beta"></script> 
      </head>
      ...
    </html>

    Usage

    Creating a Payment Session

    To be able to initiate the payment process, you must create a new payment session.

    // 1- create a new payment session
    type CreateSessionParams = {
      apiHost: string // host of your Accept NANO server, without protocol
      pollInterval?: number // time interval (ms) to re-check for verification of a payment (default: 3s)
      debug?: boolean // enables debug mode and prints some useful stuff to console
    }
     
    const session = acceptNano.createSession({
      apiHost: 'accept-nano-demo.put.io',
    })
     
    // 2- register event listeners to shape-up your logic based on session events.
    type PaymentSessionEvents = {
      start: () => void
      end: (error: PaymentError | null, payment: AcceptNanoPayment | null) => void
    }
     
    session.on('start'() => {
      myApp.paymentStarted()
    })
     
    session.on('end'(error, payment) => {
      if (error) {
        return myApp.paymentFailed({ reason: error.reason })
      }
     
      return myApp.paymentSucceeded({
        amount: payment.amount,
        state: payment.state,
      })
    })

    Presenting the Payment Overlay

    After creating your session and attaching the event listeners, you can follow one of those options to proceed with the payment flow.

    Option 1: Create a Payment Through Client

    If you want to create and verify an accept-nano payment in your client application, you can use this option.

    After the payment is created, accept-nano-client will automatically proceed to the verification step.

    type CreatePaymentParams = {
      amount: string // stringified number
      currency: 'NANO' | 'USD'
      state?: string // payload to share between your client and server, will be embedded into the payment object
    }
     
    session.createPayment({
      amount: '1',
      currency: 'USD',
      state: '{userId:7}',
    })

    Option 2: Verify a Payment Through Client

    If you create an accept-nano payment in another context (such as your application's backend), you can use this option to perform the verification in your client application.

    type VerifyPaymentParams = {
      token: string // the Accept NANO payment token created in your backend application
    }
     
    session.verifyPayment({ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' })

    Contributing

    • Please open an issue if you have a question or suggestion.
    • Don't create a PR before discussing it first.

    Who is using accept-nano-client in production?

    Please send a PR to list your site if accept-nano is helping you to receive NANO payments.

    Sponsors

    Browserstack

    Cross-browser compatibility is tested with BrowserStack, thanks for supporting open source ❤️️

    Keywords

    none

    Install

    npm i @accept-nano/client

    DownloadsWeekly Downloads

    60

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    1.35 MB

    Total Files

    66

    Last publish

    Collaborators

    • altayaydemir
    • cenkalti