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

Showing posts with label JNE. Show all posts
Showing posts with label JNE. Show all posts

Cara Ambil Harga Pengiriman JNE dengan PHP

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…

Cara Ambil Harga Pengiriman JNE ke Website E-Commerce

Bagaimana ya cara mengetahui harga pengiriman JNE dari barang yang akan kita kirim? Jawabnya adalah ya tinggal main ke situs JNE-nya saja tuh,,tinggal masukan kota asal, kota tujuan, dan berat barang…selesai. Tapi kalau kita embed ke website kita bagaimana ya ? Maksudnya kita sisipkan form kota asal, kota tujuan dan berat barang ke website kita tanpa harus membuka situs JNE. Kalau analisis saya, ada 2 cara :
Cara Pertama :
Kita minta harga-harga pengiriman barang ke kantor JNE, lalu dari data-data tersebut kita jadikan menjadi beberapa table. Kita buat form kota asal, kota tujuan dan berat barang lalu actionnya, kita akses table yang telah kita buat.
Cara Kedua :
Kita ambil harga-harga pengiriman barang melalui situs JNE itu sendiri. Kadang senior-senior bilang parsing data dari website orang lain. Kita tetap membuatkan form untuk kota asal, kota tujuan dan berat barang namun action nya kita arahkan ke website JNE.
Kedua cara tersebut menurut saya punya kelemahan dan kelebihan masing-masing. Berikut saya jelaskan sedikit yang saya ketahui mengenai kelemahan dan kelebihan kedua cara tersebut.
Cara pertama :
Kelebihan :
  • Cepat Aksesnya, cepat akses dalam arti kita akses data dari database kita sendiri. Karena harga-harga JNE sudah kita buat pada table di database apps kita.
  • Ketidakbergantungan kita kepada website orang lain
Kekurangan :
  • Capek menginputkan daftar-daftar harga JNE ke database kita.
  • Daftar harga tidak up to date. Apabila JNE mengubah data berarti daftar harga kita tidak up to date dengan daftar harga JNE
  • Mesti melakukan update manual harga sesuai dengan update-an harga di JNE
Cara kedua :
Kelebihan :
  • Daftar harga up to date sesuai dengan harga di JNE, karena kita langsung ambil data dari JNE
  • Tidak perlu membuat table di database kita, jadi kapasitas database kita semakin irit.
  • Tidak perlu proses mengubah harga / update harga JNE
Kekurangan :
  • Lambat aksesnya, butuh koneksi yang kuat.
  • Apabila situs JNE down, berarti cara kedua kita akan down juga. (kebergantungan dengan website lain)
Kurang lebih seperti itulah kelebihan dan kekurangan kalau kita menggunakan salah satu cara mendapatkan harga pengiriman barang dari JNE.
Kenapa cara pertama lebih cepat dibanding dengan cara kedua ? Kalau saya analogikan sederhananya seperti ini. Ibarat kita punya galon (anggap database). Jarak kosan kita (website kita) dengan depot air (website JNE) kira-kira 100 meter. Saat ada teman kita (member website) main ke kosan kita dan kebetulan tidak ada air di kosan (galon kosong alias tidak ada database harga JNE). Kalu teman kita haus, ya kita (website) pergi ke depot air (JNE) untuk mengambil air untuk teman (member website) kita. Ketika suatu hari teman kita main dan kehausan lagi, ya kita ke depot air kembali untuk ambil air. Tiap hari teman main ke kosan kita pasti bilang *ah ini kamu teh kurang praktis, lemot…* [ini analogi dari cara kedua]. Berbeda dengan cara pertama dimana kita menggunakan galon untuk mengisi air dari depot air. Kalau kosong ya kita isi ulang. Jadi kita tidak perlu bolak balik ke depot air apabila teman kita kehausan. [analogi cara pertama].
Kalau saya sendiri lebih memilih cara yang pertama karena kecepatan akses lebih saya fokuskan apabila membuat website E-Commerce. Kalau cara kedua mungkin akan lebih baik apabila terdapat API pada JNE sehingga kecepatan akses menjadi lebih baik.
Ya…seperti itulah cara pengambilan harga pengiriman JNE untuk web E-Commerce kita. Selebihnya mohon maaf kalau ada yang salah..CMIIW..
Moga bermanfaat..


Refrensi

Loading..

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More