@paylike/client
v1.0.0
Published
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.
Downloads
8
Keywords
Readme
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/[email protected]'
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
andheaders
properties copied from the fetch response.ResponseError
These errors correspond to status codes from the API reference. They have at least a
code
andmessage
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.