Sebelumnya lebih baik teman-teman baca artikel saya dulu yang sebelumnya. Setelah membaca dan yakin ingin menggunakan cara kedua, ya baik…Saya coba buat kode untuk melakukan cara ambil harga JNE dengan PHP [cara kedua].
Pertama saya buat folder dengan nama get_price_jne, lalu di dalamnya saya buat file index.php dimana isi dari file ini adalah sebuah form untuk memasukan kota asal pengiriman, kota tujuan pengiriman dan berat barang yang akan dikirim. Berikut kodenya :
Setelah itu saya buat action dari form tersebut dengan nama file get_harga.php yang merupakan teknik parsing atau ambil data dari website lain. Berikut adalah kodenya :
Baiknya teman-teman membaca apa itu CURL, apa itu preg_match, konsep regex. Jujur pertama kali saya lihat kode ini dari Om Andriant saya baca lagi manual PHP nya
.
Setelah itu tinggal jalankan. Berikut adalah tampilan awal form di localhost saya

Dan hasilnya bisa dilihat pada gambar di bawah ini.

Dari form ke hasil membutuhkan kira-kira 10 detik-an kalau di komputer local saya. Agak lambat ya..
Selesai ?? Belum,,teman-teman sebenarnya mesti melakukan teknik ambil value dari hasil yang sudah terlihat diatas. Gunakan teknik DOM dengan Javascript atau lebih mudah dengan jquery.
Bingung ?? lebih jelasnya, coba teman-teman mampir ke situs Bhinneka untuk melihat studi kasus saat kita memilih jasa pengiriman. Lebih menarik ya…
Moga bermanfaat…:)
[download code]
Refrensi : Dari Om Andriant dengan sedikit modifikasi dari saya…
Pertama saya buat folder dengan nama get_price_jne, lalu di dalamnya saya buat file index.php dimana isi dari file ini adalah sebuah form untuk memasukan kota asal pengiriman, kota tujuan pengiriman dan berat barang yang akan dikirim. Berikut kodenya :
01 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
02 | <html xmlns="http://www.w3.org/1999/xhtml"> |
03 | <head> |
04 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
05 | <title>Tutorial Sederhana Parsing Harga Pengiriman JNE - Adiputra</title> |
06 | </head> |
07 | <body> |
08 | <center> |
09 | <h1>Create by Adiputra, Basic Code from Om Andriant</h1> |
10 | <form action='get_harga.php' method='post'> |
11 | <table border='1'> |
12 | <tr> |
13 | <th colspan='2'>Demo Parsing Harga Pengiriman JNE</th> |
14 | <tr> |
15 | <td>Masukan Kota Asal Pengiriman</td> |
16 | <td><input type='text' name='kota_asal' size='20'></td> |
17 | </tr> |
18 | <tr> |
19 | <td>Masukan Kota Tujuan Pengiriman</td> |
20 | <td><input type='text' name='kota_tujuan' size='20'></td> |
21 | </tr> |
22 | <tr> |
23 | <td>Masukan berat barang [integer]</td> |
24 | <td><input type='text' name='berat' size='5'> per kilo</td> |
25 | </tr> |
26 | <tr> |
27 | <td></td> |
28 | <td><input type='submit' name='lihat' value='Cek Harga'></td> |
29 | </tr> |
30 | </table> |
31 | </form> |
32 | </center> |
33 | </body> |
34 | </html> |
01 | <?php |
02 | /* |
03 | file name : get_harga.php |
04 | created by : Om Andriant - member of forumphp.web.id |
05 | edited by : adiputra - member of forumphp.web.id |
06 | source link : http://forumphp.web.id/viewtopic.php?p=37363&highlight=jne#37363 |
07 | */ |
08 | # ambil data kota asal dan kota tujuan serta berat dari form |
09 | $asal = $_POST['kota_asal']; |
10 | $tujuan = $_POST['kota_tujuan']; |
11 | $berat = $_POST['berat']; |
12 |
13 | if (!function_exists("curl_init")){ |
14 | die('CURL tidak ada'); |
15 | }else{ |
16 | $chp = curl_init(); |
17 | //variable for cookies access |
18 | curl_setopt($chp, CURLOPT_COOKIEJAR, $cookiesjar); |
19 | //variable for cookies store , same as previous line |
20 | curl_setopt($chp, CURLOPT_COOKIEFILE, $cookiesjar); |
21 | //simulating user agent - shadow |
22 | curl_setopt($chp, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); |
23 | //ingroring server redirect |
24 | curl_setopt($chp, CURLOPT_FOLLOWLOCATION, 1); |
25 | //accepting returns from server |
26 | curl_setopt($chp, CURLOPT_RETURNTRANSFER, 1); |
27 |
28 | // cari kode asal |
29 | $url = "http://www.jne.co.id/tariff.php?q=$asal&limit=20×tamp=".time(); |
30 | curl_setopt($chp, CURLOPT_URL, $url); |
31 | $content = curl_exec($chp); |
32 | if ($content != "") |
33 | { |
34 | $kode = preg_split("%\n%si",$content); |
35 | $kode = trim($kode[0]); |
36 | $kode = explode('|',$kode); |
37 | $koreksikotaasal = $kode[0]; |
38 | $kodeasal = $kode[1]; |
39 | } |
40 | // cek kode tujuan |
41 | $url = "http://www.jne.co.id/tariff.php?q=$tujuan&limit=20×tamp=".time(); |
42 | curl_setopt($chp, CURLOPT_URL, $url); |
43 | $content = curl_exec($chp); |
44 | if ($content != "") |
45 | { |
46 | $kode = preg_split("%\n%si",$content); |
47 | $kode = trim($kode[0]); |
48 | $kode = explode('|',$kode); |
49 | $koreksikotatujuan = $kode[0]; |
50 | $kodetujuan = $kode[1]; |
51 | } |
52 | // kalo kode asal dan kode tujuan berhasil ketarik, ambil data |
53 | if ($kodeasal != "" && $kodetujuan != "") |
54 | { |
55 | $url = "http://www.jne.co.id/index.php?mib=tariff&lang=IN"; |
56 | //$params = 'from=JAKARTA&origin_code=Q0dLMTAwMDBK&to=BANDUNG&destination_code=QkRPMTAwMDBK&weight=1&checktariff='; |
57 | $params = "from=$koreksikotaasal&origin_code=$kodeasal&to=$koreksikotatujuan&destination_code=$kodetujuan&weight=$berat&checktariff="; |
58 | curl_setopt($chp, CURLOPT_REFERER, "http://www.jne.co.id/index.php"); |
59 | curl_setopt($chp, CURLOPT_POSTFIELDS,$params); |
60 | curl_setopt($chp, CURLOPT_URL, $url); |
61 | //open the url with our mentioned variables |
62 | $content = curl_exec($chp); |
63 | if (preg_match('%Nama Layanan.*?Tarif.*?</tr>(.*?)</table>%si', $content,$matches)) { |
64 | preg_match_all('%<tr.*?><td.*?>(.*?)</td>.*?<td.*?>(.*?)</td><td.*?>Rp. (.*?)</td>.*?</tr>%si', $matches[1], $result, PREG_PATTERN_ORDER); |
65 | array_shift($result); |
66 | for ($i=0;$i<count($result);$i++) |
67 | { |
68 | echo("Nama Layanan {$result[0][$i]}<br />"); |
69 | echo("Jenis Kiriman {$result[1][$i]}<br />"); |
70 | echo("Berat $berat<br />"); |
71 | echo("Tarif {$result[2][$i]}<br /><br />"); |
72 | } |
73 | } |
74 | else{ |
75 | echo('gagal menarik data'); |
76 | } |
77 | } |
78 | else{ |
79 | echo('gagal menarik data'); |
80 | } |
81 |
82 | curl_close($chp); |
83 | } |
84 | ?> |
Setelah itu tinggal jalankan. Berikut adalah tampilan awal form di localhost saya
Dan hasilnya bisa dilihat pada gambar di bawah ini.
Dari form ke hasil membutuhkan kira-kira 10 detik-an kalau di komputer local saya. Agak lambat ya..
Selesai ?? Belum,,teman-teman sebenarnya mesti melakukan teknik ambil value dari hasil yang sudah terlihat diatas. Gunakan teknik DOM dengan Javascript atau lebih mudah dengan jquery.
Bingung ?? lebih jelasnya, coba teman-teman mampir ke situs Bhinneka untuk melihat studi kasus saat kita memilih jasa pengiriman. Lebih menarik ya…
Moga bermanfaat…:)
[download code]
Refrensi : Dari Om Andriant dengan sedikit modifikasi dari saya…



