AlgoritmaNews Adalah Situs Berita Perkembangan Teknologi Terkini Yang Ter Update Setiap Hari | Mulai Dari Berita Teknoligi, Sains, Perbintangan, NASA, Satelit, Tips Trik Mengatasi Masalah Yang Terjadi Pada Prangkat Teknologi dan Masih Banyak Info Menarik Lainya.
Promo Web Hosting 500mb Bw Unlimited Cuma Rp.50rb Untuk 10 Pendaftar Pertama Order disini

Cara Ambil Harga Pengiriman JNE dengan PHP

By. AlgoritmaNews - 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 :
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>
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 :
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&timestamp=".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&timestamp=".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?>
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 :D .
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…

0 Comments:

:)) ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} :)] ~x( :-t b-( :-L x( =))

Post a Comment

Loading..

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More