חתימה על פרמטרים , אימות פרטים , מנגנון מניעת הונאות Sign=True

כללי

  • מנגנון זה בא להגן על אימות ותקינות הנתונים החוזרים לכתובת הצלחה/כישלון
  • הוא רלוונטי בפרוטוקול PAY בלבד
  • קיים מודול המונע שינוי פרמטרים ביציאה לדף התשלום -קיים מאמר בנושא -״מנגנון מניעת הונאות יציאה לדף תשלום ״

 

שליחת פרמטר בבקשת התשלום לצורך חתימה על התשובה 

יש להוסיף לכל בקשת תשלום בפרוטקול pay 

Sign=True

 

SHA256 – המפתח המשותף מוצמד לתחילת ההודעה ולהכל עושים Hash
HMAC256 – פרוטוקול שמקבל מידע ומפתח וחותם עליו עם SHA256

שים לב שלשדות החופשיים אנו מבצעים escape לפני השליחה

דוגמה לחתימה:

דוגמא לתשובה 
http://payment.yaad.net/pay/no.htm?Id=0&CCode=6&Amount=0&ACode=&Order=&Fild1=%20&Fild2=&Fild3=&

הערך שנחתם 

Id=0&CCode=6&Amount=0&ACode=&Order=&Fild1=%20&Fild2=&Fild3=

 

 מפתח לחתימה לדוגמא נשלח לבעלי המסוף חד פעמי אינו ניתן לשינוי = 

b6589fc6ab0dc82cf12099d1c2d40ab994e8410c

 

ערך החתימה אשר נשלח בתשובה לעסקה תחת פרמטר 

Sign=689c64381d7f5358e89fd7f7f19d6842be651de0bc99ce16eb0d020b06f63e83 

 

הדמיה במחשבון hash

 

דוגמא נוספת  

דוגמא לבקשת תשלום 

 

<form action="https://icom.yaad.net/p/" method="post" >


<input type="hidden" name="action" value="pay">
<input type="hidden" name="Masof" value="0010020610"> 
<input type="hidden" name="Amount" value="2">
<input type="hidden" name="Tash" value="1">
<input type="hidden" name="PassP" value="1234">
<input type="hidden" name="MoreData" value="True">
<input type="hidden" name="Sign" value="True">
<input type="hidden" name="UTF8" value="True">
<input type="hidden" name="UTF8out" value="True">
<input type="hidden" name="Order" value="1234">
<!--Optional-->
<input type="hidden" name="ClientName" value="שריג">
<input type="hidden" name="ClientLName" value="אבישי">
<input type="hidden" name="street" value="levanon 3">
<input type="hidden" name="city" value="netanya">
<input type="hidden" name="zip" value="42361">
<input type="hidden" name="phone" value="098610338">
<input type="hidden" name="cell" value="0506400013">
<input type="hidden" name="email" value="avi@yaad.net">
<input type="hidden" name="sendemail" value="True">


<input type="submit" value="pay">
</form>




דוגמא לתשובה 



https://icom.yaad.net/yaadpay/tmp/0010020610/tnx_iframe.htm?Id=6092105&CCode=0&Amount=2&ACode=0012345&Order=1234&Fild1=%D7%A9%D7%A8%D7%99%D7%92%20%D7%90%D7%91%D7%99%D7%A9%D7%99&Fild2=&Fild3=&Sign=2d30665d2c21bf9a1a3e5df7d1645a0e1aadf928a245655faed629f9582a63b3&Bank=6&Payments=1&UserId=203269535&Brand=2&Issuer=2&L4digit=0000&street=levanon%203&city=netanya&zip=42361&cell=0506400013&Coin=1&Tmonth=01&Tyear=2019&Hesh=2081



 

ערך החתימה שחוזר משרת YaadPay

Sign=2d30665d2c21bf9a1a3e5df7d1645a0e1aadf928a245655faed629f9582a63b3

 

הפרמטרים עליהם מתבצעת החתימה 

 

Id=6092105&CCode=0&Amount=2&ACode=0012345&Order=1234&Fild1=%D7%A9%D7%A8%D7%99%D7%92%20%D7%90%D7%91%D7%99%D7%A9%D7%99&Fild2=&Fild3=

 

באמצעות מפתח 

 

7110eda4d09e062aa5e4a390b0a572ac0d2c0220

 

 

הדמיה לביצוע החתימה באמצעות מחשבון Hash

 

דוגמא לקוד php שמבצע את בדיקת החתימה

                          $agreement = $this->input->get('HKId'); //  מס' הסכם רלוונטי בדף תשלום במצב הוראת קבע
                        $deal = $this->input->get('Id'); // מס' עסקה
                        $CCode = $this->input->get('CCode'); // מס' תשובה משבא
                        $Amount = $this->input->get('Amount'); // סכום
                        $ACode = $this->input->get('ACode'); // 
                        $token = $this->input->get('Order'); // token
                        $fullname = $this->input->get('Fild1'); // שם פרטי ושם משפחה
                        $email = $this->input->get('Fild2'); // כתובת מייל
                        $phone = $this->input->get('Fild3'); // טלפון
                        $Sign = $this->input->get('Sign'); // חתימה דיגיטלית
                        //$Fild1 = $_GET['Fild1'];
                        
                        $sign_array = array(
                                                            'HKId' => $agreement, 
                                                            'Id' => $deal, 
                                                            'CCode' => $CCode, 
                                                            'Amount' => $Amount, 
                                                            'ACode' => $ACode, 
                                                            'Order' => $token, 
                                                            'Fild1' => rawurlencode($fullname), 
                                                            'Fild2' => rawurlencode($email), 
                                                            'Fild3' => rawurlencode($phone)
                                                            );
                        $string = '';
                        foreach($sign_array as $key => $val)
                        {
                                   $string .= $key .'=' .  $val .'&';
                        }
                        $string = substr($string, 0, -1);
                        log_message('Error','string = '.$string);
                        $verify = hash_hmac('SHA256',$string,'SignPASSWORD'); 
                        if($verify == $Sign) // good !!!
                        {
                                    
Warning Title
יש לשים לב שפרמטר hkid חוזר רק בעסקת הוראת קבע ולכן במידה ואתם מבצעים בידקת חתימה על עסקה רגילה יש למחוק אותו מהקוד
0 (0)
דירוג המאמר (אין הצבעות)
דרג את המאמר
קבצים מצורפים
אין שום קבצים מצורפים למאמר
תגובות
אין תגובות כעת למאמר זה . תהיה הראשון לפרסם תגובה
שם מלא
כתובת מייל
קוד אבטחה Security Code
מאמרים קשורים RSS Feed
מדריך חיבור ל paypal
נצפה מספר פעמים
מדריך לזיכוי עסקה
נצפה מספר פעמים
מדריך חיוב ידני
נצפה מספר פעמים
מדריך פירוט עסקאות
נצפה מספר פעמים
מדריך - חיבור MAX לאתר WIX
נצפה מספר פעמים
מדריך להגדרות API
נצפה מספר פעמים
מדריך - הגדרת מודול החשבוניות
נצפה מספר פעמים
מדריך לביטול עסקה
נצפה מספר פעמים
מדריך חשבוניות / קבלות
נצפה מספר פעמים
מדריך לשונית דוחות
נצפה מספר פעמים