私はCodeIgniterでeコマースサイトを構築し、Paypalとのシームレスな統合も行いました。
私が狩りをしたとき、そこにはsuuuuuper-かなりオブジェクト指向のラッパーはなかったようですが、私はいくつかの良い試みに気づきました。
私の解決策は少し当たり障りのないものになってしまいました。ここからPHPAPIをダウンロードしました:
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情報を取得するために使用するフォームで、フォームがセキュリティで保護されていないhttp://ではなくhttps://に送信されることを確認してください。