PayPal Payflow про библиотека

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

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

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

Какое проектное решение вовлечено в миграцию на такую систему? Мне были бы нужны сертификаты SSL для этого?

6
задан Obaid 8 June 2010 в 15:22
поделиться

2 ответа

Я создал сайт электронной коммерции на 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 защищает передачу данных между компьютером клиента и вашим сервером, поэтому информация о его платежной системе не может быть прочитана, поскольку она проходит через все серверы и маршрутизаторы (или прослушивается через Wi-Fi) по пути. Поэтому просто убедитесь, что в форме, которую вы используете для получения информации о CC, форма отправляется на https://, а не на незащищенный http://.

4
ответ дан 17 December 2019 в 07:00
поделиться

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

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

0
ответ дан 17 December 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: