Sabtu, 26 Januari 2013

PayPal Express Checkout dengan PHP

Dalam tuk menjual beberapa produk langsung.

Untuk menguji toko PayPal agan dalam server lokal, Anda perlu mendaftar akun PayPal Developer dan menggunakan sandbox mereka. . Untuk menjual produk kalian di dunia nyata, ente perlu mendaftar untuk real akun Paypal dan memperoleh informasi yang diperlukan untuk penjual file konfigurasi.silakan ini link yang di perlukan
mendaftar akun paypal devoloper

Seperti yang Anda lihat kita memiliki empat file PHP dalam index.php tutorial, config.php, process.php dan paypal.class.php, tetapi jika Anda amati teunrutama dua file index.php dan process.php, Anda harus cukup jelas bagaimana segala sesuatu bekerja.
Konfigurasi
config.php file PHP digunakan untuk menyimpan penjual informasi Paypal API . Gunakan sandbox atau hidup rincian API PayPal untuk menggantikan variabel dalam file config.php. tutorial ini mari kita cari-tahu bagaimana kita dapat menggunakan Paypal Express Checkout di website




Spoiler:
<? Php
$ PayPalMode = 'sandbox'; / / sandbox atau hidup
$ PayPalApiUsername = 'selleremail@somesite.com'; / / PayPal API Nama
$ PayPalApiPassword = '123456 '; / / Paypal API sandi
$ PayPalApiSignature = 'ZWxwchnCsdQg5PxAUjcH6OPuZK3sPcPH'; / / Paypal API Signature
$ PayPalCurrencyCode = 'USD'; / / Kode Mata Uang Paypal
$ PayPalReturnURL = 'http://yoursite.com/paypal/process.php'; / / Point ke halaman process.php
$ PayPalCancelURL = 'http://yoursite.com/paypal/cancel_url.php'; / / Batal URL jika pengguna mengklik membatalkan
?>



Produk Halaman

index.php adalah halaman awal di mana pembeli Anda bisa melihat produk Anda, tidak peduli bagaimana Anda berencana untuk menyajikan produk Anda, itu bisa menjadi kompleks ajax didorong halaman, produk tunggal atau hanya daftar beberapa produk, Anda hanya perlu daftar produk Anda mirip dengan contoh di bawah ini.

Setiap item produk berisi formulir, dan bentuk masing-masing berisi variabel masukan nama item yang tersembunyi, nomor item, kuantitas barang dan harga. Pembeli dapat melihat detail produk dan pilih kuantitas sebelum membeli produk. Ketika pembeli memutuskan untuk membeli, data produk yang dipilih akan diposting ke process.php. 

Code:
 <? Php
include_once ("config.php");
?>
< html >
< kepala >
< title > Produk saya </ title >

</ kepala >
< body > < h2 align = "center"> Produk Test </ h2 >
< div class = "product_wrapper">
< table class = "procut_item" border = "0" cellpadding = "4">
< tr >
< td width = "50%"> < h4 > Produk 1 </ h4 > (Deskripsi Produk) </ td >
< td width = "50%"> < bentuk metode = "post" action = "process.php">
< masukan type = "hidden" name = "itemname" value = "Produk Satu" />
< masukan type = "hidden" name = "ItemNumber" value = "1" />
< masukan type = "hidden" name = "itemprice" value = "10" />
Kuantitas
< masukan class = "dw_button" type = "submit" name = "submitbutt" value = "Buy (10 USD)" />
</ bentuk > </ td >
</ tr >
</ table >



< table class = "procut_item" border = "0" cellpadding = "4">
< tr >
< td width = "50%"> < h4 > Produk 2 </ h4 > (Deskripsi Produk) </ td >
< td width = "50%"> < bentuk metode = "post" action = "process.php">
< masukan type = "hidden" name = "itemname" value = "Produk Dua" />
< masukan type = "hidden" name = "ItemNumber" value = "2" />
< masukan type = "hidden" name = "itemprice" value = "20" /> Jumlah
< masukan class = "dw_button" type = "submit" name = "submitbutt" value = "Buy (20 USD)" />
</ bentuk > </ td >
</ tr >
</ table >
</ div >
</ body >
</ html >
CLASS.PHP

paypal.class.php hanyalah kumpulan fungsi, PPHttpPost () fungsi PHP digunakan untuk melakukan operasi API dalam file progress.php, seperti mengirim Permintaan HTTP POST atau mendapatkan respon dari server. Anda dapat menambahkan fungsi tambahan (jika diperlukan) dalam file kelas dan mengeksekusi seperti ini $ paypal-> FunctionName (). 


Code:
 <? Php
class MyPayPal {

/ / Set up API Anda identitasnya, titik akhir PayPal, dan versi API.
$ API_UserName = urlencode ($ PayPalApiUsername);
$ API_Password = urlencode ($ PayPalApiPassword);
$ API_Signature = urlencode ($ PayPalApiSignature);

if ($ PayPalMode == 'sandbox')
{
$ Paypalmode = 'sandbox.';
}
lain
{
$ Paypalmode ='';
}

$ API_Endpoint = "https://api-3t" $ paypalmode ".paypal.com / NVP"..;
$ Version = urlencode ('76 .0 ');

/ / Set parameter ikal.
$ Ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ API_Endpoint);
curl_setopt ($ ch, CURLOPT_VERBOSE, 1);

/ / Matikan server dan verifikasi sebaya (Konsep TrustManager).
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ ch, CURLOPT_POST, 1);

/ / Set operasi API, versi, dan tanda tangan API dalam permintaan.


/ / Set permintaan sebagai FIELD POST untuk keriting.
curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ nvpreq);

/ / Dapatkan respon dari server.
$ HttpResponse = curl_exec ($ ch);

if ($ HttpResponse!) {
exit ("$ methodName_ gagal:". curl_error .. ($ ch) '(' curl_errno . ($ ch) ')');
}

/ / Ekstrak rincian respon.
$ HttpResponseAr = meledak ("&", $ HttpResponse);

$ HttpParsedResponseAr = Array ();
foreach ($ httpResponseAr sebagai $ i => $ value) {
$ TmpAr = meledak ("=", $ value);
if ( sizeof ($ tmpAr)> 1) {
$ HttpParsedResponseAr [$ tmpAr [0]] = $ tmpAr [1];
}
}

if ((0 == sizeof ($ httpParsedResponseAr)) | |! array_key_exists ('ACK', $ httpParsedResponseAr)) {
exit ("tidak valid HTTP Respon untuk permintaan POST ($ nvpreq) menjadi $ API_Endpoint.");
}

return $ httpParsedResponseAr;
}

}
?>

Pengolahan Pembayaran PayPal

process.php adalah file PHP akhir di mana pembeli Data produk yang dipilih diterima dan diproses lebih lanjut untuk pembayaran. Kami akan mengeksekusi terutama tiga metode Paypal sini SetExpressCheckout, DoExpressCheckout & GetTransactionDetails. Setiap baris komentar dalam kode PHP di bawah ini menjelaskan bagaimana penawaran process.php dengan data yang diterima dari pembeli dan PayPal.

SetExpressCheckOut: Ketika pembeli mengirimkan rincian produk dengan mengklik tombol beli, kebutuhan process.php untuk mendapatkan tanda PayPal dengan metode SetExpressCheckOut menggunakan kredensial PayPal Penjual API.

Setelah kami berhasil menerima tanda PayPal, kita perlu mengatur beberapa variabel sesi (itemprice, TotalAmount, itemName, itemNo, itemQTY) untuk nanti. Dan kemudian kita mengarahkan pembeli untuk ringkasan urutan halaman PayPal, di mana pembeli membayar di lingkungan PayPal aman, tapi ingat PayPal belum mentransfer uang belum.

DoExpressCheckoutPayment: Setelah pembayaran, pembeli diarahkan kembali ke halaman process.php dengan token Paypal dan nilai-nilai PayerID. Kita lagi perlu mengirim nilai-nilai ini kembali ke PayPal menggunakan metode DoExpressCheckoutPayment, di mana PayPal memverifikasi nilai-nilai, hanya kemudian uang itu ditransfer ke rekening Penjual.

GetTransactionDetails: Memperoleh informasi tentang transaksi tertentu, pada pembayaran yang berhasil Anda mungkin ingin mengumpulkan rincian seperti alamat pembeli, Informasi pembayaran dll 

Code:
 <? Php
session_start ();
include_once ("config.php");
include_once ("paypal.class.php");

if ($ _POST) / data / Pos yang diterima dari halaman daftar produk.
{
/ / Terutama kita perlu 4 variabel dari item, Nama Barang, Harga Barang, Item Number dan Kuantitas Barang.
$ Itemname = $ _POST ["itemname"]; / / Nama Item
$ ItemPrice = $ _POST ["itemprice"]; / / Item Harga
$ ItemNumber = $ _POST ["ItemNumber"]; / / Item Number
$ ItemQty = $ _POST ["itemQty"]; / / Item Jumlah
$ ItemTotalPrice = ($ ItemPrice * $ ItemQty); / / (Barang x Harga Quantity = Total) Dapatkan jumlah produk;

/ / Data yang akan dikirim ke paypal
$ Padata = '& CURRENCYCODE ='. urlencode ($ PayPalCurrencyCode).
'& PAYMENTACTION = Sale'.
'& ALLOWNOTE = 1'.
'& PAYMENTREQUEST_0_CURRENCYCODE ='. urlencode ($ PayPalCurrencyCode).
'& PAYMENTREQUEST_0_AMT ='. urlencode ($ ItemTotalPrice).
'& PAYMENTREQUEST_0_ITEMAMT ='. urlencode ($ ItemTotalPrice).
'& L_PAYMENTREQUEST_0_QTY0 ='. urlencode ($ ItemQty).
'& L_PAYMENTREQUEST_0_AMT0 ='. urlencode ($ ItemPrice).
'& L_PAYMENTREQUEST_0_NAME0 ='. urlencode ($ itemname).
'& L_PAYMENTREQUEST_0_NUMBER0 ='. urlencode ($ ItemNumber).
'& AMT ='. urlencode ($ ItemTotalPrice).
'& ReturnUrl ='. urlencode ($ PayPalReturnURL).
'& CANCELURL ='. urlencode ($ PayPalCancelURL);

/ / Kita perlu menjalankan "SetExpressCheckOut" metode untuk mendapatkan tanda paypal
$ Paypal = new MyPayPal ();


/ / Menanggapi sesuai dengan pesan yang kami terima dari Paypal

{

/ / Jika berhasil set beberapa variabel sesi yang kita butuhkan kemudian ketika pengguna diarahkan kembali ke halaman dari paypal.
$ _SESSION ['Itemprice'] = $ ItemPrice;
$ _SESSION ['TotalAmount'] = $ ItemTotalPrice;
$ _SESSION ['ItemName'] = $ itemname;
$ _SESSION ['ItemNo'] = $ ItemNumber;
$ _SESSION ['ItemQTY'] = $ ItemQty;

if ($ PayPalMode == 'sandbox')
{
$ Paypalmode = 'sandbox.';
}
lain
{
$ Paypalmode ='';
}
/ / Redirect pengguna ke toko PayPal dengan Token diterima.

Header ('Location:'. $ paypalurl);

} Else {
/ Pesan / Tampilkan error
. echo '<div style="color:red"> <b> Kesalahan: </ b>' urldecode . ($ httpParsedResponseAr ["L_LONGMESSAGE0"]) '</ div>';
echo '<pre>';
print_r ($ httpParsedResponseAr);
echo '</ pre>';
}

}

/ / Paypal pengalihan kembali ke halaman ini menggunakan returnUrl, kita harus menerima ID TOKEN dan Wajib
if ( isset ($ _GET ["token"]) && isset ($ _GET ["PayerID"]))
{
/ / Kita akan menggunakan dua variabel untuk menjalankan "DoExpressCheckoutPayment"
/ / Catatan: kami belum menerima pembayaran apa pun.

$ Token = $ _GET ["token"];
$ Playerid = $ _GET ["PayerID"];

/ / Dapatkan variabel sesi
$ ItemPrice = $ _SESSION ['itemprice'];
$ ItemTotalPrice = $ _SESSION ['TotalAmount'];
$ Itemname = $ _SESSION ['itemName'];
$ ItemNumber = $ _SESSION ['itemNo'];
$ ItemQTY = $ _SESSION ['itemQTY'];

$ Padata = '& TOKEN ='. urlencode ($ token).
'& PAYERID ='. urlencode ($ playerid).
'& PAYMENTACTION ='. urlencode ("SALE").
'& AMT ='. urlencode ($ ItemTotalPrice).
'& CURRENCYCODE ='. urlencode ($ PayPalCurrencyCode);

/ / Kita perlu menjalankan "DoExpressCheckoutPayment" pada titik ini untuk Menerima pembayaran dari pengguna.
$ Paypal = new MyPayPal ();


/ / Periksa apakah semuanya berjalan ok ..

{
echo '<h2> Sukses </ h2>';
echo 'ID Transaksi Anda: ". urldecode ($ httpParsedResponseAr ["TransactionID"]);

/ *
/ / Terkadang Pembayaran disimpan tertunda bahkan ketika transaksi selesai.
/ / Karena perubahan mata uang, pengguna memilih opsi pembayaran lainnya atau review yang tertunda dll
/ / Maka kita perlu memberitahu pengguna tentang hal itu dan memintanya manual menyetujui transiction tersebut
* /

if ('Selesai' == $ httpParsedResponseAr ["PAYMENTSTATUS"])
{
echo '<div Pembayaran style="color:green"> Diterima! Produk Anda akan dikirim kepada Anda segera </ div> '!;
}
elseif ('Pending' == $ httpParsedResponseAr ["PAYMENTSTATUS"])
{
echo '<div style="color:red"> Transaksi Lengkap, namun pembayaran masih tertunda! Anda perlu secara manual mengotorisasi pembayaran ini dalam <a target="_new" href="http://www.paypal.com"> Akun Paypal </ a> </ div> ';
}

echo '<br /> <b> Stuff untuk menyimpan dalam database: </ b> <br /> <pre>';

$ TransactionID = urlencode ($ httpParsedResponseAr ["TransactionID"]);
$ NvpStr = "& TransactionID =" $ TransactionID.;
$ Paypal = new MyPayPal ();




/ *
# # # # SIMPAN INFORMASI PEMBELI DI DATABASE # # #
$ BuyerName = $ httpParsedResponseAr ["FIRSTNAME"]. ' '$ HttpParsedResponseAr ["NamaBelakang"].;
$ BuyerEmail = $ httpParsedResponseAr ["EMAIL"];
$ PaymentStatus = $ httpParsedResponseAr ["PAYMENTSTATUS"];

$ Conn = mysql_connect ("localhost", "MySQLUsername", "MySQLPassword");
if ($ conn!)
{
die ('Tidak dapat terhubung:'. mysql_error ());
}

mysql_select_db ("database_name", $ conn);

mysql_query ("INSERT INTO BuyerTable
(BuyerName, BuyerEmail, TransactionID, itemname, ItemNumber, ItemAmount, ItemQTY, PaymentStatus)
NILAI
('$ BuyerName', '$ buyerEmail', '$ TransactionID', '$ itemname', $ ItemNumber, $ ItemTotalPrice, $ ItemQTY, $ paymentStatus) ");

mysql_close ($ con);
* /

echo '<pre>';
print_r ($ httpParsedResponseAr);
echo '</ pre>';
} Else {
echo '<div style="color:red"> <b> GetTransactionDetails gagal: </ b>'. urldecode ($ httpParsedResponseAr ["L_LONGMESSAGE0"]) '</ div>';.
echo '<pre>';
print_r ($ httpParsedResponseAr);
echo '</ pre>';

}

} Else {
. echo '<div style="color:red"> <b> Kesalahan: </ b>' urldecode . ($ httpParsedResponseAr ["L_LONGMESSAGE0"]) '</ div>';
echo '<pre>';
print_r ($ httpParsedResponseAr);
echo '</ pre>';
}
}
?>

sumber :http://www.black-c0de.org/t5630-paypal-express-checkout-dengan-php#31023

3 komentar:

kalo bikin diklik langsung payment paypal dengan harga tertentu bagaimana itu om?
jadi klik langsung masuk kepaypal, sebuah link panjang gitu..

itu di kenai bayaran masbro....

cara meletakan semua kode itu di mana mbak cantik,..

Posting Komentar

pembaca yang baik selalu,memberi comentar yang baik pula,buat artikel aljinet ini,biar ada masukan lebih dan memgembangkan blog aljinet ini,untuk itu disarankan comentlah artikel kami,beri kritikan yang pedas tidak masalah,silakan di coment kawan

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More