Breaking

Thursday, November 22, 2012

Hướng dẫn tích hợp thanh toán PayPal , ngân lượng vào website bán hàng trực tuyến

Bước 1 : bạn download thư viện của PayPal và Ngân lượng  :
- ở đây mình đã download và nén lại một thư mục : bạn có thể down tại http://www.mediafire.com/?dhnghfhusew655a
Bước 2 : Tích hợp PayPal:
- Bạn giải nén thư mục model.rar vừa download về , thư viện PayPal gồm 4 file : 4 file là 4 các class thôi , bạn đặt vào đúng nơi cần đặt tức là nơi gọi class trong mã nguồn của bạn.
- Order.php
-Paypaldirectpayment.php
-PaypalExpressCheckout.php
-PaypalPaymentPro.php
- bạn mở file ProductController.php.
Bước 3 : Đăng ký tài khoản Sanbox của PayPal và Ngân lượng để text thử , Ngân lương các bạn có thể vào trang sanbox.nganluong.vn , PalPal thì các bạn vào trang deverlopment.paypal.com.
Bước 4 : Tích hợp:
1) PayPal:
-Trong file ProductController mình đã tích hợp sẵn những bạn náo giỏi PHP có thể xem là hiểu , còn không mình xin hướng dẫn sơ như sau
$conf['paypal']['url']                  = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; //địa chỉ paypal
        $conf['paypal']['apiUsername']  = 'web_1341385779_biz_api1.gmail.com';// tài khoảng nhận
        $conf['paypal']['apiPassword']  = '1341385817'; //mật khẩu
        $conf['paypal']['apiSignature']  = 'Az6ayG.K.3HuHCueR9S.kvqpnCHfAe16U-lSdIR-GtxMjqcwR.YvI8jI'; //chữ ký
        $conf['paypal']['apiEndpoint']  = 'https://api-3t.sandbox.paypal.com/nvp';
        $paypal_order_temp = '';
        $myOrder = new Admin_Model_Order(); //gọi tới Class Order.php chú ý Class Order phải kế thừa từ 3 class còn lại
        $myOrder->create();
        $paypal_order_temp = $myOrder->invoiceId;
$price1 = round($price/20000,2); //giá sản phẩm mình chia cho 20000 vì PayPall không có tiền việt
     if($this->_request->isPost()){
     if($this->_request->getParam('thanhtoan')==1){ chọn phương thức là paypal tại ở đây mình chọn nhiều hình thức thanh toán nên set PayPal là 1
                $checker = new Admin_Model_PaypalExpressCheckout($conf['paypal']['apiUsername'], $conf['paypal']['apiPassword'], $conf['paypal']['apiSignature'], $conf['paypal']['apiEndpoint']);
                $checker->invoiceNum  = $myOrder->invoiceId;
                $checker->priceTotalItem  = $price1; //giá tiền
                $checker->priceShipping  = 0;
                $checker->priceTax  = 0;
                $checker->priceTotalAmount  = $price1;
                $checker->ipaddress  = $_SERVER['REMOTE_ADDR'];
                $checker->logoUrl = 'http://internship.edu.vn/ds.jpg'; logo
                $checker->returnUrl = 'http://internship.edu.vn/trainingstore/product/buy?return=1'; //địa chỉ web trả về khi thanh toán thành công
                $checker->cancelUrl = 'http://internship.edu.vn/trainingstore/product/buy'; //địa chỉ web trả về khi thanh toán thất bại
                for($i=0; $i < 1; $i++)
                {
                      // gửi thông tin lên cho paypal , bao gồm mã hóa đơn , số sản phẩm , giới thiệu , giá ..... các bước dưới là mặt định
                     $nvpStrItems = '&L_NAME'.$i.'='.($_SESSION['orderid']).'&L_NUMBER'.$i.'='.($i+1).'&L_DESC'.$i.'='.urlencode($user['company']).'&L_AMT'.$i.'='.urlencode($price1).'&L_QTY'.$i.'=1';
                     //$nvpStrItems = '&L_NAME'.$i.'='.(Tên Sản phẩm).'&L_NUMBER'.$i.'='.(số lượng sản phẩm).'&L_DESC'.$i.'='.urlencode(giới thiệu sản phẩm).'&L_AMT'.$i.'='.urlencode(giá).'&L_QTY'.$i.'=1';
                }
                $httpParsedResponseAr = '';
                $checker->nvpStrItems = $nvpStrItems;
     if($checker ->setexpress())
                {
                    $paypalUrl = $conf['paypal']['url'] . '?cmd=_express-checkout&token=' . urldecode($checker->httpResponseArray['TOKEN']) . '&useraction=commit';
                    $this->_redirect($paypalUrl);
                }
                else
                {
                     exit('SetExpressCheckout failed: ' . print_r($httpParsedResponseAr, true));
                     $this->_redirect($checker->cancelUrl);
                }
     }
//tới bước nay thì PayPal đã nhận được thông tin thanh toán , khi thanh toán thành công sẽ trả về trang mà bạn cài đặt
//mình trả về trang như trên với biến return =1 , nếu bằng 1 mới xử lý tiếp
bước này để xác nhận lại thông tin sản phẩm là chính xác , bạn cấu hình như trên , nếu khác thanh toán thất bại
if(isset($_GET['return'])){
                    if($_GET['return'] == 1){
                        $checker = new Admin_Model_PaypalExpressCheckout($conf['paypal']['apiUsername'], $conf['paypal']['apiPassword'], $conf['paypal']['apiSignature'], $conf['paypal']['apiEndpoint']);
                                    $checker->invoiceNum  = $paypal_order_temp;
                                    $checker->priceTotalItem  = $price1;
                                    $checker->priceShipping  = 0;
                                    $checker->priceTax  = 0;
                                    $checker->priceTotalAmount  = $price1;
                                    $checker->ipaddress  = $_SERVER['REMOTE_ADDR'];
                                    for($i=0; $i < 1; $i++)
                                    {
                                             $nvpStrItems = '&L_NAME'.$i.'='.($_SESSION['orderid']).'&L_NUMBER'.$i.'='.($i+1).'&L_DESC'.$i.'='.urlencode($user['company']).'&L_AMT'.$i.'='.urlencode($price1).'&L_QTY'.$i.'=1';
                                    }
                        $checker->nvpStrItems = $nvpStrItems;
                        $checker -> payerId = $_GET['PayerID'];
                        $checker -> token = $_GET['token'];
                        $validate = $checker ->checkout();
                    }
                // khai báo biến vailidate , nếu vailidate = true thì hoàn thành thanh toán , bạn xử lý tiếp theo
                    if($validate){
                       $user = $_SESSION['Zend_Auth']['storage']->id;
                       if($user == null || $user == '') $user = $_SESSION['usernameid'];
                      $orderid = $_SESSION['orderid'];
                       $date = date('d').'/'.date('m').'/'.date('Y');
                       $insert = new Admin_Model_User();
                       $this->view->temp = $validate;
                    }

Thanks hcm-web.com

Tham khảo các kiểu tích hợp khác tại ...

No comments:

Post a Comment