The @finpoints-tech/payment-js
package provides seamless integration of PaymentSwitch's secure checkout features into your web application. It dynamically loads the required scripts, and initializes the PaymentSwitch SDK.
Install the package via npm or yarn:
npm install @finpoints-tech/payment-js
or
yarn add @finpoints-tech/payment-js
import { loadPayment } from "@finpoints-tech/payment-js";
The main function, loadPayment
, dynamically loads the PaymentSwitch SDK and initializes it with analytics metadata.
const paymentPromise = loadPayment("YOUR_PUBLISHABLE_KEY", {
customBackendUrl: "YOUR_BACKEND_URL",
// You can configure this as an endpoint for all the api calls such as session, payments, confirm call.
});
-
str
: A string representing your public key. -
option
: Optional configuration object (option<JSON.t>
).
loadPayment("YOUR_PUBLISHABLE_KEY", None)
->then(instance => {
// Use the instance for further operations
})
->catch(err => {
console.error("Failed to load Payment:", err)
})
The function loadStripe
is deprecated and will be removed in future versions. It is a wrapper around loadPayment
with a warning. Please use loadPayment
instead.
loadStripe("YOUR_PUBLISHABLE_KEY", None);
Warning: This function will log a deprecation message in the console.
- Dynamically loads the PaymentSwitch SDK based on the environment (Sandbox or Production).
- Ensures that only a single script instance is added to the page.
- Provides an easy-to-use promise-based API.
The script URL is determined based on your environment and key:
-
Sandbox:
https://sandbox-checkout.doopayment.com/PaymentLoader.js
-
Production:
https://websdk.doopayment.com/PaymentLoader.js
-
Fallback: Determines based on the prefix of the provided key (
pk_prd_
).
The loadPayment
function ensures that the PaymentLoader.js
script is added only once to the page. Adding multiple script tags may lead to unexpected behavior. If a script is already present, the function will issue a warning and use the existing script.
Contributions are welcome! Please ensure that your changes align with the existing code style and add appropriate documentation.
This project is licensed under the Apache License. See the LICENSE file for details.