Заданием было внедрить систему оплаты с использованием кредитных карт и поддержкой регулярных платежей, например Chargebee. Клиент при этом не хотел чтобы какие-либо платежные данные проходили через их сервер, но требовалось отмечать успех операции в базе данных.
Chargebee предоставляет живой и тестовый сайты, что очень удобно для настройки и тестирования. Chargebee Checkout легко конфигурируется в аккаунте и подключается на сайт с помощью Drop-in скриптов.
Но до этого необходимо в своём Chargebee аккаунте:
1. Настроить правила выставления счетов ( Billing information and settings )
2. Выбрать способы оплаты ( Payment methods )
Интеграцию с Chargebee можно реализовать по примеру, взятому с GITHUB. Используем Drop-in Script Based Checkout. Добавляем на страницу с кнопкой «Subscribe» скрипт с примера и изменяем под себя:
//file with “Subscribe” button
<script>
document.addEventListener("DOMContentLoaded", function() {
var cbInstance = Chargebee.getInstance();
cbInstance.setCheckoutCallbacks(function(cart) {
return {
loaded: function() {
console.log("checkout opened");
},
close: function() {
console.log("checkout closed");
},
success: function(hostedPageId) {
// Hosted page id will be unique token for the checkout that happened
// You can pass this hosted page id to your backend
// and then call our retrieve hosted page api to get subscription details
// Custom ajax for backend
$.ajax({
type: "POST",
url: "subscribe.php",
data: { hostedPageId: hostedPageId},
success: function(msg){
console.log(msg);
}
});
},
step: function(value) {
// value -> which step in checkout
console.log(value);
}
}
});
});
</script>
В случае успеха, возвращается hostedPageId, который можно использовать, если необходима дальнейшая обработка данных, с помощью Chargebee API . Необходимо скачать с GITHUB и подключить в проект Chargebee PHP Client Library - API V2, указать API ключи.
//subscribe.php
<?php
require_once 'chargebee-php/lib/ChargeBee.php';
define('CB_SITE', 'your-site-42318136-test');
define('CB_API_KEY', 'test_dcdfxEmCZhYxLLqK8Jg0euRhevZNQkKBm');
if ($_POST['hostedPageId']) {
ChargeBee_Environment::configure(CB_SITE,CB_API_KEY);
$result = ChargeBee_HostedPage::retrieve($_POST['hostedPageId']);
$hostedPage = $result->hostedPage()->getValues();
$subscription = $hostedPage['content']['subscription'];
$customer = $hostedPage['content']['customer'];
...
}
….