-
שיטת השליחה בנדרים השתנתה מ GET ל POST בלבד.
עליך לבודד את הנתוניםMosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online
מה URL ולשלוח את המידע בPOST -
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
אנחנו מעוננים לבצע חיוב אשראי בנדרים פלוס דרך אקסס
הבקשה נשלחת מהאתר בצורה כזאת כפי שאפשר לראות דרך הקונסול, וכפי שהראה זאת כאן @חוקרhttps://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx?Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online
ניסנו להריץ את זה ב VB כפי שמופיע כאן (כמובן עם פרטי אשראי תקינים)
במספר וויארציות שונות
ותמיד התגובה היא{ "Status" : "Error" , "Message" : "לא ניתן לשדר עסקה בצורה זו. פנה לתמיכה טכנית." }
ובמערכת לא מופיע חיוב
ורק במידה ואחד מהנתונים היה שגוי קיבלנו תגובה בהתאםאשמח לעזרה
ואפילו בתשלוםכמו שכתב חוקר וכמו שהסברתי לך באישי, הבקשה צריכה להישלח כפוסט.
אולי תעלה את קוד הvba שניסת לשלוח ונבדוק איך אפשר להתאימו לשליחה בפוסט? -
Dim TCRequestItem As Object Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1") TCRequestItem.Open "POST", "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx?Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online", False TCRequestItem.setRequestHeader "Content-Type", "application/xml" TCRequestItem.setRequestHeader "Accept", "application/xml" TCRequestItem.send Debug.Print TCRequestItem.responseText
איך אני מחלק את הנתונים מהכתובת?
-
Dim TCRequestItem As Object Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1") TCRequestItem.Open "POST", "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx", False TCRequestItem.setRequestHeader "Content-Type", "application/xml" TCRequestItem.setRequestHeader "Accept", "application/xml" TCRequestItem.send "Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online" Debug.Print TCRequestItem.responseText
-
@dovid אמר בשליחת POST לנדרים+ ב VBA:
Dim TCRequestItem As Object Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1") TCRequestItem.Open "POST", "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx", False TCRequestItem.setRequestHeader "Content-Type", "application/xml" TCRequestItem.setRequestHeader "Accept", "application/xml" TCRequestItem.send "Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online" Debug.Print TCRequestItem.responseText
לא עבד, הוא לא מצרף אותם
הפלט הוא
{ "Status" : "Error" , "Message" : "פרמטר Mosad ריק" }
-
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
לא עבד, הוא לא מצרף אותם
הוא כן מצרף אותם. השגיאה היא ששלחת פרמטר מוסד ריק (כמו שכתוב בתגובה וכמו שענה לך @dovid ). תבדוק אם אתה אכן שולח מספר מוסד.
ב-VBA, יתכן גם שאתה משרשר אפילו פרמטר אחר עם ערך NULL - וכל המחרוזת מתאפסת, זה יקרה אם אתה מחבר מחרוזות עם+
במקום עם&
... תשתמש כמובן ב-&
. -
@OdedDvir בדקתי הכל מחובר ב &
אבל הוא לא מצרף אותם
תיכנס לכתובת הזאת
https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx
בדפדפן ותראהעוד נקודה מצאתי עכשיו דרך חיצונית לעשות את זה
בעזרת curl
רק שבגלל שזה חיצוני, זה קצת מסרבל
אצלו הפקודהcurl --data "Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online" https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx
עובדת חלק
-
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
תיכנס לכתובת הזאת
https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx
בדפדפן ותראהזה - בוודאי יחזיר שגיאה, כי כשאני נכנס לכתובת בדפדפן אני מבצע בקשת GET, לא POST...
עוד נקודה מצאתי עכשיו דרך חיצונית לעשות את זה בעזרת curl
נו נו... זה פשוט מחזק את הטענה שהבקשה לא נשלחת נכון מ-VBA.
-
@OdedDvir אמר בשליחת POST לנדרים+ ב VBA:
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
תיכנס לכתובת הזאת
https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx
בדפדפן ותראהזה - בוודאי יחזיר שגיאה, כי כשאני נכנס לכתובת בדפדפן אני מבצע בקשת GET, לא POST...
עוד נקודה מצאתי עכשיו דרך חיצונית לעשות את זה בעזרת curl
נו נו... זה פשוט מחזק את הטענה שהבקשה לא נשלחת נכון מ-VBA.
לכאורה הוא התכוון שזה מראה את אותה שגיאה כמו שמראה שגיאה שלא נשלח פרמטרים, ולכן הוא אמר שיש שגיאה בצורת שליחה
-
@aaaa קצת דיבוג יעזור פה. תשנה את הקוד לקוד הבא:
Dim TCRequestItem As Object Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1") TCRequestItem.Open "POST", "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx", False TCRequestItem.setRequestHeader "Content-Type", "application/xml" TCRequestItem.setRequestHeader "Accept", "application/xml" Dim Body As String Body = "Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online" Debug.Print Body Stop TCRequestItem.send Body Debug.Print TCRequestItem.responseText
וכשהוא מגיע לנקודת העצירה ב
Stop
תבדוק מה מודפס בחלון Immediate (ה"קונסול" של VBA)
(כמובן שתבנה את Body כפי שאתה רוצה לשלוח באמת...) -
@OdedDvir אמר בשליחת POST לנדרים+ ב VBA:
@aaaa קצת דיבוג יעזור פה. תשנה את הקוד לקוד הבא:
Dim TCRequestItem As Object Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1") TCRequestItem.Open "POST", "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx", False TCRequestItem.setRequestHeader "Content-Type", "application/xml" TCRequestItem.setRequestHeader "Accept", "application/xml" Dim Body As String Body = "Mosad=123456&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online" Debug.Print Body Stop TCRequestItem.send Body Debug.Print TCRequestItem.responseText
וכשהוא מגיע לנקודת העצירה ב
Stop
תבדוק מה מודפס בחלון Immediate (ה"קונסול" של VBA)
(כמובן שתבנה את Body כפי שאתה רוצה לשלוח באמת...)בדקתי בשבילו.. (גם לי יהיה שימוש עם אצליח לסלוק דרך אקסס)
זה מחזיר את כל הערכים עם & בין אחד לשני,
אבל כשאני ממשיך ותכלס שולח זה עושה לי ERORR(ככה זה מחזיר [מספר מוסד הראשון שמצאתי בנדרים])
Mosad=7006059&ClientName=&Adresse=&Phone=0512345678&ClientId=&CardNumber=4580458045804580&Tokef=1219&Amount=520&Tashloumim=12&Groupe=&Avour=Yemot&Token=&CVV=123&Zeout=123456789&Currency=1&MasofId=Online { "Status" : "Error" , "Message" : "פרמטר Mosad ריק" }
-
@aaaa קח תהנה.
Dim XMLHTTP Dim result As String Dim argumentString argumentString = "Mosad=7006356&ClientName=&Adresse=&Phone=0345677765&ClientId=&CardNumber=4580458045804580&Tokef=0776&Amount=1&Tashloumim=1&Groupe=&Avour=Yemot&Token=&CVV=386&Zeout=123456789&Currency=1&MasofId=Online" Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0") XMLHTTP.Open "POST", _ "https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx", False XMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8" XMLHTTP.send argumentString result = XMLHTTP.responsetext Set XMLHTTP = Nothing Debug.Print result
בדקתי אצלי וזה עובד
-
-