Content
We describe in this page the means implemented to ensure consistency between the IS payment methods and Payline.
Events that may cause inconsistencies are related to:
If the payment partner IS does not answer or the connection goes back online, Payline makes new attempts.
The maximum number of attempts depends on the method of payment.
When the last attempt fails, the means of payment is said to be inaccessible.
In this case, Payline:
The ability to relaunch demand depends both on the type of transaction and the means of payment.
Function | comments |
InitializeTransaction | 3 tests in case of - no response - return to error After failure on these attempts: ERROR return code 02102 'Payment partner unreachable' |
getTransactionStatus | at least 5 trials in case of no response - no response - technical error After failure on these attempts: ERROR return code 02013 'To be canceled' |
confirmTransaction captureTransaction | If the payment method handles multiple requests (eg Idempotency Paypal), at least 5 attempts in case of: - no response - technical error After failure on these attempts, or an error and no handling of multiple requests or an error in processing the response: ERROR return code 02013 'To be canceled' |
We are talking about non-compliant response when the response received does not allow Payline to continue processing. This is the case, for example, when the means of payment uses an unplanned / documented code, does not return an expected parameter or with an empty or non-planned value, etc.
On receipt of a non-compliant reply from the means of payment, Payline:
Function | comments |
InitializeTransaction | ERROR code retour 02101 ‘Internal error’. |
getTransactionStatus | ERROR return code 02013 'To be canceled' if financial risk proved |
confirmTransaction captureTransaction | ERROR return code 02013 'To be canceled' if financial risk proved |
On internal error Payline engages the following actions:
Function | comments |
InitializeTransaction | ERROR code retour 02101 ‘Internal error’. |
getTransactionStatus | ERROR return code 02013 'To be canceled' if financial risk proved |
confirmTransaction captureTransaction | ERROR return code 02013 'To be canceled' if financial risk proved |
If the buyer returns to the pages of Payline using the browser's return page function and the payment web token is not expired, Payline queries the payment method to know the status of the file and sets update the data TRANSACTION in BD.
If the payment record is processed (everything except IN_PROGRESS) then Payline:
If the file is IN_PROGRESS and the payment web token is not expired Payline returns the buyer to the payment method pages.
If the payment web token has expired, Payline displays a message stating that the maximum payment period has passed and that the buyer must start paying again. Payline can not return to the merchant's pages
Payline detects the absence of return of the buyer on its pages at the end of the payment web session.
Payline queries the status of the payment file with the payment partner.
If the payment record is processed (everything except IN_PROGRESS) then Payline:
If the file is still pending on the payment side, Payline:
Some means of payment do not allow Payline to know the final state of the transaction after a given time (because no notification of the partner following the analysis of the request for funding).
These transactions fail to state ERROR with return code 02015 - transaction delegated to partner
Other transactions have a temporary state at the end of the transaction. It is the partner who notifies Payline of the evolution of the state of this transaction. During the wait, the transaction switches to the ON_HOLD_PARTNER state with the 02016 return code.
It's about identifying and dealing with cases where reconciliation reports a payment made while Payline has not treated it as such.
Payline assigns an 'ERROR' state to this transaction with a return code specifying that it is 'manually resume' by the Payline platform team.
Code retour : ‘02009’ ERROR,
However, this case should not occur because Payline makes sure to have a return from the partner before finalizing the transaction.
And, in the case where this finalization can not be carried out, the transaction is placed in the state "To be reversed in fallback mode".
Code retour : ‘02013’ ERROR,
A batch periodically retrieves the transactions to be straightened (TO_BE_REVERSED).
The actions to be taken depend on the means of payment.
They may, however, be formalized according to the following characteristics of the means of payment:
Query the status of the transaction to straighten
If the transaction is accepted partner side, Payline makes a request for cancellation of the authorization or even a request for refund of payment.
Otherwise, Payline does not request any action from the partner
Payline transfers the transaction to 'REVERSE' if the cancellation or refund request is executed correctly or if the transaction status does not require any adjustment.
The cancellation or refund request must be associated with the original authorization (as for the synchronous part).
Payline passes the transaction to 'Recovery' (REVERSED) if
Periodically, Payline establishes for each means of payment the two payment lists 'A manually rectify':
List of information currently identified:
- external_id Payline
- reference of the order
- partner_unique_id (reference of the trs in the SI partner)
- amount
- timestamp
- trading id
- corporate_name
- card_code
- buyer's details
It consists in identifying all the transactions with the status "TO_BE_REVERSED_IN_FALLBACK_MODE".
This search is carried out on sliding 10j (so on the nominal).
Several arguments can be made:
- card_code => if specified as input, only transactions related to this card_code are reported and transmitted. If absent, all transactions are taken into account, without distinction.
- day_partition / month_partition => default, will be absent. However, this will allow targeted extraction if needed; even use on the basis of historization
The result of the treatment is rendered in a file in CSV format. If more than one card_code is requested, the transactions will be grouped by card_code. Within groups, transactions are sorted from the most recent (top of the group) to the oldest (bottom).
The treatment is done daily, launched around 6am.