Discuz Thai

 ลืมรหัสผ่าน
 สมัครสมาชิก

ข้อตกลงการใช้งานกระดานข่าวดิสคัสไทย DiscuzThai Agreement (English Version) ประกาศดิสคัสไทย - ทำเนียบดิสคัสภาษาไทย

Discuz! X3.5 Thai R20240520 Rev.9 (NEW) [วิดีโอช่วยสอน] อัปเกรด Discuz! X3.4 เป็น X3.5 Discord ของ Discuz! Thai Community อย่างเป็นทางการ

Discuz! X3.4 Thai R20220811 (REV.75) สิ้นสุดการสนับสนุน Discuz! X3.4 ภาษาไทยตั้งแต่วันนี้เป็นต้นไป (ขอแนะนำให้อัปเกรดเป็น X3.5 แทน)

ค้นหา
แท็กยอดนิยม: ดิสคัสภาษาไทย Discuz Thai
ดู: 2233|ตอบกลับ: 2

[PHP] การเขียน Api เพื่อส่ง sms ผ่าน SMS Gateway ด้วยภาษา PHP

  [คัดลอกลิงก์]
bitsCAD โพสต์ 2013-3-30 07:57:45 |โหมดอ่าน
แก้ไขครั้งสุดท้ายโดย bitsCAD เมื่อ 2013-3-30 07:59

sms gateway คือผู้ให้บริการส่ง sms ผ่านระบบ internet โดยที่ผู้ให้บริการจะคิดค่าบริการต่อการส่ง 1 sms อยู่ที่ไม่เกิน 1 บาท โดยที่หลายๆเจ้าเปิดให้เราสามารถใช้โค้ดจากเว็บของเราส่งค่าบางอย่างเข้าไปยังเซิฟเวอร์ของผู้ให้บริการ ด้วยวิธีการ GET หรือ POST ไปยัง url ที่ผู้ให้บริการระบุบางเจ้าอาจจะมีโค้ดตัวอย่างเป็นฟังก์ชั่นให้เอามาใช้กันได้เลย เรียกกันติดปากว่า API บางเจ้าก็ให้แค่รูปแบบ url มา ปัญหาของผมอยู่ตรงนี้แหละคับ เพราะลูกค้าของผมดันไปซื้อแพคเกจจากผู้ให้บริการที่มีแต่รูปแบบ url มาให้เท่านั้นครับ

เข้าเรื่องซะที เนื่องจากเค้าไม่มี api ให้ใช้ เอทำไงดีหว่า...สุดท้ายก็เลยรวบรวมความรู้ทั้งหมด(อันมีอยู่น้อยนิด) เขียน api ขึ้นมาใช้งานเองคับ

ตอนนี้ผมมีรูปแบบของ url ที่ผู้ให้บริการให้มาดังนี้


http://mailbit.co.th/Scripts/mgrqispi.dll?Appname=Port2SMS&prgname=HTTP_SimpleSMS1&AccountID=<AccountID>&UserID=<UserID>&UserPass=<UserPass>&Phone=<PhoneNumber>&Text=<Text>&Sender=<Sender>

*ขออนุญาติโพส url จริง(เจ้านี้ราคาถูกมาก)ไม่ได้เกี่ยวข้องอะไรกะผมนะคับลูกค้าซื้อมาให้ใช้เลยยกตัวอย่างเฉยๆใครจะใช้บริการเจ้าใหนก็แล้วแต่นะครับผมเพียงนำเสนอหลักการเท่านั้น
จากที่ผมทำสีแดงไว้นั้นคือตัวแปรทั้งหมดที่เราจะต้องที่เราจะต้องแทนค่าลงไป
<AccountID>,<UserID>,<UserPass> เราจะได้รับหลังจากทำการซื้อแพคเกจแล้ว(เจ้าอื่นอาจจะมีแค่ Username,Password)
<PhoneNumber> คือหมายเลขโทรศัพท์ของผู้รับ sms
<Text> คือเนื้อหาที่เราต้องการส่ง
<Sender> คือชื่อที่จะแสดงให้ผู้รับเห็นว่าใครส่งมา(บางเจ้า/บางแพคเกจ จะไม่มีตัวเลือกนี้แต่จะแสดงเป็นหมายเลขโทรศัพท์ของ gateway ที่ส่งออกไป)


ตัวอย่าง url ที่ส่งได้จริงๆ เพียงแค่ก็อปแล้ววางลงในช่อง address bar หรือทำเป็นลิงค์ก็สมารถส่งได้เลย
http://mailbit.co.th/Scripts/mgrqispi.dll?Appname=Port2SMS&prgname=HTTP_SimpleSMS1&AccountID=1234&UserID=5678&UserPass=91011&Phone=66876543210&Text=Test Send Message From sms gateway&Sender=M_IScyber

เจ้าของหมายเลข 0876543210 ก็จะได้รับ sms ข้อความว่า Test Send Message From sms gateway และเห็นชื่อผู้ส่งเป็น M_IScyber

*เฉพาะเจ้านี้จะต้องกรอก 66 แทน 0 ตัวหน้าครับ(ซึ่ง 66 ก็คือรหัสประเทศของไทยครับ)

การที่เราจะทำลิงค์หรือ redirect ไปที่ url ข้างต้นจะทำให้สมาชิกของเว็บเราสามารถมองเห็นค่าทั้งหมดที่เราส่งให้กับเกทเวย์ สำหรับคนที่พอมีความรู้ก็จะเดาได้ว่าแค่เปลี่ยนเบอร์โทร,เนื้อหา ก็สามารถส่งข้อความให้ใครก็ได้ ซึ่งแบบนี้ถือว่าความปลอดภัยเป็น 0 วันดีคืนดีเครดิตที่เราซื้อมาเป็นร้อยเป็นพัน อาจจะลดฮวบๆทั้งๆที่เวปไม่มีการเคลื่อนไหวเลยก็เป็นได้

ดังนั้นเราจะต้องแอบเปิด url ข้างบนแบบลับเฉพาะคนรู้ใจ (ว่าไปนั่น 555) ด้วยโค้ดด้านล่างนี้ครับ (หลอกให้อ่านมาตั้งยืดยาวเนื้อหาจริงๆมีแค่นี้แหละ 555)
  1. [size=5]<?php
  2. //ฟังก์ชั่นสำหรับส่ง sms
  3. function sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender){

  4.     $url="http://mailbit.co.th/Scripts/mgrqispi.dll?Appname=Port2SMS&prgname=HTTP_SimpleSMS1&AccountID=$AccountID&UserID=$UserID&UserPass=$UserPass&Phone=$Phone&Text=$Text&Sender=$Sender";
  5.     $ch = curl_init();
  6.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  7.     curl_setopt($ch, CURLOPT_URL, $url);
  8.     $ressult=curl_exec($ch);
  9.     return $result;
  10. }

  11. //วิธีเรียกใช้
  12. $AccountID="1234";
  13. $UserID="5678";
  14. $UserPass="91011";
  15. $Phone="66876543210";
  16. $Text="Test Send Message From sms gateway";
  17. $Sender="M_IScyber";
  18. $result=sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender);
  19. echo $result;

  20. /*
  21. ตัวอย่างผลลัพธ์ที่ได้จากการใช้ฟังก์ชั่น :
  22. OK: RequestID=123456 ผ่าน
  23. Error: Authentication พิสูจน์ตัวตนไม่ผ่าน
  24. Error: Account is not active แอคเคาท์ยังไม่แอคทีพ
  25. Error: empty Phone_Number ไม่ได้ส่งหมายเลขโทรศัพท์ของผู้รับ
  26. Error: empty Text ไม่ได้ส่งเนื้อหา
  27. Error: Credit  หมดโควตาแพคเกจที่ซื้อมาแล้ว
  28. */
  29. ?>[/size]
คัดลอกไปที่คลิปบอร์ด

คะแนน

จำนวนผู้เข้าร่วม 1จิตพิศัย +1 ย่อ เหตุผล
cyber2friends + 1 เนื้อหาดีมีสาระ.

ดูบันทึกคะแนน

cyber2friends โพสต์ 2013-6-16 01:24:56
ขอบคุณมากครับ น่าสนใจจริงๆ
l3eil3oy โพสต์ 2013-6-16 07:16:08
ขอบคุณมากๆ ครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | สมัครสมาชิก

รายละเอียดเครดิต

รายชื่อผู้กระทำผิด|Archiver|ดิสคัส ไทย Follow us: Become a fan on facebook. Follow us on Twitter.

GMT+7, 2024-12-22 09:32

Powered by Discuz! X3.4, Rev.66

Copyright © 2001-2021 Tencent Cloud. Licensed

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้