API שליחת סמסים בחברת מיקרופיי
-
https://help.micropay.co.il/37/api-ממשק-שליחת-קמפיין-סמס/
אני משתמש הרבה בשליחת סמסים דרך API אבל שליחה בודדת של אחד אחד, אני בונה עכשיו משהו של שליחה כמות, הם כותבים שצריך להשתמש בשיטת post רק לא מביאים מדריך איך עושים את זה, זה איזה משהו מפורסם שאני לא יודע, או איזה משהו שלהם.
תודה.. -
בכוונה החסרת פרטים, או שרק הראית לי את הכיוון. (וכבר רואה כמובן..)
השלמתי את שאר הפרמטרים שלכאורה צריך, הקוד משתמש, ושיניתי את ה post-1 ל 2 כך כתוב שם. ולא עובד.
אולי לא הבנתי את המבנה עדיןlet userInput = $w('#textBox1').value;//רשימת המספרים var response = await fetch('http://www.micropay.co.il/ExtApi/ScheduleSms.php', { method: 'POST', body: 'post=2&uid=#####&un=######&msg=test+message&list='+userInput +'&charset=iso-8859-8&from=03555555' }).then(x => x.text());
-
@אבי-203 אולי תנסה להוסיף ? לפני הפרמטרים של הפוסט -
let userInput = $w("#textBox1").value; //רשימת המספרים var response = await fetch("http://www.micropay.co.il/ExtApi/ScheduleSms.php", { method: "POST", body: "?post=2&uid=#####&un=######&msg=test+message&list=" + userInput + "&charset=iso-8859-8&from=03555555", }).then((x) => x.text());
כך נראה מהדוגמאות באתר שלהם
-
@אבי-203 טוב תראה, מה שבטוח שזו השגיאה שמוצגת לך - כתוב לך שלא הזנת את הבקשה כנדרש.
אולי תנסה להריץ את הכל בכתובת אחת ארוכה?
אני מתכוין -
ככהlet userInput = $w("#textBox1").value; //רשימת המספרים var response = await fetch("http://www.micropay.co.il/ExtApi/ScheduleSms.php?post=2&uid=#####&un=######&msg=test+message&list=" + userInput + "&charset=iso-8859-8&from=03555555" { method: "POST" }).then((x) => x.text());
עריכה טעות בסיסית שלי בהבנת המתודולוגיה של POST... עי' להלן
-
@chv מה שעשית זה GET.
אתם צריכים להכיר את ההבדל בין GET לPOST, כתבתי על זה כמה פעמים.
(בPOST אין סימן שאלה בהתחלה וגם הפרמטרים יכולים להישלח בגוף הבקשה, וממילא הפרמטרים יכולים להיות ארוכים ללא הגבלה).
צריך גם לדעת לשלוח את הבקשה, ולתעד את התשובה או את השגיאה.לגופה של בעיה ייתכן שצריך להוסיף כותרת
Content-Type
עםapplication/x-www-form-urlencoded
-
זה נהיה פתאום שיח של גדולים.. גדול עלי.
אני מבין גם מהמדריך שלהם שget מוגבל עד 10 מספרים, post מומלץ עד 10000
ב get אני משתמש תמיד, משרשר את כל הפרמטרים אחרי ה? זה עובד נהדר.
@dovid לא הבנתי מה הכוונה"לגופה של בעיה ייתכן שצריך להוסיף כותרת Content-Type עםapplication/x-www-form-urlencoded"
-
var response = await fetch('http://www.micropay.co.il/ExtApi/ScheduleSms.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'post=2&uid=#####&un=######&msg=test+message&list=050000000&charset=iso-8859-8&from=03555555' }).then(x => x.text()).catch(console.error); console.log(response);
תריץ בדיוק ככה (חוץ משינוי הפרמטרים של השם והסיסמה והטלפון הבודד)
ותמסור את תוצאות הlog (אתה יכול לגשת ללוג?) -
זה לכאורה גם בget
<?php //******************************************************************************* // Function: mpSendSMS // Author: MicroPay // Parameters: // Required: // token - the token you created in MicroPay // msg - the message yo want to send // to - comma seperated phone list or pool id in micropay system // from - phone number that will appear as source of the SMS // Optional: // date - date for scheduling in the format "2009-08-17 14:33" -> YYYY-MM-DD HH:MM // Return: // result of the request //******************************************************************************* function mpSendSMS($token, $msg, $to, $from, $date = "") { $msg = urlencode($msg); $request = "http://www.micropay.co.il/ExtApi/ScheduleSms.php"; $request .= "?get=1&token=".$token."&msg=".$msg."&from=".$from; if (strlen($to) > 8) $request .= "&list=".$to; else $request .= "&pid=".$to; if ($date != "") { $DateValue = strtotime($date); $DateParts = getdate($DateValue); $request .= "&dy=".$DateParts["year"]; $request .= "&dm=".$DateParts["mon"]; $request .= "&dd=".$DateParts["mday"]; $request .= "&dh=".$DateParts["hours"]; $request .= "&di=".$DateParts["minutes"]; } $curlSend = curl_init(); curl_setopt($curlSend, CURLOPT_URL, $request); curl_setopt($curlSend, CURLOPT_RETURNTRANSFER, 1); $curlResult = curl_exec($curlSend); $curlStatus = curl_getinfo($curlSend, CURLINFO_HTTP_CODE); curl_close($curlSend); if ($curlStatus === 200) return $curlResult; else return "ERROR"; } ?>