Заданием было  внедрить систему оплаты с использованием кредитных  карт и поддержкой регулярных платежей, например 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'];

...   

 }

          ….