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