Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > การใช้ webservece ของไปรษณีย์ ในการตรวจสอบสถานะพัสุด



 

การใช้ webservece ของไปรษณีย์ ในการตรวจสอบสถานะพัสุด

 



Topic : 135001



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์




ใครพอมีแนวทาง หรือ ตัวอย่างโค้ด เกี่ยวกับการใช้ webserveice ของไปรษณีย์บ้างครับ
https://track.thailandpost.co.th/developerGuide
แบบ api soap หรือ api rest ก็ได้ครับ
รบกวนผู้รู้ด้วยครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-03-13 15:47:16 By : coop_korat View : 1192 Reply : 22
 

 

No. 1



โพสกระทู้ ( 3,844 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

ก็นี่หละครับ แนวทาง
https://track.thailandpost.co.th/developerGuide






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-13 16:58:23 By : mongkon.k
 


 

No. 2



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

ถ้าใช้ CodeIgniter ก็จะประมาณนี้
https://www.youtube.com/watch?v=yxwYj9xk5-g
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-13 21:31:17 By : {Cyberman}
 

 

No. 3



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


บอกตรงๆ ครับ ผมงงคนถาม ทำไมไม่เข้าไปถามกับ ไปรณีย์ โดยตรงเลยล่ะครับ
เขาก็เปิด ให้เราเข้าไปสอบถาม ขอรายละเอียดการเชื่อมต่ออยู่แล้วนะครับ

คือกะจะไม่หา ไม่อ่าน ไม่ทำเอง หรือเปล่าครับ ถ้าอย่างนั้นประกาศจ้างดีกว่าไหม

บอกตรงๆ หงุดหงิดมาก คือกะจะเอาอย่างเดียวไม่คิดจะให้เขาบ้างเลยเหรอครับ

คือถ้าถามแล้วเขียนโค๊ดออกมาแล้ว แก้ไขไม่ได้ซักที
เอาโค๊ดมาสอบถามทำไม่ถีงไม่ได้ซักที มีเออเร่อร์แบบนี้ แบบนั้น ถามแบบมืออาชีพ
หรือมือสมัครเล่นแต่ดูแล้วขวนขวายหาความรู้ แบบนี้ยินดีช่วยเต็มทีเลยครับ

ไม่ใช่ยังไม่เป็นอะไรเลย แล้วอยากได้งาน หรือเป็นแล้วแต่ขี้เกียจ มันก็ไม่ไหวจะตอบเหมือนกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-14 13:05:26 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


คือทำบ้างแล้วครับ


<?php

$api_token_url = 'https://trackapi.thailandpost.co.th/post/api/v1/authenticate/token';
$api_track_url = 'https://trackapi.thailandpost.co.th/post/api/v1/track';
$token_key = ' COHXP2M!FcYFV0PjUVKnXMW;CqI+YUDTD#APAfNBNcT&RQP$TJN+V$UHHMU_UoI?QKQ8ApU4N3YhJLUwRuOlU9NSO|I:WgEYX+G&';

function api_request($url, $token, $content = null){

$headers = array(
'Authorization: Token '. $token,
'Content-Type: application/json'
);
//echo"$headers";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($content) );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec( $ch );
curl_close($ch);

return json_decode($result, true);
}
$items = "[
'status' => 'all',
'language' => 'TH',
'barcode' => [
' RE461746287TH'
]
]";

$res_token = api_request($api_token_url, $token_key);
$res_items = api_request($api_track_url, $res_token['token'], $items);
print_r($res_items); //ผลลัพธ์

?>

แต่มัน error ว่า Parse error: syntax error, unexpected '[' in C:\AppServ\www\taxq\track1.php on line 27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 09:00:00 By : coop_korat
 


 

No. 5



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
$items = [
	'status' => 'all',
	'language' => 'TH',
	'barcode' => ['RE461746287TH']
];

$res_token = api_request($api_token_url, $token_key);
$res_items = api_request($api_track_url, $res_token['token'], json_encode($items));
print_r($res_items); //ผลลัพธ์


ลองดูครับ เอามาแบบนี้ซะทีแรก ก็น่าจะจบไปแล้ว
มันเป็นปัญหาจากไวยกรณ์
ที่มัน error เพราะ สิ่งที่ครอบอยู่ เป็น double quote ข้อมูลภายใน quote จะมีการอ้างอิงตัวแปร array อะไรต่าง
ต้องมีการ escape อักขระพิเศษด้วย
เช่น $a = "\[ 'abcdef' \]";
ส่วนตัวอย่างที่ผมเขียนให้ดู ใช้ object และเปลี่ยน object เป็น string อีกที ด้วย json_encode ไม่ต้องกลัวเรื่อง อักขระพิเศษ

ปล.แก้ไขตัด json_encode จากตรงนี้ออกเลยครับ ดู funcion มีการ encode แล้ว


ประวัติการแก้ไข
2020-03-16 09:58:37
2020-03-16 10:03:42
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 09:47:29 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


<?php


function api_request($url, $token, $content = null){

$headers = array(
'Authorization: Token '. $token,
'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($content) );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec( $ch );
curl_close($ch);

return json_decode($result, true);
}

$items = "[
'status' => 'all',
'language' => 'TH',
'barcode' => ['RE461746287TH'] // บันทัดนี้ barcode มันต้องเป็น array จริงหรือเปล่า
]";


$api_token_url = 'https://trackapi.thailandpost.co.th/post/api/v1/authenticate/token';
$api_track_url = 'https://trackapi.thailandpost.co.th/post/api/v1/track';
$token_key = 'COHXP2M!FcYFV0PjUVKnXMW;CqI+YUDTD#APAfNBNcT&RQP$TJN+V$UHHMU_UoI?QKQ8ApU4N3YhJLUwRuOlU9NSO|I:WgEYX+G&';



$res_token = api_request($api_token_url, $token_key);
$res_items = api_request($api_track_url, $res_token['token'], json_encode($items));
print_r($res_items); //ผลลัพธ์
?>

ลองแก้แล้วครับ
ไม่ขึ้น error แต่ขึ้นข้อความนี้แทน
405 Not Allowed
nginx/1.12.2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 10:17:44 By : coop_korat
 


 

No. 7



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


ต้องไปอ่าน error ในลิงค์ของ ไปรษณีย์ครับ มีบอก error อะไรต่างๆ เอาไว้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 10:40:11 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


แสดงว่าโค้ดไม่ได้ผิดแล้ว
error ของไปรษณีย์ก็ไม่มี error ตัวนี้อีก
จะลองแก้ต่อไปครับยังไงก็ขอบคุณมากนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 11:05:26 By : coop_korat
 


 

No. 9



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


$res_items = api_request($api_track_url, $res_token['token'], json_encode($items));

สีแดงผมแก้ใน คห เก่า ให้เอา json_encode ออกนะครับ เพราะใน function มันมีแล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 11:23:28 By : Chaidhanan
 


 

No. 10



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ครับ เห็นแล้วครับ แต่ถึงเอาออกก็ไม่ได้ยังขึ้น 405 อยู่ดีครับ
กำลังสงสัยตัวแปร $headers กับ $items ว่ามันส่งค่ากันยังไง มันมีค่าส่งไปเปล่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 11:47:47 By : coop_korat
 


 

No. 11



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


$items = "[
'status' => 'all',
'language' => 'TH',
'barcode' => ['RE461746287TH']
]";

ตัวอย่างผมไม่มี double quote สีแดงนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 12:00:47 By : Chaidhanan
 


 

No. 12



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าไม่มีมันจะ error ตรง

Parse error: syntax error, unexpected '[' in C:\AppServ\www\taxq\track1.php on line 25

ซึ่งบรรทัดที่ 25 คือ $items = [ อันนี้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 15:20:58 By : coop_korat
 


 

No. 13



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


double quote หัวท้ายนะครับ
php version ไหนครับเนี่ย

ถ้าไม่ได้ เขียนแบบนี้แทนครับ
$items = array('status' => 'all', 'language' => 'TH', 'barcode' =>array('RE461746287TH'));

แต่มันต้องได้สิ
Code (PHP)
$items = ['status' => 'all', 'language' => 'TH', 'barcode' => ['RE461746287TH']];

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 15:30:26 By : Chaidhanan
 


 

No. 14



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


php 5.2.3
กำลังสงสัยยู่ว่าเก่าไปไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 16:12:51 By : coop_korat
 


 

No. 15



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


55555 เปลี่ยนได้ก็ดีครับ

แต่ให้ใช้แบบนี้แทน
$items = array('status' => 'all', 'language' => 'TH', 'barcode' =>array('RE461746287TH'));


5.3 + จะอ้างอิง array แบบนี้ ได้ ครับ $a = ['data','1',2'];

ถ้าจะเปลี่ยนก็ใช้ 7+ ไปเลยครับ แข็งแรงกว่ากันเยอะ
แต่ถ้าไม่เปลี่ยน มันต้องเขียนระวังเยอะมาก เครื่องมือในการป้องกันการโดน แฮ็คมีน้อย
ต้องใช้แรงมากในการเขียน แต่ก็ยังใช้ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-16 17:50:35 By : Chaidhanan
 


 

No. 16



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ลองแก้แล้วครับก็ยังขึ้น
405 Not Allowed
เหมือนเดิม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 09:08:03 By : coop_korat
 


 

No. 17



โพสกระทู้ ( 4,719 )
บทความ ( 8 )



สถานะออฟไลน์


https://www.restapitutorial.com/httpstatuscodes.html

405 คือ method not allowed ไม่ใช่ not allowed เฉยๆ
ปัญหานี้มักมาจาก method GET,POST,PUT,etc อะไรก็ตาม ใช้ไม่ตรงที่เขามีรองรับ
ในหน้าเอกสารของปณ.ดูเหมือนจะเริ่มต้นกับการ get token ดังนั้นเอาแค่ตรงนี้ก่อนเลยว่ามันผ่านหรือไม่ผ่าน ยังไม่ต้องเอาอย่างอื่น แล้วเขียนแบบเรียบง่ายที่สุดด้วย เพื่อทดลองหาข้อผิดพลาด พร้อมทั้งเปิด error ให้หมดทุกอย่าง (หาวิธีตั้ง php.ini สำหรับ development เอา เคยบอกไปเยอะแล้ว)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 09:27:36 By : mr.v
 


 

No. 18



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


Array ( [response] => Array ( [items] => Array ( [EF488252529TH] => Array ( [0] => Array ( [barcode] => EF488252529TH [status] => 103 [status_description] => รับฝาก [status_date] => 28/09/2562 09:30:03+07:00 [location] => บ่อวิน [postcode] => 20234 [delivery_status] => [delivery_description] => [delivery_datetime] => [receiver_name] => [signature] => ) [1] => Array ( [barcode] => EF488252529TH [status] => 201 [status_description] => อยู่ระหว่างการขนส่ง [status_date] => 28/09/2562 10:29:23+07:00 [location] => บ่อวิน [postcode] => 20234 [delivery_status] => [delivery_description] => [delivery_datetime] => [receiver_name] => [signature] => ) [2] => Array ( [barcode] => EF488252529TH [status] => 201 [status_description] => อยู่ระหว่างการขนส่ง [status_date] => 28/09/2562 23:30:12+07:00 [location] => ศป.ศรีราชา [postcode] => 20010 [delivery_status] => [delivery_description] => [delivery_datetime] => [receiver_name] => [signature] => ) [3] => Array ( [barcode] => EF488252529TH [status] => 206 [status_description] => ถึงที่ทำการไปรษณีย์ [status_date] => 29/09/2562 04:43:40+07:00 [location] => อ่าวอุดม [postcode] => 20230 [delivery_status] => [delivery_description] => [delivery_datetime] => [receiver_name] => [signature] => ) [4] => Array ( [barcode] => EF488252529TH [status] => 301 [status_description] => อยู่ระหว่างการนำจ่าย [status_date] => 30/09/2562 12:40:07+07:00 [location] => อ่าวอุดม [postcode] => 20230 [delivery_status] => [delivery_description] => [delivery_datetime] => [receiver_name] => [signature] => ) [5] => Array ( [barcode] => EF488252529TH [status] => 501 [status_description] => นำจ่ายสำเร็จ [status_date] => 30/09/2562 12:41:09+07:00 [location] => อ่าวอุดม [postcode] => 20230 [delivery_status] => S [delivery_description] => ผู้รับได้รับสิ่งของเรียบร้อยแล้ว [delivery_datetime] => 30/09/2562 12:41:09+07:00 [receiver_name] => วิเชียร /ผู้รับรับเอง [signature] => https://trackimage.thailandpost.co.th/f/signature/QDUyNTI5YjVzMGx1VDMz/QGI1c0VGMGx1VDMx/QGI1czBsVEh1VDM0/QGI1czBsdTQ4ODJUMzI= ) ) ) [track_count] => Array ( [track_date] => 17/03/2563 [count_number] => 28 [track_count_limit] => 1000 ) ) [message] => successful [status] => 1 )

ได้มาประมาณนี้แล้ว
เราจะแปลงจาก array มาเป็น string ยังไงครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 12:03:30 By : coop_korat
 


 

No. 19



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

สถานะออฟไลน์


ไม่ต้องแปลงครับ ข้อมูลเป็น text ในรูปแบบ array อยู่แล้ว แค่กำหนด position ให้ถูกต้องเป็นพอครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 12:08:31 By : Genesis™
 


 

No. 20



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


ยังไงเหรอครับ รบกวนขอคำแนะนำครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 13:04:32 By : coop_korat
 


 

No. 21



โพสกระทู้ ( 72 )
บทความ ( 0 )



สถานะออฟไลน์


โอเค ได้แล้วครับ ขอบคุณทุกๆท่านมากๆครับ

โดยเฉพาะคุณ Chaidhanan
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 13:15:22 By : coop_korat
 


 

No. 22



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

สถานะออฟไลน์


document มีบอก
Code (PHP)
<?php
  $someJSON = '[{
  "items": [
    {
      "barcode": "EF023395845TH",
      "status": "103",
      "status_description": "รับฝาก",
      "status_date": "04/06/2562 15:53:22+07:00",
      "location": "ศูนย์ศิลปาชีพบางไทร",
      "postcode": "13290",
      "delivery_status": null,
      "delivery_description": null,
      "delivery_datetime": null,
      "receiver_name": null,
      "signature": null
    },
    {
      "barcode": "ET180232600TH",
      "status": "201",
      "status_description": "อยู่ระหว่างการขนส่ง",
      "status_date": "05/06/2562 14:42:03+07:00",
      "location": "ศูนย์ศิลปาชีพบางไทร",
      "postcode": "13290",
      "delivery_status": null,
      "delivery_description": null,
      "delivery_datetime": null,
      "receiver_name": null,
      "signature": null
    }
  ]
}]';

  
  $someArray = json_decode($someJSON, true);
  print_r($someArray);        // Dump 
  echo '<br><br>Code : '.$someArray[0]['items'][0]['barcode'].'<br>'; // Access Array data

  foreach($someArray as $items)
  {
	  foreach($items as $item)
	  {
		  foreach($item as $arr)
		  {
			  print_r($arr);
		  }
	  }
  }



ประวัติการแก้ไข
2020-03-17 13:37:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-03-17 13:37:18 By : Genesis™
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การใช้ webservece ของไปรษณีย์ ในการตรวจสอบสถานะพัสุด
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่