לסגירת הנושא רק-
הנה פירות עמלינו, קצת קימפלתי וערכתי,
תהנו.
https://tchumim.com/topic/13007/
צבי-ש
-
-
השימוש בקובץ על אחריותכם בלבד!
כמובן שעדיף לסלוק דרך האתר המאובטח של נדרים פלוס.
כל מי שמוריד\ משתמש בקובץ יודע שזה על אחריותו בלבד,הקובץ נכתב על ידי, בסיוע כמה מחברי הפורום אשר עזרו בבעיות שנוצרו.
מה יש בקובץ?
יש בקובץ טופס מעוצב בקטנה ממש עם הפרטים הנדרשים לצורך סליקה תקינה של האשראי.
יש למלא כל פעם את המספר מוסד בנדרים פלוס. (מי שבא לו שישנה שיהיה ערך ברירת מחדל על הקופה שהוא צריך.)כשלוחצים על הלחצן אישור תשלום =
יש קוד מאחורה שבודק האם הערכי חובה (כל מה שמסומן באדום) מוגדרים או לא.
אחרי זה לוקח את הנתונים ושולח לנדרים פלוס בבקשת POST.
אחרי זה מקפיץ חלון עם הנתונים שחוזרים מנדרים פלוס (כרגע זה חוזר עם כל הjson שמתקבל, אולי בעתיד נפרק אותו).זהו בגדול.
הנה הקובץ
nedarim_plus.accdbקרדיטים:
צבי-ש
dovid
odedDvir
חייםיודלביץ
חוקר
ול aaaa על הרעיון המקורילמי שממש דחוף לו בלי קרדיטים שיכתוב קרדיט רק לאתר תחומים.
גירסה מעודכנת יותר עם טבלאות שגיאה והצלחה וכן הודעות שגיאה מתאימות וכן טבלא עם מספר המוסד וככה לא צריך להקליד כל פעם מספר מוסד.
nedarim_plus.accdb
יש לרשום בטבלת mosad תחת הרשומה mosad_id את המספר מוסד. -
@צבי-ש אמר בשליחת ערכים בHTTP (POST) בקוד VBA | ערכים שמגיעים מטופס.:
בתמצות השאלה.
האיך אפשרי לשלב בקישור HTTP נתונים שקיבלתי בטופס כך שהקישור ישתנה לפי הנתונים (למשל אם מהטופס קיבלתי מהשדה domain את המילה com לשלבו אחרי זה בבקשת HTTP לקמן מבלי לכתוב COM אלא להשתמש במשתנה domain.או באריכות השאלה.
אחרי שסוכם שם שהדרך הנכונה היא לשלוח כך :
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
נשאלת השאלה האיך אפשרי לשלוח בערכים (מספר כרטיס, תוקף וכו), והרי זה נתון שהמשתמש כותב בטופס ולא שאנחנו יודעים מראש?
כמובן שהכנתי טופס עם שדות.
ניסתי לעשות משהו כזה.'בדיקה האם כל הערכים קיימים , אם לא מחזיר הודעת שגיאה' If IsNull(mosad) Or IsNull(CardNumber) Or IsNull(Tokef) Or IsNull(Amount) Or IsNull(Tashloumim) Or IsNull(CVV) Or IsNull(Zeout) Then MsgBox "משהו לא מלא", vbInformation, "שגיאה": Exit Sub 'הבקשה לנדרים פלוס' Dim XMLHTTP Dim result As String Dim argumentString argumentString = "Mosad=(Mosad)&ClientName=&Adresse=&Phone=&ClientId=&CardNumber=(CardNumber)&Tokef=(Tokef)&Amount=(Amount)&Tashloumim=(Tashloumim)&Groupe=&Avour=Yemot&Token=&CVV=(CVV)&Zeout=(Zeout)&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 'מחזיר את הפלט שהתקבל מנדרים פלוס' MsgBox result, vbInformation, "חזר מנדרים"
כאן בדוגמא ניסיתי להכניס לסוגריים את מה שקיבלתי מהטופס בתקווה אולי זה יעזור לי אבל זה עדיין כותב שגיאה.
הסתדרתי,
לבאים השואלים
מה שצריך לעשות זה להפסיק את המחרוזת לעשות רווח & משתנה רווח & רווח ולהמשיך את המחרוזת.
למשל ככה-
.בהצלחה.
-
בתמצות השאלה.
האיך אפשרי לשלב בקישור HTTP נתונים שקיבלתי בטופס כך שהקישור ישתנה לפי הנתונים (למשל אם מהטופס קיבלתי מהשדה domain את המילה com לשלבו אחרי זה בבקשת HTTP לקמן מבלי לכתוב COM אלא להשתמש במשתנה domain.או באריכות השאלה.
אחרי שסוכם שם שהדרך הנכונה היא לשלוח כך :
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
נשאלת השאלה האיך אפשרי לשלוח בערכים (מספר כרטיס, תוקף וכו), והרי זה נתון שהמשתמש כותב בטופס ולא שאנחנו יודעים מראש?
כמובן שהכנתי טופס עם שדות.
ניסתי לעשות משהו כזה.'בדיקה האם כל הערכים קיימים , אם לא מחזיר הודעת שגיאה' If IsNull(mosad) Or IsNull(CardNumber) Or IsNull(Tokef) Or IsNull(Amount) Or IsNull(Tashloumim) Or IsNull(CVV) Or IsNull(Zeout) Then MsgBox "משהו לא מלא", vbInformation, "שגיאה": Exit Sub 'הבקשה לנדרים פלוס' Dim XMLHTTP Dim result As String Dim argumentString argumentString = "Mosad=(Mosad)&ClientName=&Adresse=&Phone=&ClientId=&CardNumber=(CardNumber)&Tokef=(Tokef)&Amount=(Amount)&Tashloumim=(Tashloumim)&Groupe=&Avour=Yemot&Token=&CVV=(CVV)&Zeout=(Zeout)&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 'מחזיר את הפלט שהתקבל מנדרים פלוס' MsgBox result, vbInformation, "חזר מנדרים"
כאן בדוגמא ניסיתי להכניס לסוגריים את מה שקיבלתי מהטופס בתקווה אולי זה יעזור לי אבל זה עדיין כותב שגיאה.
-
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
שכחתי משהו אחד רק,
אחד הפרמטרים זה הערות והערך שכתוב שם זה ימות (ימות המשיח), תשנה את זה לאקסס או משהו כזה או שתשאיר ריק -
@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
בדקתי אצלי וזה עובד
-
@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 ריק" }
-
@OdedDvir אמר בשליחת POST לנדרים+ ב VBA:
@aaaa אמר בשליחת POST לנדרים+ ב VBA:
תיכנס לכתובת הזאת
https://www.matara.pro/nedarimplus/V6/Files/WebServices/DebitCard.aspx
בדפדפן ותראהזה - בוודאי יחזיר שגיאה, כי כשאני נכנס לכתובת בדפדפן אני מבצע בקשת GET, לא POST...
עוד נקודה מצאתי עכשיו דרך חיצונית לעשות את זה בעזרת curl
נו נו... זה פשוט מחזק את הטענה שהבקשה לא נשלחת נכון מ-VBA.
לכאורה הוא התכוון שזה מראה את אותה שגיאה כמו שמראה שגיאה שלא נשלח פרמטרים, ולכן הוא אמר שיש שגיאה בצורת שליחה
-
@dovid אמר בשליחת POST לנדרים+ ב VBA:
@aaaa אני לא מכיר את נדרים אבל ככה שולחים POST בWinHttpRequest.
אולי הוא מצפה לפורמט JSON, אבל לא ככה היה נשמע מ@חוקר.לא, שולחים רגיל לגמרי רק בפוסט.
-
עכשיו אני רואה שהבאת מ"מ איך ניסת לשלוח
תנסה לשנות איפה שכתוב post,false לpost, true
כלומר שהשיטת שליחה תהיה פוסט -
@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 שניסת לשלוח ונבדוק איך אפשר להתאימו לשליחה בפוסט?
שליחת POST לנדרים+ ב VBA
לתועלת הציבור|קובץ אקסס לסליקה באשראי דרך נדרים פלוס
שליחת ערכים בHTTP (POST) בקוד VBA | ערכים שמגיעים מטופס.
שליחת ערכים בHTTP (POST) בקוד VBA | ערכים שמגיעים מטופס.
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA
שליחת POST לנדרים+ ב VBA