העברת נתונים בן שלוחה לשלוחה
-
מעלה את זה לשלוחה ההיא
אם זה מיידית,
[אחרת שני משתמשים באותו זמן ישבשו את המערכת]
הכי טוב ליצור שלוחת תשלום מיוחדת לכל אחד אם כלל הנגדרות הנצרכות ומייד אחרי שיש את הסכום לתשלום המשתמש עובר לשלוחה שנבנית עבורו [למשל ששם השלוחה הוא הטלפון שלו] ושם מתבצע לו התשלום לפי הסכום המוגדר
את השלוחה כמובן יבנה הAPI הראשון
-
איך API בונה שלוחה?
לא הכרתי כזה דבר -
@lealam
למה לא לעשות את שניהם על אותה שלוחה? -
@טוסטוס-לא-יעבור אמר בהעברת נתונים בן שלוחה לשלוחה:
@lealam
למה לא לעשות את שניהם על אותה שלוחה?איך?
-
@lealam
ב API כמובן, רק אם זה בנייה שלכם (של השלוחה)! -
@טוסטוס-לא-יעבור
כלאמר להפעיל קריאת POST בשביל נדרים פלוס? -
@lealam
פשוט לעשות סליקת אשראי עם כל הפרמטרים שצריך בסוף הקוד -
לכאורה באותה שלוחה זה לא יעבוד כי הכלל הוא שתוך כדי שמאזין נמצא בשלוחה הההגדרות לא משתנות כלפיו, רק למאזינים הבאים.
דבר נוסף שאם זה יהיה בשלוחה עצמה, ומאזין נוסף יעלה לקו, הוא יקבל את ההגדרות של המאזין הקודם.
[ולכן הצעתי לפתוח שלוחה לכל אחד]יש הגדרה של עדכון הגדרות EXT בAPI
שם ניתן ליצור שלוחה חדשה עם ההגדרות שרוצים, ברגע ששולחים פקודה כזאת נוצרת שלוחה עם כל מה שכתוב בפקודה, הAPI הראשון יחזיר GO_TO לשלוחה שנוצרה, ושם כבר מופיע הסכום... -
@מנסה
למיטב הבנתי זה שהסכום קיים וצריך רק סליקת אשראי.
ולמה זה משתנה למאזין הבא מאיפה הבאת את זה? -
@lealam אמר בהעברת נתונים בן שלוחה לשלוחה:
הכוונה שיש לי שלוחת API שמחשבת כמה מישהו צריך לשלם
ואז אני עוברת לשלוחה שתגבה כסף דרך ימות משיח
איךאני מעבירה את הסכום בין השלוחות? -
@מנסה אמר בהעברת נתונים בן שלוחה לשלוחה:
לכאורה באותה שלוחה זה לא יעבוד כי הכלל הוא שתוך כדי שמאזין נמצא בשלוחה הההגדרות לא משתנות כלפיו, רק למאזינים הבאים.
דבר נוסף שאם זה יהיה בשלוחה עצמה, ומאזין נוסף יעלה לקו, הוא יקבל את ההגדרות של המאזין הקודם.
[ולכן הצעתי לפתוח שלוחה לכל אחד]יש הגדרה של עדכון הגדרות EXT בAPI
שם ניתן ליצור שלוחה חדשה עם ההגדרות שרוצים, ברגע ששולחים פקודה כזאת נוצרת שלוחה עם כל מה שכתוב בפקודה, הAPI הראשון יחזיר GO_TO לשלוחה שנוצרה, ושם כבר מופיע הסכום...יכול להדגים בכמה שורות קוד?
-
את מה להדגים את יצירת שלוחה?
אם זו הכוונה, אז הרעיון הוא ככה,
אני יוצא מתוך הנחה שיש לכם את הסכום כמשתנה בPHP , אם כן תוסיפו את הקוד הבא.
[רק לשנות את המערכת, הסיסמה, והשלוחה, ואם אתם לא בנדרים פלוס להחליף את השורות הרלוונטיות בקוד]הסיבה שעשיתי שיקריא את הסכום, כי בזמן הזה השלוחה ודאי מספיקה לעלות ללא שתיווצר שגיאה במעבר לשלוחה שאינה קיימת או שמעודכנת עדיין ללקוח הקודם.
//להוסיף את זה בראש הדף if (isset($_GET['hangup'])) {exit();} $mahahrechet = 07731300000; $pas =123456; $e = משתנה המכיל את הסכום לחיוב; $shlucha =מספר השלוחה להעלות אליה את הקובץ [שלוחה חדשה שלא קיימת]; $hagdarot = "type=credit_card credit_card_type=nedarim_plus credit_card_terminal_number=כאן יש לרשום את מספר המוסד שקיבלתם מנדרים פלוס billing_sum=$e"; echo "id_list_message=t-הסכום לתשלום הוא .d-$ e&go_to_folder=/$shlucha&"; //זיהוי מערכת להעלות את הקובץ $con = new connecting_to_yemot_api($mahahrechet, $pas); //יוצר קובץ להעלאה $File = new oFile('ext.ini', 'text/plain', $hagdarot); //מיקום הקובץ $body = array ( 'path' => 'ivr2:/$shlucha/ext.ini', 'convertAudio' => 0, 'fileUpload' => $File ); //הפעלת העלאת הקובץ $a = $con -> connecting('UploadFile', $body); $b = $a->responseStatus; //הדפס תשובה //print_r($a); //המחלקה class BodyPost { // part "multipart/form-data" public static function PartPost($name, $val) { $body = 'Content-Disposition: form-data; name="' . $name . '"'; // check instance of oFile if($val instanceof oFile) { $file = $val->Name(); $mime = $val->Mime(); $cont = $val->Content(); $body .= '; filename="' . $file . '"' . "\r\n"; $body .= 'Content-Type: ' . $mime ."\r\n\r\n"; $body .= $cont."\r\n"; } else $body .= "\r\n\r\n".$val."\r\n"; return $body; } public static function Get(array $post, $delimiter = '-------------0123456789') { if(is_array($post) && !empty($post)) { $bool = true; //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; }; if($bool) { $ret = ''; foreach($post as $name=>$val) $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val); $ret .= "--" . $delimiter . "--\r\n"; } else $ret = http_build_query($post); } else throw new \Exception('Error input param!'); return $ret; } } class oFile { private $name; private $mime; private $content; public function __construct($name, $mime=null, $content=null) { if(is_null($content)) { $info = pathinfo($name); // check is exist and readable file if(!empty($info['basename']) && is_readable($name)) { $this->name = $info['basename']; // get MIME $this->mime = mime_content_type($name); // load file $content = file_get_contents($name); if($content!==false) { $this->content = $content; } else { throw new Exception('Don`t get content - "'.$name.'"'); } } else { throw new Exception('Error param'); } } else { $this->name = $name; if(is_null($mime)) $mime = mime_content_type($name); $this->mime = $mime; $this->content = $content; }; } public function Name() { return $this->name; } public function Mime() { return $this->mime; } public function Content() { return $this->content; } } class connecting_to_yemot_api { public $token; const URL = 'https://www.call2all.co.il/ym/api/'; public function __construct($user_name, $password) { $body = array('username' => $user_name, 'password' => $password); $body = http_build_query($body); $opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded", 'content' => $body, 'follow_location' => false) ); $context = stream_context_create($opts); $url = self::URL.'Login'; $result = file_get_contents($url, FALSE, $context); $result = json_decode($result); if($result -> responseStatus == 'OK') { $this -> token = $result -> token; return TRUE; } else { throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים'); } } public function __destruct() { $this -> connecting('Logout'); } public function connecting($action, $body = array()) { $delimiter = '----'.uniqid(); $body['token'] = $this -> token; $body = BodyPost::Get($body, $delimiter); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter, 'content' => $body, 'follow_location' => false ) ); $context = stream_context_create($opts); $url = self::URL.$action; $result = file_get_contents($url, FALSE, $context); $headers = $this -> parseHeaders($http_response_header); if($headers['Content-Type'][0] == 'application/json') { return json_decode($result); } else { return $result; } } private function parseHeaders($headers) { // פונקציה שמקבלת מערך של שורות הכותרות // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד // מערך הכותרות $head = array(); foreach( $headers as $k=>$v ) { $t = explode( ':', $v, 2 ); if( isset( $t[1] ) ) { if($t[0] == 'Set-Cookie') { $CookiesArr = array(); $cookies = explode( ';', $t[1]); foreach($cookies as $cookie) { $c = explode( '=', $cookie); if( isset( $c[1] ) ) { $CookiesArr[ trim($c[0]) ] = trim( $c[1] ); } else { $CookiesArr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $CookiesArr; } elseif($t[0] == 'Content-Type') { $arr = array(); $children = explode( ';', $t[1]); foreach($children as $child) { $c = explode( '=', $child); if( isset( $c[1] ) ) { $arr[ trim($c[0]) ] = trim( $c[1] ); } else { $arr[] = trim( $c[0] ); } } $head[ trim($t[0]) ] = $arr; } else { $head[ trim($t[0]) ] = trim( $t[1] ); } } else { $head[] = $v; if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) ) { $head['reponse_code'] = intval($out[1]); } } } return $head; } }
-
פוסט זה נמחק! -
@מנסה
תודההה