Socket
Socket
Sign inDemoInstall

@paylike/client

Package Overview
Dependencies
8
Maintainers
7
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @paylike/client

High-level client for the API documented at: https://github.com/paylike/api-reference. It is using [paylike/request](https://www.npmjs.com/package/@paylike/request) under the hood.


Version published
Maintainers
7
Install size
278 kB
Created

Readme

Source

Paylike API client

High-level client for the API documented at: https://github.com/paylike/api-reference. It is using paylike/request under the hood.

Quick start

Browser (or e.g. Deno)

// swap esm.sh for any "npm CJS to ESM CDN"
import Paylike from 'https://esm.sh/@paylike/client@1.0.0'

const paylike = Paylike()
paylike.tokenize('pcn', '1000000000000000').then(console.log, console.error)

Node.js

npm install @paylike/client
import Paylike from '@paylike/client'

const paylike = Paylike()
paylike.tokenize('pcn', '1000000000000000').then(console.log, console.error)

Methods

.tokenize(type, value[, opts])
// → Promise<Token>
.payments.create(payment, hints, challengePath[, opts])
// → Promise<Token>

Apple Pay

.applepay.tokenize(event.payment.token.paymentData[, opts])
// → Promise<Token>
.applepay.approvePaymentSession(configurationId, text[, opts])
// → Promise(merchantSession)
Example
const session = new ApplePaySession(3, {
  // ...
})
session.onvalidatemerchant(() => {
  paylike.applepay
    .approvePaymentSession(configurationId, 'Pretty Shop')
    .then((ms) => session.completeMerchantValidation(ms))
})
session.onpaymentauthorized((e) => {
  paylike.applepay.tokenize(e.payment.token.paymentData).then((token) => {
    // follow same payment flow as usual
    pay({
      // ...
      applepay: token,
    }).then(
      (r) => {
        session.completePayment(ApplePaySession.STATUS_SUCCESS)
        // ...
      },
      (err) => {
        session.completePayment(ApplePaySession.STATUS_FAILURE)
        // ...
      }
    )
  })
})
session.begin()

Error handling

The methods may throw any error forwarded from the used fetch implementation as well as one of the below error classes. All error classes are exposed on the main function.

const paylike = Paylike()
paylike.RateLimitError
  • RateLimitError

    May have a retryAfter (milliseconds) property if sent by the server specifying the minimum delay.

  • TimeoutError

    Has a timeout (milliseconds) property specifying the time waited.

  • ServerError

    Has status and headers properties copied from the fetch response.

  • ResponseError

    These errors correspond to status codes from the API reference. They have at least a code and message property, but may also have other useful properties relevant to the specific error code, such as a minimum and maximum for amounts.

Logging

Pass a log function of the format (i) => {} to catch internal (structured) logging.

const paylike = Paylike({log: console.log})

Timeouts and retries

There is a default timeout for all HTTPS requests of 10 seconds and a retry strategy of 10 retries with increasing delay (check the source for details). The default maximum timeout (retries and timeouts accumulated) is 72,100 milliseconds.

Both of these parameters can be customized:

const paylike = Paylike({
  timeout: 10000,
  retryAfter: (err, attempts) => {
    // err = current error
    // attempts = total attempts so far
    return false // no more attempts (err will be returned to the client)
    // or
    return 1000 // retry after this many milliseconds
  },
})

Both options can be set on the factory or the individual method.

FAQs

Last updated on 03 Nov 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc