You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Having implemented PayZen, I have seen the stark inconsistencies and lack of structure in the codebase first hand.
It is clear that the code base has organically grown over time with little guidance.
In order to incentivize developers all over the world to implement and contribute more payment gateways, and thus, make ERPNext more useful to more businesses, some guidance and a shared mental model across payment gateways is in order.
Overview
This excalidraw link tries to identify the high level interaction between business logic (as implemented on the RefDoc [not necessarily Payment Request]) and the payment logic (as implemented on the Payment Gateway Controller).
It further tries to draw a distinction between two-step payments, i.e. mandates of some sort, and one step singular payments, i.e. charges. This fundamental distinction clarifies which state needs to be managed where and separates concerns into flow-related initiating and processing methods.
Motivation
Having implemented PayZen, I have seen the stark inconsistencies and lack of structure in the codebase first hand.
It is clear that the code base has organically grown over time with little guidance.
In order to incentivize developers all over the world to implement and contribute more payment gateways, and thus, make ERPNext more useful to more businesses, some guidance and a shared mental model across payment gateways is in order.
Overview
This excalidraw link tries to identify the high level interaction between business logic (as implemented on the RefDoc [not necessarily Payment Request]) and the payment logic (as implemented on the Payment Gateway Controller).
It further tries to draw a distinction between two-step payments, i.e. mandates of some sort, and one step singular payments, i.e. charges. This fundamental distinction clarifies which state needs to be managed where and separates concerns into flow-related initiating and processing methods.
https://excalidraw.com/#json=VzKNVyFcXqBFqkTi0he20,8pftc53H3Gu9efjxYaM0WA
Further Work
./checkout?ref=<tx ref>
"Monkey-patch-comply" current gateways to that controller (without compromising the controller)Further in the future
The text was updated successfully, but these errors were encountered: