我已经与我的CodeIgniter应用程序集成了Express Checkout。现在,我想集成无缝的贝宝(PayPal),在此我收集CC信息并将其传递给PayPal(通过后端),并且一旦批准了所有内容,我的申请将向用户显示。所有这一切都无法访问PayPal的网站。

我知道PayPal提供了许多示例代码,但是它们有许多不同的产品,可以做同样的事情。

我可以使用PHP中的包装库来处理所有这些吗?

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

有帮助吗?

解决方案

我在Codeigniter中构建了一个电子商务网站,还进行了无缝的PayPal集成。

当我进行狩猎时,似乎没有任何面向对象的包装器,但我确实注意到了一些不错的尝试。

我的解决方案最终有点平淡。我从这里下载了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可以保护客户的计算机和服务器之间的传输,因此,由于沿途,它通过所有服务器和路由器(或通过WiFi嗅出)无法读取其CC信息。因此,只需确保,在您使用CC信息的表单上,表格将提交给https://而不是无安全的http://。

其他提示

我很确定,无论您的网站是否正在获取敏感数据(即信用卡号),您都需要SSL证书。除非他们在别人的服务器上(paypal.com),否则您需要照顾好这些。而且,就像您说的那样,您不想将它们发送到Paypal.com,所以,您需要一个。

另外,如果您已经集成了Express Checkout,则应使用SSL证书为此,对吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top