PayPal Payflow Pro Library
-
24-10-2019 - |
質問
CodeIgniterアプリケーションと統合されたExpress Checkoutがすでにあります。次に、CC情報を収集してPayPalに渡す(バックエンド経由)シームレスなPayPalを統合し、すべてが承認されたら、アプリケーションがユーザーにそれを示します。これはすべて、PayPalのWebサイトに行くことができません。
PayPalはサンプルコードをたくさん提供していることを知っていますが、同じことをするために宣伝する非常に多くの異なる製品があります。
PHPのラッパーライブラリは、これらすべてを処理するために使用できるものはありますか?
そのようなシステムへの移行には、どのような設計上の決定が関与していますか?これにはSSL証明書が必要ですか?
解決
CodeIgniterにeコマースサイトを構築し、シームレスなPayPal統合も行っています。
私が狩りをしたとき、そこにはすごいオブジェクト指向のラッパーはありませんでしたが、いくつかの良い試みに気づきました。
私の解決策は少し当たり障りのないものになりました。ここからPHP APIをダウンロードしました:https://cms.paypal.com/cms_content/us/en_us/files/developer/pp_php_nvp_samples.zip
私は保存しました CallerService.php
ASをファイルします 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://ではないことを確認してください。
他のヒント
あなたのウェブサイトが機密データ(すなわちクレジットカード番号)を取得している場合、私はかなり確信しています、そして、あなたはSSL証明書が必要です。他の誰かのサーバー(PayPal.com)にいない限り、それを処理する必要があります。そして、あなたが言ったように、あなたはそれらをPayPal.comに送りたくないので、ええ、あなたはそれを必要とします。
また、Express Checkout Integratedが既にある場合は、とにかくSSL証明書を使用する必要がありますよね?