When to use HPP
Choose HPP when raw card numbers and CVC values must not enter your checkout or backend. Your merchant server does not send card data in an HPP request. Your server still owns order fulfilment, idempotency, and final-status handling. HPP supports card payments. Apple Pay and Google Pay are not available on HPP. Do not sendpayment_method_data or a selected method in the HPP create request.
Use the Direct API for wallet integrations. Apple Pay and
Google Pay are Experimental: their support and this guidance are still being
refined and are not final.
Prerequisites
Complete the shared setup in Authentication.1. Create a Payment
Reuse the exact
merchant_customer_id for the same customer. Never use an
email, phone, login, name, order/payment/attempt ID, or fresh per-payment UUID.
Case and whitespace are significant; the value must be nonblank, contain
1–255 Unicode scalar values, and contain no U+0000.
Use an HTTPS return_url. A parsed URI using HTTP, javascript:, or another
scheme, or without a valid host, returns 400 parameter_invalid with
param: return_url before a Payment is created. Malformed URI text returns
400 request_body_invalid. Host validation checks URL syntax; your domain
does not need to be on a Flowlix allowlist, and no DNS lookup is performed.
Integrations that previously sent HTTP or custom-scheme return URLs must
switch to HTTPS.
You can supply optional billing_details when creating the Payment.
These details are forwarded for the payment; shoppers cannot edit them on
the hosted card-entry page. The editable cardholder-name field is separate
from the billing profile. The
API reference
contains the complete request schema.
2. Store the response and redirect
A create returns201 Created with the current Payment state. Store its id
before taking further action. The initial state is one of:
For example, a Payment ready for the hosted browser flow is:
status: REQUIRES_ACTION, and use the
exact opaque next_action.redirect_url. Flowlix collects the card details on
the hosted page. 3D Secure may be presented during that hosted flow when
required by the payment provider. A PENDING or FAILED response has no
immediate shopper redirect.
payment_method: null means the shopper’s actual method is unknown, not card.
Read any later masked card details from payment_method.card, as explained in
Payment method and card details.
For Sandbox card entry and the amounts that select each outcome, see
Sandbox testing.
While the Payment is REQUIRES_ACTION, retrieve it periodically. If its latest
next_action.redirect_url changes, send the browser to the new URL. Do not
repeatedly redirect the same browser to an unchanged URL.
3. Handle the browser return
Flowlix sends the customer toreturn_url after the hosted browser flow.
4. Confirm the final status
PENDING, REQUIRES_ACTION, or
PROCESSING. Stop when it reaches:
For polling intervals and every status, see
Payment lifecycle.
The optional
payment_method.card block may be omitted or null even after a
successful HPP payment. Confirm the result from status; do not wait for card
details before fulfilment. See
optional card details.
Safe retries
Flowlix retries eligible hosted-order creation failures in a bounded burst. An uncertain creation is not treated like a safe failure before direct-payment execution: an executable hosted page may already exist. A returnedPENDING
Payment stays unresolved; retrieve it rather than creating a replacement.
If an earlier creation attempt was uncertain, a later provider rejection does
not prove that no hosted order exists. Flowlix preserves that uncertainty rather
than turning it into a failed Payment solely from the later rejection.
If the create request times out or returns a transient HTTP error, retry with
the same Idempotency-Key and an equivalent effective request identity. A
changed business attempt uses a new key. See Idempotency.
Next steps
- Create a Refund after a test Payment succeeds.
- Submit and retrieve a Payout.
- Receive Payment and Refund events.
- Add complete API error handling.