Я создал сайт электронной коммерции в CodeIgniter, также выполняя бесшовную интеграцию с Paypal.
Похоже, что не было никаких suuuuuper-симпатичных объектно-ориентированных оболочек, когда я охотился, нодействительно заметил несколько удачных попыток.
Мое решение оказалось немного мягким.Я загрузил PHP API здесь: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip
Я сохранил файл CallerService.php
как application/helpers/paypal_helper.php
и добавил его в application/config/autoload.php
, чтобы вставить его в приложение.
Теперь,CallerService.php
требуется constants.php
, поэтому вам нужно либо скопировать и вставить его, либо включить файл constants.php
в свой каталог помощников.Я просто скопировал и вставил.Затем обязательно настройте все константы для вашей учетной записи.
После настройки мой код выглядит следующим образом:
$nvp_query_string = '&PAYMENTACTION=Sale'
. '&AMT='.urlencode($order->total)
. '&CREDITCARDTYPE='.urlencode($this->input->post('credit_card_type'))
. '&ACCT='.urlencode($this->input->post('acct'))
. '&EXPDATE='.urlencode(str_pad($this->input->post('exp_date_month'), 2, '0', STR_PAD_LEFT).'20'.$this->input->post('exp_date_year'))
. '&CVV2='.urlencode($this->input->post('cvv2_number'))
. '&FIRSTNAME='.urlencode($first_name)
. '&LASTNAME='.urlencode($last_name)
. '&STREET='.urlencode($order->billing_address_1)
. '&CITY='.urlencode($order->billing_city)
. '&STATE='.urlencode($order->billing_state)
. '&ZIP='.urlencode($order->billing_zip)
. '&COUNTRYCODE=US&CURRENCYCODE=USD';
$response = hash_call('doDirectPayment', $nvp_query_string);
if (strpos(strtoupper($response['ACK']), 'SUCCESS') !== false) {
// Product purchase was successful.
}
else {
// Product purchase was unsuccessful.
// The Paypal response will be in $response['ACK'].
// The Paypal error message to show the customer will be in $response['L_LONGMESSAGE0'].
}
Это не слишком элегантно, но определенно работает хорошо.
Кроме того, вам ОПРЕДЕЛЕННО нужен сертификат SSL.Их можно купить примерно за 30 долларов за один домен.Сначала их немного сложно настроить, но вы не можете пропустить этот шаг.SSL защищает передачу между компьютером клиента и вашим сервером, поэтому его информация CC не может быть прочитана, поскольку она проходит через все серверы и маршрутизаторы (или перехватывается через wifi) по пути.Итак, просто убедитесь, что в форме, которую вы используете для получения информации CC, форма отправляется на https: //, а не на незащищенный http: //.