Вопрос

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

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

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

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

Это было полезно?

Решение

Я создал сайт электронной коммерции в 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 файл в вашем каталоге helpers.Я просто скопировал и вставил.Затем обязательно настройте все константы для своей учетной записи.

Как только это будет настроено, мой код будет выглядеть примерно так:

  $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-сертификат, не так ли?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top