6

私はすでにCodeigniterアプリケーションと統合されたエクスプレスチェックアウトを持っています。ここで、CC情報を収集して(バックエンド経由で)Paypalに渡すシームレスなペイパルを統合したいと思います。すべてが承認されると、アプリケーションはそれをユーザーに表示します。これはすべて、PaypalのWebサイトにアクセスすることなく行われます。

Paypalがたくさんのサンプルコードを提供していることは知っていますが、同じことを宣伝するさまざまな製品があります。

これらすべてを処理するために使用できるPHPのラッパーライブラリはありますか?

このようなシステムへの移行には、どのような設計上の決定が含まれますか?これにはSSL証明書が必要ですか?

4

2 に答える 2

4

私は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://に送信されることを確認してください。

于 2010-06-09T15:05:06.633 に答える
0

Webサイトが機密データ(クレジットカード番号など)を取得している場合でも、SSL証明書が必要になると確信しています。彼らが他の誰かのサーバー(paypal.com)にいない限り、あなたはそれを世話する必要があります。そして、あなたが言ったように、あなたはそれらをpaypal.comに送りたくないので、ええ、あなたはそれを必要とするでしょう。

また、エクスプレスチェックアウトがすでに統合されている場合は、とにかくそのためにssl証明書を使用する必要があります。

于 2010-06-08T22:59:06.840 に答える