bitsCAD โพสต์ 2013-3-30 07:57:45

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

แก้ไขครั้งสุดท้ายโดย 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)<?php
//ฟังก์ชั่นสำหรับส่ง sms
function sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender){

    $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";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    $ressult=curl_exec($ch);
    return $result;
}

//วิธีเรียกใช้
$AccountID="1234";
$UserID="5678";
$UserPass="91011";
$Phone="66876543210";
$Text="Test Send Message From sms gateway";
$Sender="M_IScyber";
$result=sendsms($AccountID,$UserID,$UserPass,$Phone,$Text,$Sender);
echo $result;

/*
ตัวอย่างผลลัพธ์ที่ได้จากการใช้ฟังก์ชั่น :
OK: RequestID=123456 ผ่าน
Error: Authentication พิสูจน์ตัวตนไม่ผ่าน
Error: Account is not active แอคเคาท์ยังไม่แอคทีพ
Error: empty Phone_Number ไม่ได้ส่งหมายเลขโทรศัพท์ของผู้รับ
Error: empty Text ไม่ได้ส่งเนื้อหา
Error: Creditหมดโควตาแพคเกจที่ซื้อมาแล้ว
*/
?>

cyber2friends โพสต์ 2013-6-16 01:24:56

ขอบคุณมากครับ น่าสนใจจริงๆsm900dzsm945dz

l3eil3oy โพสต์ 2013-6-16 07:16:08

ขอบคุณมากๆ ครับsm915dz
หน้า: [1]
ดูในรูปแบบกติ: การเขียน Api เพื่อส่ง sms ผ่าน SMS Gateway ด้วยภาษา PHP