Hướng dẫn shop php id paypal

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.

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:

  • Cài đặt môi trường máy chủ web, tôi khuyên bạn nên 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ụ: // 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:

// 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>

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;  

Thêm sau:

HTML

Sao chép

 & lt; div class = "paypal" & gt;
    & lt; button type = "submit" name = "paypal" & gt; & lt; img src = "//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;  

Thêm CSS vào tệp biểu định kiểu của bạn [style.css]:

CSS

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 nút PayPal mà chúng tôi sẽ sử dụng để thanh toán trên trang giỏ hàng của mình, nó sẽ giống như thế này [nút màu vàng]:

//localhost/shoppingcart/index.php? page = cart

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 bao gồm biểu mẫu:

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 = "//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;  

Bây giờ, chúng tôi cần thêm mã PHP sẽ xác thực và chuyển hướng đến PayPal.

Trước thẻ đóng PHP, hãy thêm:

PHP

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? '//www.sandbox.paypal.com/cgi-bin/webscr': '//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; '//yourwebsite.com/index.php?page=cart',
        'tify_url '= & gt; '//yourwebsite.com/index.php?page=cart&ipn_listener=paypal',
        'currency_code' = & gt; 'ĐÔ LA MỸ',
        'return' = & gt; '//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;
}  

Đoạn mã trên sẽ thực thi nếu người dùng nhấp vào nút PayPal [yêu cầu ĐĂNG], hãy đảm bảo bạn cập nhật các biến trong mảng biến, thay thế “yourdomain.com” bằng tên miền của riêng bạn, nếu bạn muốn thay đổi đơn vị tiền tệ bạn sẽ cần thay đổi giá trị “currency_code”.

Nếu bạn muốn thêm nhiều biến dữ liệu hơn, bạn có thể xem danh sách tại đây .

Ngoài ra, bạn sẽ cần đăng ký tài khoản doanh nghiệp trên PayPal, bạn có thể đăng ký một tài khoản trên 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.

Nếu bạn không làm theo hướng dẫn 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 :

PHP

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
]
];  

Nếu mọi thứ được kiểm tra, người dùng sẽ được chuyển hướng đến PayPal, nhưng chỉ khi có sản phẩm trong giỏ hàng của họ.

4. Tạo trình nghe PayPal IPN [Thông báo thanh toán tức thì]

Trình xử lý thông báo thanh toán tức thì sẽ chèn / cập nhật các giao dịch vào cơ sở dữ liệu của chúng tôi, mỗi khi người dùng mua hàng, PayPal sẽ thông báo lại tệp PHP của chúng tôi và sau đó mã PHP của chúng tôi sẽ xác thực giao dịch và sau đó chèn / cập nhật giao dịch vào cơ sở dữ liệu MySQL của chúng tôi.

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ụ: //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
  • Đ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.

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.

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!

Chủ Đề