Tôi đã xây dựng một trang web thương mại điện tử trong CodeIgniter, cũng làm tích hợp Paypal liền mạch.
Dường như không có bất kỳ trình bao bọc theo hướng đối tượng suuuuuper-pretty nào ở đó khi tôi đi săn, nhưng tôi đã nhận thấy một số nỗ lực tốt.
Giải pháp của tôi đã kết thúc một chút nhạt nhẽo. Tôi tải về các API PHP từ đây: https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_NVP_Samples.zip
Tôi đã lưu tập tin CallerService.php
như application/helpers/paypal_helper.php
và thêm nó vào application/config/autoload.php
để kéo nó vào ứng dụng.
Hiện tại, CallerService.php
yêu cầu constants.php
, vì vậy bạn cần phải sao chép và dán vào hoặc bao gồm tệp constants.php
trong thư mục người giúp đỡ của bạn. Tôi chỉ cần sao chép và dán. Sau đó, hãy chắc chắn định cấu hình tất cả các hằng số cho tài khoản của bạn.
Khi đã thiết lập, mã của tôi chỉ nhìn như thế này:
$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'].
}
Nó không quá sang trọng, nhưng nó chắc chắn hoạt động tốt.
Ngoài ra, bạn chắc chắn cần có chứng chỉ SSL. Đây có thể được mua với giá $ 30 hoặc hơn cho một tên miền duy nhất. Ban đầu họ khó thiết lập một chút, nhưng bạn không thể bỏ qua bước này. SSL bảo vệ truyền tải giữa máy tính của khách hàng và máy chủ của bạn, vì vậy thông tin CC của họ không thể đọc được khi nó đi qua tất cả các máy chủ và bộ định tuyến (hoặc ngửi qua wifi) trên đường đi. Vì vậy, chỉ cần đảm bảo rằng, trên biểu mẫu bạn sử dụng để lấy thông tin CC, biểu mẫu gửi tới https: // chứ không phải http: // không an toàn.
Cảm ơn Alan! Đó là những gì tôi đang tìm kiếm .. nó sẽ giúp tôi rất nhiều để bắt đầu từ suy nghĩ này và có lẽ tạo ra một lib wrapper tốt đẹp mà chúng tôi cũng có thể sử dụng trong các dự án CI trong tương lai. Nếu bạn có bất kỳ mẹo/gợi ý nào khác/những điều cần không rơi vào xin vui lòng cho tôi biết. – Obaid