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