Halaman ini untuk saat ini hanya tersedia dalam bahasa Inggris.
Checkout.com
Checkout.com Hosted Payments Page, card payments on Checkout.com's hosted page; balance is credited by the server-to-server webhook.
What you need
In the Checkout.com Dashboard:
secret_key: Developers → API keys: the secret key (sk_sbox_…for sandbox,sk_…for live).client_id: thecli_…value in the top right corner of the Settings → Account structure tab. Checkout.com gives every account its own API host (https://<prefix>.api.checkout.com); the prefix is the first eight characters aftercli_, and the panel derives it itself. You can also enter the prefix directly (the subdomain of the base URL shown under Developers → Overview). Left empty, the panel tries the un-prefixedapi.checkout.com.webhook_secret: the signature key you generate in the webhook configuration (see below).
In your panel choose Settings → Payments → Add method → Checkout.com and enter the three values.
Sandbox: enter the sandbox account's sk_sbox_… key and its client_id, and tick sandbox (test) mode; the panel then talks to <prefix>.api.sandbox.checkout.com. Live and sandbox have different client_id values.
Hosted Payments Page has to be enabled on your account; Checkout.com asks you to contact your solution engineer or support for that.
Webhook (required)
Balance is credited only by the webhook Checkout.com sends server to server; the customer's browser return credits nothing. The webhook therefore must be configured on the Checkout.com side:
- Dashboard → Developers → Webhooks → Create configuration.
- Endpoint URL:
https://<your-panel-domain>/payments/checkout_com/callback
- Under Signature key press Generate key and enter the value in the panel as
webhook_secret. (The authorization header key is not checked by the panel; you do not need to generate one.) - Tick these event types:
payment_captured,payment_approved,payment_declined,payment_capture_declined,payment_pending,payment_expired,payment_canceled. - Do this separately for sandbox and live; keys are per environment.
The panel compares each webhook's Cko-Signature header with the HMAC-SHA256 (hex) of the raw body under webhook_secret; a mismatch is rejected with 400. Every verified webhook is acknowledged with 200 within 10 seconds.
Flow
- The customer enters an amount and picks Checkout.com. No phone number is asked for.
- The panel opens a session with
POST /hosted-payments: the amount in minor units (250.00 TRY →25000),reference= our payment reference,capture: true(an approved amount is captured at once),customer_retry.max_attempts: 0(a declined attempt ends the session). The customer is redirected to the page onpay.checkout.com; card entry and 3D Secure happen there. - When the payment finishes, the customer returns through
success_url/failure_url/cancel_urlto the panel's/payments/checkout_com/return, which only forwards to "Add funds". - Checkout.com sends the webhook. On
payment_capturedthe payment completes and the balance is credited (data.amountconverted back from minor units is stored). A second delivery of the sameevt_…id is ignored; balance is never credited twice. - Webhooks may arrive out of order; a
payment_approvedafterpayment_captureddoes not touch the already completed payment.
Statuses
| Event | Result in the panel |
|---|---|
payment_captured |
completed, balance credited |
payment_approved, payment_pending |
pending (awaiting capture / redirect) |
payment_declined, payment_capture_declined |
failed; response_summary goes into the payment memo |
payment_canceled |
failed (customer cancelled) |
payment_expired |
expired |
other events (payment_refunded, payment_voided…) |
leave an open payment pending, never touch a completed one |
Currencies
Your panel currency must be one your Checkout.com account can process (TRY included). Amount conversion follows Checkout.com's rule: JPY, KRW, ISK, VND and the like are whole numbers; BHD, KWD, OMR, JOD, TND, IQD, LYD are divided by 1000; every other currency by 100.
Billing country
Checkout.com requires billing.address.country and a panel does not know its customer's country. The panel first looks at the method's extra.billing_country (two-letter country code); otherwise it sends the country of the panel currency (TRY → TR, USD → US, EUR → DE…). The field can affect risk rules; set it if your market differs.
Common problems
- "Payment could not start: HTTP 401": the key is for the other environment (
sk_sbox_…in live or vice versa) or theclient_idprefix belongs to another account. - Payment succeeded but no balance: the webhook configuration is missing or
webhook_secretis another configuration's key. Check the delivery log under Dashboard → Developers → Webhooks; a 400 from the panel means the signature did not match. Checkout.com retries a failed webhook eight times. - Payment stuck in "pending": only
payment_approvedarrived andpayment_capturedis not ticked. Check the event types; the payment completes by itself once the capture event arrives. billing_address_country_required/currency_invalid: your processing channel does not support that currency; ask Checkout.com.- Card declined in sandbox: use Checkout.com's test cards; real cards do not work in the sandbox.
FollowerHQ