Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/mloppcom/public_html/rumahdot.com/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php:1797) in /home/mloppcom/public_html/rumahdot.com/wp-content/plugins/wpipad.php on line 27

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/mloppcom/public_html/rumahdot.com/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php:1797) in /home/mloppcom/public_html/rumahdot.com/wp-content/plugins/wpipad.php on line 27
PHP Class untuk PayPal Website Payment Pro – Web Programming – Web Design – Web Business Resources Indonesia by RumahDot.com
 
 
Tuesday, March 23, 2010, 8:29

PHP Class untuk PayPal Website Payment Pro

Setelah konon pernah saya kutip dikit tentang php class untuk PayPal IPN di blog saya, kali ini saya berhadapan dengan proyek yang berurusan dengan PayPal Website Payment Pro.

Asal muasal ceritanya, klien ingin supaya pembayaran dilakukan di websitenya dia (online store) agar tampak profesional.

Nah, untuk paypalnya ini saya prefer pake php class punya AngellEye .

Untuk saat (menulis postingan) ini, php class PayPal website payment pro punya Angelleye itu yang dokumentasinya paling lengkap. Tolong update ya kalau ada yang lebih baru lagi.

Beberapa langkah untuk memulai:

  1. Mula-mula, pastinya kita harus bikin account paypal dulu yang akan dijadikan sebagai merchant (penerima duit). Untuk sandbox, bikinnya di http://developer.paypal.com (daftar beneran dulu untuk bisa bikin account bo’ongan/ tester account setelah login. daftarnya gratis kok).
  2. login pakai account tersebut (kalau pakai sandbox, login sandbox dulu baru login account tester)
  3. My Account » Profile »Get API Credentials . Ikuti petunjuknya untuk mendapatkan PayPal API Signature untuk Website Payment Pro (bukan Payflow Pro) dengan integrasi sendiri (bukan pakai third-party shopping cart)
  4. Anda akan mendapatkan:
    • API Username
    • API Password
    • API Signature

Implementasi:

Tiga data diatas dimasukkan kedalam $ppConfig.

<?php
# Add PayPal class
require_once('../PayPalApps/paypal.nvp.class.php');

# Setup the PayPal object
$ppConfig = array('Sandbox' => true, //set false untuk non-sandbox
'APIUsername' => 'jbuzz547_api1.ymail.com',
'APIPassword' => 'AW9KUMJRLYG5XSX3',
'APISignature' => 'Au4SU-K4fYYF.P79qKJxkZVnRl99Aajgl6JLQDOqRPpDrqFGThC-rB4H',
'EndPointURL' => 'https://api-3t.sandbox.paypal.com/nvp'); // untuk yang bukan sandbox, alamatnya https://api-3t.paypal.com/nvp
$pp = new PayPal($ppConfig);

# Populate data arrays for API call.
$DPFields = array(
    'paymentaction' => 'Sale',
    'ipaddress' => '192.168.1.34',
    'returnfmfdetails' => '1'
);

$CCDetails = array(
    'creditcardtype' => 'Visa',
    'acct' => '4635800000835916',
    'expdate' => '052012',
    'cvv2' => '123',
    'startdate' => ''
);

$PayerInfo = array(
    'email' => 'tester@testerson.com',
    'business' => 'Testers, LLC'
);

$PayerName = array(
    'salutation' => 'Mr.',
    'firstname' => 'Tester',
    'middlename' => 'T.',
    'lastname' => 'Testerson',
    'suffix' => 'Jr.'
);

$BillingAddress = array(
    'street' => '123 Test Ave.',
    'street2' => 'Apt. 3',
    'city' => 'Testersville',
    'state' => 'MO',
    'countrycode' => 'US',
    'zip' => '64030',
    'phonenum' => '555-555-5555'
);

$ShippingAddress = array(
    'shiptoname' => 'Mr. Tester Testerson Jr.',
    'shiptostreet' => '123 Test Ave',
    'shiptostreet2' => 'Apt. 3',
    'shiptocity' => 'Testersville',
    'shiptostate' => 'MO',
    'shiptozip' => '64030',
    'shiptocountrycode' => 'US',
    'shiptophonenum' => '555-555-5555'
);

$PaymentDetails = array(
    'amt' => '25.00',
    'currencycode' => 'USD',
    'itemamt' => '15.00',
    'shippingamt' => '10.00',
    'handlingamt' => '',
    'taxamt' => '',
    'desc' => 'This is a test order.',
    'custom' => '',
    'invnum' => '1234-ABC',
    'buttonsource' => '',
    'notifyurl' => ''
);

# Now combine your data arrays into a single nested array to pass into the class.
$DPData = array(
    'DPFields' => $DPFields,
    'CCDetails' => $CCDetails,
    'PayerInfo' => $PayerInfo,
    'PayerName' => $PayerName,
    'BillingAddress' => $BillingAddress,
    'ShippingAddress' => $ShippingAddress,
    'PaymentDetails' => $PaymentDetails);

# Now we pass the nested array of all our data into the class.
$DPResult = $pp -> DoDirectPayment($DPData);

# Now lets study the result array
echo '<pre />';
print_r($DPResult);
exit();
?>

Kalau yang ini untuk pembayaran dengan account PayPal

<?php
# Add PayPal class
require_once('../PayPalApps/paypal.nvp.class.php');

# Setup the PayPal object
$ppConfig = array('Sandbox' => true, // set false untuk non-sandbox
'APIUsername' => 'jbuzz547_api1.ymail.com',
'APIPassword' => 'AW9KUMJRLYG5XSX3',
'APISignature' => 'Au4SU-K4fYYF.P79qKJxkZVnRl99Aajgl6JLQDOqRPpDrqFGThC-rB4H',
'EndPointURL' => 'https://api-3t.sandbox.paypal.com/nvp'); // untuk yang bukan sandbox, alamatnya https://api-3t.paypal.com/nvp

$pp = new PayPal($ppConfig);  

# Populate data arrays for API call.
$SECFields = array(
'returnurl' => 'http://www.domain.com/return.php',
'cancelurl' => 'http://www.domain.com/cancel.php',
'paymentaction' => 'Sale'
);
$PaymentDetails = array(
         'amt' => '18.00',
         'currencycode' => 'USD',
         'itemamt' => '10.00',
         'shippingamt' => '5.00',
         'handlingamt' => '2.00',
         'taxamt' => '1.00',
         'desc' => 'This is a test order.',
         'custom' => '',
         'invnum' => '1234-ABC'
         );  

# Now combine your data arrays into a single nested array to pass into the class.
$SECData = array(
'SECFields' => $SECFields,
 'PaymentDetails' => $PaymentDetails
);  

# Now we pass the nested array of all our data into the class.
$SECResult = $pp -> SetExpressCheckout($SECData);  

# Now lets study the result array
echo '<pre />';
print_r($SECResult);
exit();  

# Now we can just use the returned REDIRECTURL field to redirect the user to PayPal based on our input.
header('Location: ' . $SECResult['REDIRECTURL']);
?>

paypal.nvp.clssass download here

Butuh coba-coba sendiri sambil lirik classnya kalau mau buat bayar multiple items. ;)

Sekedar pengingat. Jangan lupa beli hosting dengan dedicated IP dan install SSL.

Terlihat mudah bukan?

Btw, adakah yang sudah dapat sertifikasi PayPal? Atau sering nyambangi www.X.com (PayPal Developer Network)? Ditunggu sharingnya ;)

Postingan Terkait

6 komentar di “PHP Class untuk PayPal Website Payment Pro”

  1. :( , lagi stuck di step yang berhubungan dengan paypal gini. takut keblokir web saya. pake IPN kalo nggak salah minta verifikasi yang njlimet. Setelah transaksi verified, payment_status musti Completed. nggak boleh ada proses yang duplicate, receiver_email musti valid.

    kalo ada waktu dijelasin yang lebih jelas sejelas-jelasnya ya :D :D

  2. @Vyatri says:

    Pake sandbox aja dulu klo takut salah. Masa IPN njlimet? Kan cuma nge-'ping'. Pake phpclass bikinan Micah Carrick yang kusebutin di blogku deh. Aku lebih prefer pake IPN krn nggak perlu install SSL :P

  3. Ryd says:

    Klo bwt payment pro tu prasaan harus punya akun bank US dah. Ni jga lagi ngadapin klien yg sma2 perlu mekanisme biar customer bisa direct payment, bingung kalo bwt lokal Indonesia emang ada, tpi ribet [ga yakin]. pilihan terkhir paypal, tpi kyanya klien mungkin bakal mikir aneh2, krna mesti buka akun segala di US… Mohon pencerahan dong, blm terlalu ngerti ma sistem perbankan n e-comerce lbih dalem…

  4. vyatri says:

    iya. ini kebetulan project yang saya ceritakan diatas adalah dari klien US. Indonesia yang tidak ribet pun saya masih kurang tahu ada atau tidaknya. Pernah nyobain beli tiket Lion Air pakai debit BCA untuk e-commerce? Itupun masih mbulet karena bayarnya nggak langsung di webnya (mesti ke klikbca dulu). Jadi pasrah aja dulu sama third party lokal seperti indomog, gudangvocer, atau kaspay ^^. Kalau udah nemu cara yang paling bagus, bagi2 ya.

  5. boby says:

    kakak,bs tolong lebih dijelasin detail script’a gak?
    yang isi array macem2 itu apa aja n fungsi’a masing2 apa..TA saya pk paypal nih,pusiing.. @.@
    Mohon bantuan’a kakak..

  6. Rif says:

    pernah coba pake yang integrasi wizard gak??

Tinggalkan Komentar

*

vyatri
Telah Menulis 20.

Lahir di Bontang, besar di Surabaya dan Qatar. Web programmer paling cupu dari PT.DheZign OS. Juga co-founder toko online produk muslim pertama Indonesia dengan konsep one-stop. Menggeluti linux sejak DO di semester 3 di IBMT. Sekarang sedang bercita-cita menjadi pengangguran.



Recent Post

IDbyte 2013 Start-Up Hunt Is Calling For Entries!

IDbyte 2013 Start-Up Hunt Is Calling For Entries!

10 Apr 2013
Membicarakan Investor di Meetup suWec

Membicarakan Investor di Meetup suWec

22 Jan 2013
suWec Meetup – Mengenal Seputar Investor

suWec Meetup – Mengenal Seputar Investor

14 Jan 2013
Mengenal dan Menggunakan Framework CSS Twitter Bootstrap

Mengenal dan Menggunakan Framework CSS Twitter Bootstrap

25 Sep 2012
Indonesia, Pasar Teknologi Superpower di Asia

Indonesia, Pasar Teknologi Superpower di Asia

20 Sep 2012
Konferensi, Kompetisi Startup dan Hackathon SparxUp 2012 Kembali Hadir

Konferensi, Kompetisi Startup dan Hackathon SparxUp 2012 Kembali Hadir

31 Aug 2012
Buka Bersama – Meetup suWec “Membuat Mobile App yang Bagus dan Menjual”

Buka Bersama – Meetup suWec “Membuat Mobile App yang Bagus dan Menjual”

9 Aug 2012