Прежде чем приступать к разработке и подключению подключению платёжной системы, лучше создать тестовый аккаунт и протестировать оплату.
Зарегистрировать тестовый аккаунт можно по ссылке - https://www.checkout.com/get-test-account (регистрация для жителей России и Беларуси доступна)
После регистрации тестового или реального (live) аккаунта переходим по ссылке https://dashboard.checkout.com
Для входа вводим указанный при регистрации email, потом пароль. После авторизации происходит перенаправление на страницу https://dashboard.sandbox.checkout.com. Далее переходим по ссылке Developers (https://dashboard.sandbox.checkout.com/developers/get-started). На этой странице после генерации ключей и получения токена, получим тестовый номер карты Visa и пример request-запроса оплаты.
Итак, после того, как получим public_key, secret_key, token и данные по Visa, система сгенерирует Request payment. Пример запроса:
curl -i -X POST \ https://api.sandbox.checkout.com/payments \ -H 'Authorization: Bearer Значение_Bearer' \ -H 'Content-Type: application/json' \ -d '{ "source": { "type": "token", "token": "Значение_token" }, "amount": 6540, "currency": "USD", "processing_channel_id": "pc_значение_pc", "reference": "get started guide", "description": "Set of 3 masks", "capture": true, "customer": { "email": "brucewayne@gmail.com", "name": "Bruce Wayne", "phone": { "country_code": "+1", "number": "415 555 2671" } }, "shipping": { "address": { "address_line1": "Checkout.com", "address_line2": "90 Tottenham Court Road", "city": "London", "state": "London", "zip": "W1T 4TJ", "country": "GB" }, "phone": { "country_code": "+1", "number": "415 555 2671" } }, "3ds": { "enabled": false, }, "success_url": "http://example.com/payments/success", "failure_url": "http://example.com/payments/fail", "payment_ip": "значение_ip", "metadata": { "coupon_code": "NY2018", "partner_id": 123989 } }'
Если вы используете Laravel, то в экшне оплаты, для отправки запроса можем использовать фасад Http. Пример:
$response = Http::withHeaders([ 'authorization' => $this->credentials['secret_key'], ])->post('https://api.checkout.com/hosted-payments', [ 'amount' => (float) $amount * 100, 'currency' => 'USD', 'reference' => $transactionNumber, 'description' => 'Subscription To receive services of ' . config('app.url'), 'billing' => [ 'address' => [ 'country' =>strtoupper(optional(auth()->user())->country) ?? 'UA', ], ], 'customer' => [ 'name' => auth()->user()->name, 'email' => auth()->user()->email, ], 'success_url' => url('/dashboard'), 'failure_url' => url('/price'), 'cancel_url' => url('/price'), ]); $responseData = $response->json(); dd($responseData);
Помимо маршрута оплаты также необходимо реализовать еще 2 маршрута: success_url (при успешной оплате происходит перенаправление на этот url) и failure_url (для перехвата ошибок)