Guides
Payment Conditions
Some Asset Types such as tokens or closed-loop cards may require conditional operator approval. Merchant integrations are required to support Payment Conditions for these asset types in order for them to be accepted for payment.
Examples of Payment Conditions include:
- The merchant needs to confirm proof of identification for age-restricted purchases.
- The merchant needs to confirm that a promotional item was purchased.
- The patron needs to confirm the payment from their Centrapay integrated app.
Implementation
In order to support Payment Conditions, the merchant integration must extend Centrapay's payment protocol by creating the Payment Request with the conditionsEnabled flag set to true.
The example flow below assumes that the merchant integration has first connected with the patron using the QR Code Flow for Merchants or the Barcode Flow for Merchants.
sequenceDiagram
autonumber
participant Patron
participant POS
participant Centrapay
Patron->>POS: Connect with Patron
POS->>Centrapay: Create Payment Request (with conditionsEnabled = true)
loop Poll for Payment Confirmation
POS->>Centrapay: Get Payment Request
alt Pending Condition Exists
note over POS: ❓ Prompt Merchant to Accept or Decline Condition
note over Patron: Inform Patron of Condition
POS->>Centrapay: Merchant Accepts Condition
else Payment Request status is paid
note over POS: Stop Polling for Confirmation
end
end
note over POS: ✅ Display Successful Payment
note over Patron: ✅ Display Successful Payment
When Payment Conditions are present on a Payment Request, merchant integrations and consumer apps need to negotiate them with their respective parties using the status of each condition.
Prompt
Merchant integrations should prompt the terminal operator to accept or decline any conditions that have status
awaiting-merchant.Consumer apps should inform the patron to accept or decline any conditions that have status
awaiting-patron.Inform
Merchant integrations should inform the terminal operator of any conditions that have status
awaiting-patronusing themessageprovided with the condition.Consumer apps should inform the patron of any conditions that have status
awaiting-merchantusing themessageprovided with the condition.Repeat the above steps when polling shows conditions have changed.
Additional Behaviors
The payment request status must always be polled after accepting or declining a condition as these actions may trigger the additional behaviors below.
- Conditions can be linked such that they are added or voided due to state changes on the Payment Request. Note that accepting or declining a voided condition will fail.
- The Patron Not Present extension may prevent the presentation of conditions that are impossible to satisfy such as checking photo ID.