Библиотека Paypal Payflow pro
У меня уже есть экспресс-проверка, интегрированная с моим приложением Codeigniter. Теперь я хочу интегрировать бесшовную систему paypal, где я собираю информацию о CC и передаю ее в Paypal (через серверную часть), и как только все будет одобрено, мое приложение покажет это пользователю. Все это без какого-либо перехода на веб-сайт Paypal.
Я знаю, что Paypal предоставляет кучу примеров кода, но у них так много разных продуктов, которые рекламируют одно и то же.
Есть ли какая-нибудь обертка библиотека на PHP, которую я могу использовать для обработки всего этого?
Какое проектное решение требуется для перехода на такую систему? Понадобятся ли мне для этого SSL-сертификаты?
2 answers
Я создал сайт электронной коммерции в CodeIgniter, а также сделал бесшовную интеграцию с Paypal.
Когда я охотился, там, похоже, не было никаких симпатичных объектно-ориентированных оболочек, но я заметил несколько хороших попыток.
Мое решение оказалось немного мягким. Я скачал 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 не могут быть прочитаны, когда они проходят через все серверы и маршрутизаторы (или вынюхиваются через Wi-Fi) по пути. Поэтому просто убедитесь, что в форме, которую вы используете для получения информации о CC, форма отправляется по адресу https://, а не по незащищенному http://.
Я почти уверен, что независимо от того, что ваш веб-сайт принимает конфиденциальные данные (например, номер кредитной карты), вам нужен ssl-сертификат. Если только они не находятся на чьем-то другом сервере (paypal.com), вам нужно позаботиться об этом. И, как вы сказали, вы не хотите отправлять их в paypal.com , так что да, он тебе понадобится.
Кроме того, если у вас уже интегрирована экспресс-проверка, вы все равно должны использовать для этого ssl-сертификат, верно?