6

我已经有一个与我的 Codeigniter 应用程序集成的快速结帐。现在我想集成无缝的贝宝,在其中收集 CC 信息并将其传递给贝宝(通过后端),一旦所有内容都获得批准,我的应用程序就会向用户显示。所有这一切都无需访问 Paypal 的网站。

我知道 Paypal 提供了一堆示例代码,但他们有很多不同的产品宣传做同样的事情。

PHP中是否有任何包装库可用于处理所有这些?

迁移到这样的系统涉及什么样的设计决策?我需要 SSL 证书吗?

4

2 回答 2

4

我在 CodeIgniter 中建立了一个电子商务网站,同时也进行了 Paypal 的无缝集成。

当我进行搜索时,似乎没有任何 suuuuuper-pretty 面向对象的包装器,但我确实注意到了一些很好的尝试。

我的解决方案最终有点乏味。我从这里下载了 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.phprequires 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 保护客户计算机和您的服务器之间的传输,因此当它通过所有服务器和路由器(或通过 wifi 嗅探)时,他们的 CC 信息无法被读取。因此,只需确保在您用于获取抄送信息的表单上,表单提交到 https:// 而不是不安全的 http://。

于 2010-06-09T15:05:06.633 回答
0

我很确定,如果您的网站正在获取敏感数据(即信用卡号),那么您需要一个 ssl 证书。除非他们在其他人的服务器 (paypal.com) 上,否则您需要注意这一点。而且,就像您说的,您不想将它们发送到 paypal.com,所以是的,您需要一个。

此外,如果您已经集成了快速结帐,那么无论如何您都应该使用 ssl 证书,对吧?

于 2010-06-08T22:59:06.840 回答