Библиотека Paypal Payflow pro


У меня уже есть экспресс-проверка, интегрированная с моим приложением Codeigniter. Теперь я хочу интегрировать бесшовную систему paypal, где я собираю информацию о CC и передаю ее в Paypal (через серверную часть), и как только все будет одобрено, мое приложение покажет это пользователю. Все это без какого-либо перехода на веб-сайт Paypal.

Я знаю, что Paypal предоставляет кучу примеров кода, но у них так много разных продуктов, которые рекламируют одно и то же.

Есть ли какая-нибудь обертка библиотека на PHP, которую я могу использовать для обработки всего этого?

Какое проектное решение требуется для перехода на такую систему? Понадобятся ли мне для этого SSL-сертификаты?

Author: Obaid, 2010-06-08

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://.

 2
Author: Alan Christopher Thomas, 2010-06-09 15:05:06

Я почти уверен, что независимо от того, что ваш веб-сайт принимает конфиденциальные данные (например, номер кредитной карты), вам нужен ssl-сертификат. Если только они не находятся на чьем-то другом сервере (paypal.com), вам нужно позаботиться об этом. И, как вы сказали, вы не хотите отправлять их в paypal.com , так что да, он тебе понадобится.

Кроме того, если у вас уже интегрирована экспресс-проверка, вы все равно должны использовать для этого ssl-сертификат, верно?

 0
Author: Matthew, 2010-06-08 22:59:06