7/10/2014 5:38:01 PM
be consistent (and explicit)
|
7/10/2014 5:19:34 PM
to encapsulate (hide) required knowledge about the state machines
and refactor the payment code to rely on those new abstractions.
(We could remove some of the hardcoing existing in these classes by introducing additional attributes on the state machine xml (isTerminal, isSuccess, isInit,...)
but there will always be a bootstrap issue to solve, and so those classes need to exist)
|
|
7/10/2014 12:13:36 AM
where the underlying transaction was succesfull
(This ensure that any PaymentControlPluginApi onSuccessCall() will end up being called)
Part of this work included:
- adding the paymentAttemptId in the transactions tables
- adding unique index for invoice_payments(payment_id, type) (to ensure idenpotency of retry calls, but plugin also checks on its end)
|
|
|
7/8/2014 12:19:51 PM
Pierre-Alexandre Meyer <pierre@mouraf.org>
|
7/8/2014 11:54:23 AM
Pierre-Alexandre Meyer <pierre@mouraf.org>
|
7/8/2014 11:01:03 PM
(by moving them into a PAYMENT_FAILURE state).
Needed to make some chirurgical changes in EntitySqlDaoWrapperInvocationHandler and UUIDCollectionBinder to allow
updating a bunch of rows at once while correctly creating audit and history.
|
|