Skip to content

Universal JavaScript Paylike API client

Notifications You must be signed in to change notification settings

paylike/js-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Universal JavaScript Paylike API client

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published