Paypal Payflow Pro библиотека - PullRequest
       10

Paypal Payflow Pro библиотека

6 голосов
/ 08 июня 2010

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

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

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

Какое проектное решение используется при переходе на такую ​​систему?Нужны ли для этого сертификаты SSL?

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

Я создал сайт электронной коммерции в 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: //.

0 голосов
/ 09 июня 2010

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

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

...