PG Token Flow
Merchants can get access to the secure, one-time use card payment token that is approved for this transaction in the form of a PG Token (which their card-processing PG has provided for this card).
This is ideal for merchants that do not want to deal with PCI-compliance and merchants using any of the supported PGs below:
- Stripe
name: stripe
- Xendit
name: xendit
- PayMaya
name: paymaya
- PayMongo
name: paymongo
- Checkout.com
name: checkout
- Omise
name: omise
Integration Steps
1. Request access token (Server-side) as described earlier
2. Initialize OpenFabric SDK (Client-side)
Merchant will now initialize OpenFabric SDK for PG Token Flow. For getting a PG Token, they should also furnish required information about their Payment Gateway (name of the PG, Sharable Public Key).
2.1 Add dependency
Merchant to include OpenFabric Merchant SDK js as a dependency to their payment application.
<script type="module" src="https://unpkg.com/@openfabric/[email protected]/dist/index.umd.min.js"></script>
2.2 Add a placeholder for BillEase's button
Merchant to define where they want OpenFabric's SDK to present BillEase button on their payment page.
<div id="bnpl-button"></div>
2.3 Initialize SDK
Merchant will now initialize the OpenFabric SDK.
Initializing OpenFabric SDK for PG Token Flow will require:
- Access token (generated in step 1)
- Order details (purchase context, customer billing/shipping info, etc.)
- Callback URLs (success and failure URLs, etc.)
- Payment Gateway account information (name of supported PG, Shareable Public Key, etc.)
Sample of initializing SDK:
const { OpenFabric } = OpenFabricMerchantSDK;
const initializeOrder = () => {
// Get order details
}
// Pass order related information to SDK.
const {
shipping_address,
billing_address,
customer_info,
item,
pg_info
} = initializeOrder();
// Payment Gateway access token handler
const tokenHandler = (token: string) => {
// Process your token here
};
// Initialize OpenFabric SDK with all configurations
const openFabric = OpenFabric(ACCESS_TOKEN, // access token from backend
"https://example-shop.ph/of/result", // optional callback url for a successful transaction
"https://example-shop.ph/of/cancel", // optional callback url for a cancelled transaction
)
.setDebug(true) // log diagnostic messages during integration
.setEnvironment(Environment.sandbox) // dev, sandbox, production
.setPaymentMethods(["billease"]);
// Payment context and order information
openFabric.createOrder(
{
customer_info,
amount: 2300,
currency: "PHP",
merchant_reference_id,
transaction_details: {
shipping_address,
billing_address,
items: [item],
tax_amount_percent: 10,
shipping_amount: 10,
original_amount: 130
},
pg_name: pg_info.payment_gateway_name,
pg_publishable_key: pg_info.payment_gateway_publish_key
}
)
// Button presentment and redirect handling instructions
openFabric.renderButton("bnpl-button"); // id of the placeholder div where openfabric button gets rendered
// Final call to apply all the settings above
openFabric.initialize();
Once OpenFabric SDK is initialized, the SDK will now present BillEase's button in the section that was configured.
When a customer clicks on it, OpenFabric SDK will redirect to BillEase's payment flow.
3. Fetch and process card with PG
When BillEase successfully approves a transaction, a one-time use card, PG token, is generated specifically for this transaction by using merchant's PG credentials submitted in Step #2.
This token is passed back to the merchant as part of the redirect querystring as txn_pg_token
.
The merchant should simply use the PG Token to charge the card with their PG.