PayPal Payflow Pro库
-
24-10-2019 - |
题
我已经与我的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证书为此,对吗?