Paypal Payflow专业图书馆

问题描述:

我已经有一个快速结账与我的Codeigniter应用程序集成。现在我想集成无缝PayPal,我收集CC信息并将其传递给PayPal(通过后端),一旦一切都被批准,我的应用程序会向用户显示。所有这些都没有去过Paypal的网站。Paypal Payflow专业图书馆

我知道贝宝给出了一堆示例代码,但他们有很多不同的产品做广告来做同样的事情。

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

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

我在CodeIgniter中建立了一个电子商务网站,同时做了无缝贝宝集成。

当我做狩猎时,似乎没有任何suuuuuuper-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.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://。

+1

谢谢艾伦! 这就是我正在寻找的..它会帮助我很多从这个想法开始,也许创建一个很好的包装库,我们也可以在未来的CI项目中使用。 如果您有任何其他提示/提示/事物不适应,请告诉我。 – Obaid 2010-06-10 16:23:44

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

此外,如果您已经将快速结帐集成到一起,那么您应该使用ssl证书,对吗?