Hướng dẫn shopping php id - id php mua sắm

Tìm hiểu cách tích hợp PayPal với hệ thống giỏ hàng PHP và MySQL, cổng thanh toán được sử dụng phổ biến nhất.

Trong hướng dẫn này, chúng tôi sẽ tích hợp PayPal vào hệ thống giỏ hàng hiện có của mình, chúng tôi sẽ tạo cổng thanh toán với PHP và lưu trữ các giao dịch PayPal vào cơ sở dữ liệu MySQL của chúng tôi.

Tôi khuyên bạn nên làm theo hướng dẫn Hệ thống giỏ hàng , vì chúng tôi sẽ sử dụng nó trong hướng dẫn này. Hệ thống giỏ hàng , vì chúng tôi sẽ sử dụng nó trong hướng dẫn này.

PayPal là một trong những cổng thanh toán phổ biến nhất để mua sắm trực tuyến, vậy tại sao bạn không sử dụng nó? Giờ đây, bạn có thể thực hiện thanh toán bằng thẻ ghi nợ và thẻ tín dụng an toàn mà không cần tạo tài khoản PayPal.

Việc tích hợp sẽ cho phép bạn thanh toán với nhiều sản phẩm bằng PayPal, để tính năng này hoạt động chính xác, bạn sẽ cần một địa chỉ (URL) từ xa.

1. Bắt đầu

Nếu bạn đã làm theo hướng dẫn Hệ thống giỏ hàng , bạn sẽ không gặp vấn đề gì với việc thiết lập cơ sở dữ liệu MySQL và môi trường máy chủ, nhưng nếu bạn không có bạn không cần phải: Hệ thống giỏ hàng , bạn sẽ không gặp vấn đề gì với việc thiết lập cơ sở dữ liệu MySQL và môi trường máy chủ, nhưng nếu bạn không có bạn không cần phải:

  • Cài đặt môi trường máy chủ web, tôi khuyên bạn nên XAMPP . XAMPP .
  • Nếu bạn có máy chủ web của riêng mình, bạn cần cài đặt PHP, Apache, MySQL, cURL và phpMyAdmin.
  • Đảm bảo rằng bạn đã bật tiện ích mở rộng PHP cURL, vì tiện ích này sẽ được sử dụng cho IPN của PayPal.

2. Tạo Cơ sở dữ liệu và thiết lập Bảng

Bây giờ chúng ta cần tạo cơ sở dữ liệu và tạo bảng giao dịch mà chúng ta sẽ sử dụng, chúng ta có thể thực hiện việc này với phpMyAdmin.

Điều hướng đến phpMyAdmin (ví dụ: http: // localhost / phpmyadmin /) trong trình duyệt của bạn, nếu bạn đã có cơ sở dữ liệu “shoppingcart”, bạn có thể tiếp tục và nhấp vào nó, nhưng nếu chưa có, bạn cần: < / p>

  • Nhấp vào tab ở trên cùng
  • Dưới, nhập vào hộp văn bản
  • Chọn làm đối chiếu (UTF-8 là mã hóa mặc định trong HTML5)
  • Nhấp vào

Trong khi cơ sở dữ liệu được chọn, hãy nhấp vào tab SQL và thực hiện câu lệnh sau:

SQL

Sao chép

  TẠO BẢNG `giao dịch` (
`id` int (11) NOT NULL AUTO_INCREMENT,
`txn_id` varchar (255) KHÔNG ĐỦ,
`Payment_amount` thập phân (7,2) KHÔNG ĐẦY ĐỦ,
`Payment_status` varchar (30) KHÔNG ĐẦY,
`item_id` varchar (255) KHÔNG ĐỦ,
`item_quantity` varchar (255) KHÔNG ĐẦY,
`item_mc_gross` varchar (255) KHÔNG ĐẦY ĐỦ,
ngày giờ `tạo` KHÔNG ĐẦY ĐỦ,
`payer_email` varchar (255) KHÔNG ĐỦ,
`first_name` varchar (100) KHÔNG ĐỦ,
`last_name` varchar (100) NOT NULL DEFAULT '',
`address_street` varchar (255) KHÔNG ĐỦ,
`address_city` varchar (255) KHÔNG ĐỦ,
`address_state` varchar (255) KHÔNG ĐỦ,
`address_zip` varchar (255) KHÔNG ĐỦ,
`address_country` varchar (255) KHÔNG ĐỦ,
KHÓA CHÍNH (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

BẢNG THAY THẾ `giao dịch` THÊM TỪ KHÓA DUY NHẤT` txn_id` (`txn_id`);  

Thao tác này sẽ tạo bảng với các cột sau:

  • – ID giao dịch duy nhất.
  • – ID giao dịch PayPal.
  • – Tổng số tiền cho tất cả các sản phẩm.
  • – Trạng thái thanh toán, điều này sẽ được cập nhật qua IPN của PayPal.
  • – ID sản phẩm, nếu có nhiều mặt hàng, đây sẽ là danh sách được phân tách bằng dấu phẩy.
  • – Số lượng sản phẩm, nếu có nhiều mặt hàng, đây sẽ là danh sách được phân tách bằng dấu phẩy.
  • – Tổng số tiền của từng sản phẩm (danh sách được phân tách bằng dấu phẩy).
  • – Ngày tạo giao dịch mua.
  • – Email của khách hàng.
  • – Tên của khách hàng.
  • – Họ của khách hàng.
  • – Đường của khách hàng.
  • – Thành phố của khách hàng.
  • – Trạng thái của khách hàng.
  • – Mã ZIP / POST của khách hàng.
  • – Quốc gia của khách hàng.

Trên phpMyAdmin, điều này sẽ giống như sau:

http: // localhost / phpmyadmin /

Giờ chúng tôi đã thiết lập xong cơ sở dữ liệu và bảng, chúng tôi có thể bắt đầu triển khai PayPal vào hệ thống giỏ hàng của mình.

Nếu bạn đã theo dõi Hệ thống giỏ hàng , bạn có thể tiếp tục và chỉnh sửa tệp, nếu không, bạn có thể thêm mã vào trang giỏ hàng của mình. < / p> Hệ thống giỏ hàng , bạn có thể tiếp tục và chỉnh sửa tệp, nếu không, bạn có thể thêm mã vào trang giỏ hàng của mình. < / p>

Chỉnh sửa và tìm:

HTML

Sao chép

  & lt; div class = "button" & gt;
    & lt; input type = "submit" value = "Update" name = "update" & gt;
    & lt; input type = "submit" value = "Đặt hàng" name = "đặt hàng" & gt;
& lt; / div & gt;  

Thao tác này sẽ tạo bảng với các cột sau:

HTML

Sao chép

 & lt; div class = "paypal" & gt;
    & lt; button type = "submit" name = "paypal" & gt; & lt; img src = "https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-100px.png" border = "0" alt = "Biểu trưng PayPal" & gt; & lt; / button & gt;
& lt; / div & gt;  

Thao tác này sẽ tạo bảng với các cột sau:

– ID giao dịch duy nhất.

Sao chép

 . paypal {
text-align: phải;
padding-bottom: 40px;
}
nút .paypal {
display: inline-block;
đệm: 10px 20px 7px 20px;
màu nền: # FFC439;
bán kính đường viền: 5px;
biên giới: không có;
con trỏ: con trỏ;
chiều rộng: 215px;
}
Nút .paypal: di chuột qua {
màu nền: # f3bb37;
}  

Thao tác này sẽ tạo bảng với các cột sau:

– ID giao dịch duy nhất.

– ID giao dịch PayPal.

HTML

Sao chép

  & lt; form action = "your php cart file" method = "post" & gt;
& lt; div class = "paypal" & gt;
& lt; button type = "submit" name = "paypal" & gt; & lt; img src = "https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-100px.png" border = "0" alt = "Biểu trưng PayPal" & gt; & lt; / button & gt;
& lt; / div & gt;
& lt; / form & gt;  

Thao tác này sẽ tạo bảng với các cột sau:

– ID giao dịch duy nhất.

– ID giao dịch PayPal.

Sao chép

  // Đối với mục đích thử nghiệm, hãy đặt giá trị này thành true, nếu được đặt thành true, nó sẽ sử dụng hộp cát paypal
$ testmode = true;
$ paypalurl = $ testmode? 'https://www.sandbox.paypal.com/cgi-bin/webscr': 'https://www.paypal.com/cgi-bin/webscr';
// Nếu người dùng nhấp vào nút thanh toán PayPal ...
if (Isset ($ _ POST ['paypal']) & amp; & amp; $ products_in_cart & amp; & amp;! blank ($ products_in_cart)) {
    // Các biến chúng ta cần chuyển đến paypal
    // Đảm bảo bạn có tài khoản doanh nghiệp và đặt biến "doanh nghiệp" thành email tài khoản doanh nghiệp paypal của bạn
    $ data = array (
        'cmd' = & gt; '_xe đẩy',
        'tải lên' = & gt; '1',
        'lc' = & gt; 'EN',
        'doanh nghiệp' = & gt; '[email protected]',
        'cel_return '= & gt; 'https://yourwebsite.com/index.php?page=cart',
        'tify_url '= & gt; 'https://yourwebsite.com/index.php?page=cart&ipn_listener=paypal',
        'currency_code' = & gt; 'ĐÔ LA MỸ',
        'return' = & gt; 'https://yourwebsite.com/index.php?page=placeorder'
    );
    // Thêm tất cả các sản phẩm có trong giỏ hàng vào biến mảng dữ liệu
    cho ($ i = 0; $ i & lt; count ($ products); $ i ++) {
        $ data ['item_number_'. ($ i + 1)] = $ products [$ i] ['id'];
        $ data ['item_name_'. ($ i + 1)] = $ products [$ i] ['name'];
        $ data ['số lượng_'. ($ i + 1)] = $ products_in_cart [$ products [$ i] ['id']];
        $ data ['amount_'. ($ i + 1)] = $ products [$ i] ['price'];
    }
    // Đưa người dùng đến màn hình thanh toán qua paypal
    header ('location:'. $ paypalurl. '?'. http_build_query ($ data));
    // Kết thúc tập lệnh không cần thực thi bất kỳ điều gì khác
    lối ra;
}  

Thao tác này sẽ tạo bảng với các cột sau:

– ID giao dịch duy nhất. tại đây .

– ID giao dịch PayPal. trang web của họ, bạn cũng có thể tạo tài khoản trên < span class = "l1" target = "_ blank"> trang web hộp cát mà bạn có thể sử dụng cho mục đích thử nghiệm.

– Tổng số tiền cho tất cả các sản phẩm. Hệ thống giỏ hàng , bạn sẽ cần tạo và các biến, chúng cần chứa dữ liệu ở định dạng sau :

– ID giao dịch PayPal.

Sao chép

  // Bên dưới khóa là ID sản phẩm và giá trị là số lượng
$ products_in_cart = array (
1 = & gt; 2, // Sản phẩm có ID 1 có số lượng là 2
2 = & gt; 2
);
// Sản phẩm sẽ giống như sau, bạn có thể thực hiện truy vấn SQL để lấy sản phẩm từ cơ sở dữ liệu của mình
$ products = array (
mảng(
'id' = & gt; 1,
'name' = & gt; 'Đồng hồ thông minh',
'price' = & gt; 15,00
),
mảng(
'id' = & gt; 2,
'name' = & gt; 'Tai nghe',
'price' = & gt; 10.00
)
);  

Thao tác này sẽ tạo bảng với các cột sau:

– ID giao dịch duy nhất.

– ID giao dịch PayPal.

Thêm sau mã PHP mà chúng tôi đã thêm trước đó:

PHP

Sao chép

  // Dưới đây là trình xử lý cho paypal, hãy đảm bảo đặt URL IPN (ví dụ: http://example.com/cart.php?ipn_listener=paypal) trong paypal của bạn tài khoản này sẽ không hoạt động trên máy chủ cục bộ
if (Isset ($ _ GET ['ipn_listener']) & amp; & amp; $ _GET ['ipn_listener'] == 'paypal') {
    // Lấy tất cả các biến đầu vào và chuyển đổi tất cả chúng thành các biến chuỗi URL
    $ raw_post_data = file_get_contents ('php: // input');
    $ raw_post_array = boom ('& amp;', $ raw_post_data);
    $ myPost = array ();
    foreach ($ raw_post_array dưới dạng $ keyval) {
        $ keyval = boom ('=', $ keyval);
        if (count ($ keyval) == 2) $ myPost [$ keyval [0]] = urldecode ($ keyval [1]);
    }
    $ req = 'cmd = _notify-validate';
    $ get_magic_quotes_exists = function_exists ('get_magic_quotes_gpc')? đúng sai;
    foreach ($ myPost dưới dạng $ key = & gt; $ value) {
        if ($ get_magic_quotes_exists == true & amp; & amp; get_magic_quotes_gpc () == 1) {
            $ value = urlencode (dấu gạch ngang ($ value));
        } khác {
            $ value = urlencode ($ value);
        }
        $ req. = "& amp; $ key = $ value";
    }
    // Bên dưới sẽ xác minh giao dịch, nó sẽ đảm bảo dữ liệu đầu vào là chính xác
    $ ch = curl_init ($ paypalurl);
    curl_setopt ($ ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt ($ ch, CURLOPT_POST, 1);
    curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ req);
    curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt ($ ch, CURLOPT_FORBID_REUSE, 1);
    curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Kết nối: Đóng'));
    $ res = curl_exec ($ ch);
    curl_close ($ ch);
    if (strcmp ($ res, 'VERIFIED') == 0) {
        // Giao dịch được xác minh và thành công ...
        $ item_id = array ();
        $ item_quantity = array ();
        $ item_mc_gross = array ();
        // Thêm tất cả số mặt hàng, số lượng và giá vào các biến mảng ở trên
        cho ($ i = 1; $ i & lt; ($ _POST ['num_cart_items'] + 1); $ i ++) {
            array_push ($ item_id, $ _POST ['item_number'. $ i]);
            array_push ($ item_quantity, $ _POST ['số lượng'. $ i]);
            array_push ($ item_mc_gross, $ _POST ['mc_gross_'. $ i]);
        }
        // Chèn giao dịch vào bảng giao dịch của chúng tôi, khi trạng thái thanh toán thay đổi, truy vấn sẽ thực hiện lại và cập nhật nó, hãy đảm bảo cột "txn_id" là duy nhất
        đô la CẬP NHẬT TỪ KHÓA Payment_status = VALUES (Payment_status) ');
        $ stmt- & gt; thực thi ([
            VÔ GIÁ TRỊ,
            $ _POST ['txn_id'],
            $ _POST ['mc_gross'],
            $ _POST ['Payment_status'],
            implode (',', $ item_id),
            implode (',', $ item_quantity),
            implode (',', $ item_mc_gross),
            date ('Y-m-d H: i: s'),
            $ _POST ['payer_email'],
            $ _POST ['first_name'],
            $ _POST ['last_name'],
            $ _POST ['address_street'],
            $ _POST ['address_city'],
            $ _POST ['address_state'],
            $ _POST ['address_zip'],
            $ _POST ['address_country']
        ]);
    }
    lối ra;
}  

Về cơ bản, những gì xảy ra ở đây là mỗi khi trạng thái của giao dịch PayPal thay đổi, mã trên sẽ thực thi, nhưng để điều này hoạt động chính xác, chúng tôi cần thêm URL IPN vào tài khoản doanh nghiệp PayPal của mình, hãy làm theo các hướng dẫn sau:

  • Điều hướng đến trang web PayPal và đăng nhập vào tài khoản doanh nghiệp của bạn trang web PayPal và đăng nhập vào tài khoản doanh nghiệp của bạn
  • Đi tới
  • Nhấp vào
  • Tiếp theo để nhấp
  • Thay đổi URL thành:
  • Đảm bảo rằng bạn đổi sang trang web của riêng mình, localhost sẽ không hoạt động, bạn cần một địa chỉ từ xa.
  • Lưu cài đặt và bật nó.

Tôi khuyên bạn nên thử nó trên trang web PayPal sandbox trước để đảm bảo rằng nó đang hoạt động chính xác cho bạn, trang web sandbox được sử dụng để thử nghiệm thanh toán. PayPal sandbox trước để đảm bảo rằng nó đang hoạt động chính xác cho bạn, trang web sandbox được sử dụng để thử nghiệm thanh toán.

Yêu cầu curl trong đoạn mã trên sẽ xác minh giao dịch, chúng tôi không muốn bất kỳ ai thử và thay đổi các giá trị POST này, vì vậy việc xác thực là điều bắt buộc.

Nếu bạn đang sử dụng hệ thống giỏ hàng của riêng mình, bạn sẽ cần thay đổi URL IPN và đảm bảo rằng bạn kết nối với cơ sở dữ liệu MySQL bằng PDO.

Kết luận

Về cơ bản, đó là tất cả những gì bạn phải làm để tích hợp PayPal với trang web của mình, tôi thực sự khuyên bạn nên làm theo hướng dẫn Hệ thống giỏ hàng nếu bạn chưa thực hiện , bạn sẽ dễ dàng triển khai hơn nhiều. Hệ thống giỏ hàng nếu bạn chưa thực hiện , bạn sẽ dễ dàng triển khai hơn nhiều.

Vui lòng chia sẻ bài viết bằng cách nhấp vào các liên kết xã hội bên dưới, điều này sẽ giúp chúng tôi tạo các hướng dẫn mới và cải thiện các hướng dẫn hiện tại.

Thưởng thức mã hóa!