Magento1 (OpenMage LTS) headless payments
Historically, Magento1 (now OpenMage LTS) does not support headless payments. Even though some payment providers are using APIs from their module, most of them often rely on the user's session to persist meaningful information across checkout steps. This guide explains how to expose an existing Magento payment method for headless usage in Front-Commerce.
Front-Commerce’s Magento module provides a generic way to expose Magento payment modules headlessly and supports the relevant Front-Commerce payment workflows.
Supported Payment platforms
Our Magento1 integration currently provides native adapters for the platforms below, learn how to install each one of them from the related documentation page:
If you want to use a Payment module not yet listed above, please contact us so we can provide information about a potential upcoming native support for it.
Implement a new Magento1 Payment method
Using the "redirect after order" flow
Payment flows: Redirect after order
- Add your own payment instance on
config.xml
file
First, you need to create your own model implementing the
FrontCommerce_Integration_Model_Headlesspayment_Interface
interface and
register it in your config.xml
file with the following XML node:
<config>
<frontcommerce>
<payment_instances>
<{payment_method_code}>{class_name}</{payment_method_code}>
</payment_instances>
</frontcommerce>
</config>
Don't forget to replace {payment_method_code}
by your payment method code and
{class_name}
by the class names you've just created
- Implement the interface methods in your own model:
isHtml(): Boolean
if your payment return type is HTML content or notisUrl(): Boolean
if your payment return type is URL or notgetValue(Mage_Sales_Model_Order $order): String
return URL or HTML when this payment method is call on frontgetResponseSuccess(String $action, [String] $additionalData): Boolean
Failed or success payment actiongetResponseMessage(String $action, [String] $additionalData): [String]
Failed action message- in success case, return an array of
quote_id
andorder_id
:return [
(int) $additionalData['quote_id'], (int) $additionalData['order_id']
]; - in case of errors, return an array of error messages:
return [{error message}]
- in success case, return an array of
returnAction(String $action, [String] $additionalData): Boolean
Callback after payment, for example, you can add your custom code here for retrieve customer cart after cancel payment
Don't forget to override or update checkoutFlowOf.js
to ensure your payment
code will use the correct client-side checkout flow:
const checkoutFlowOf = (method) => {
if (method === "ops_cc") return "redirectAfterOrder";
if (method === "ops_cc_redirect") return "redirectAfterOrder";
if (method === "payzen_standard") return "redirectAfterOrder";
if (method === "paypal_standard") return "redirectAfterOrder";
+ if (method === "payment_method_code") return "redirectAfterOrder";
if (method === "paypal_express") return "redirectBeforeOrder";
if (method === "buybox") return "redirectBeforeOrder";
if (method.startsWith("adyen_")) return "directOrderWithAdditionalAction";
if (method.startsWith("hipay_")) return "directOrderWithAdditionalAction";
if (method === "payzen_embedded") return "asyncOrder";
return "directOrder";
};
export default checkoutFlowOf;