מרכז הידע / ממשקים API

שאלו את ה-AI

✦ תשובת ה-AI

חושב…

מקורות

    ממשק ביצוע עסקת TAP דרך קארדקום ע"י אפליקציית צד ג' (Using SDK)

    דרישות מקדימות לביצוע עסקת TAP מול SDK

    • רכישת מודול Tap On Phone בלבד
    • נכון לשלב זה הפיצ'ר תומך במכשירי אנדרואיד בלבד
    • רישום pindpad device בש.ב.א
    • אנדרואיד – מכשיר חייב לכלול NFC
    • אנדרואיד – יש לאפשר גישה לשירותי מיקום
    • אנדרואיד – יש לוודא שההגדרה של "אפשרויות מפתח" כבויה


    הסבר כללי לשלבים חיוב TAP 

    1. כאשר האפליקציה עולה פעם ראשונה :
      1. לפנות לקארדקום API לקבלת פרטים וביצוע רישום למכשיר קצה.
      2. יש לבצע רישום למכשיר ל SDK  RegisterDevice.
    2. בכול עסקת חיוב 
      1. לפנות למכשיר לביצוע חיוב כרטיס אשראי (100 ₪) עם התשובה שהתקבלו בשלב 1.a 
      2. קבלת תשובה והמכשיר ופנייה עם התשובה לקארדקום API.

    הערה :

    בשלב 1 יש תוקף ל  RegisterDevice , יש לבצע את שלב אחת לתקופה – מתקבל התוקף של ה Register  בעת הפנייה לפונקציה.

     

    התקנה של הSDK  באפליקציה 

    1. יש לדאוג שלאפליקציה של הרשאות הבאות :

     

    <uses-permission android:name="android.permission.NFC" />

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <uses-feature    android:name="android.hardware.nfc" android:required="false" />

    1. הוספה של ה SDK לאפליקציה

     

    את הקבצים מקבלים מאתנו  יש להוסיף תחת dependencies:

     

        implementation "com.denovo:topliteapp-PROD:3.0.1.2"

        implementation files("../libs/CardCom-v1.2.16-Release_Prod.aar")

     

    ביצוע שלב 1.a , לפנות לקארדקום API לקבלת פרטים וביצוע רישום למכשיר קצה.

     

    פניה לרישום מכשיר

    פניה של XXXX SWAGER

    שם תיאור דוגמה
    ApiName שם משתמש למסוף  
    Terminal מספר מסוף קארדקום  
    UID UID של המכשיר  
         

     

    תשובה 

    שם תיאור דוגמה
    ResponseCode 0 הצלחה אחרת כישלון  
    Description תיאור הודעת שגיאה  
    TPN יש לשמור ברמת האפליקציה – יועבר בעת רישום המכשיר שלב1.b  
    MerchantCode יש לשמור ברמת האפליקציה – יועבר בעת רישום המכשיר 1.b  
    SapakMutavNumber יש לשמור ברמת האפליקציה – יועבר בעת ביצוע חיוב  2.a  

     

    ביצוע שלב 1.b יש לבצע רישום למכשיר ל SDK  RegisterDevice.

    יש לבצע רישום למכשיר על ידי הפעלת הפונקציה  topService.registerDevice , ראה קוד לדוגמה בהמשך.

    פרמטרים להפעלת :

    שם תיאור דוגמה
    TPN כפי שהתקבל בשלב 1.a  
    MerchantCode כפי שהתקבל בשלב 1.a  
         

     

    פרמטרים שמקבלים ב onRegisterSuccess :

    שם  תיאור דוגמה
    message הודעה בהצלחה  
    session_key יש לשמור ברמת האפליקציה – יועבר בעת ביצוע עסקה  
    auth_token יש לשמור ברמת האפליקציה – לא בשימוש  
    session_created_timestamp מתי נוצר ה session_key  
    session_expire_time תוקף ה  session_key מתאריך  session_created_timestamp  

     

    כאשר פג תוקף session_key , יש לבצע רישום מחדש למכשיר. session_created_timestamp + session_expire_time  גדול מהיום.

     

    פרמטרים שמקבלים ב onRegisterError:

    שם  תיאור דוגמה
    error_code קוד הודעת שגיאה  - ראה רשימת קודים  
    error_message תיאור הודעה שגיאה   

     

    מומלץ להציג את הודעת השגיאה + קוד השגיאה למשתמש לשם ביצוע תחקור.

     

    דוגמה לפנייה :

    
    ToPService topService = new ToPService(Activity activity);
    
    topService.registerDevice(tpn, merchantCode, new ToPService.onRegistrationListener() {
    
    @Override
    
    public void onProcess(String message) {
    
    //UPDATE PROGRESS DIALOG message HERE
    
    }
    
    
    
    
    @Override
    
    public void onRegisterSuccess(JSONObject successObject) {
    
    //DISMISS PROGRESS DIALOG HERE
    
    
    
    
    // sample success response
    
    //{
    
    //“message”: “Registration done successfully”,
    
    //“session_key”: “xxxxxxxxxxxxxxxxxxxxxx”,
    
    //“auth_token”: “xxxxxxxxxxxxxxxxxxxxxx”,
    
    //“session_created_timestamp”:”1672038767”
    
    //“session_expire_time”: “86400”
    
    //}
    
    }
    
    
    
    
    @Override
    
    public void onRegisterError(JSONObject errorObject) {
    
    //DISMISS PROGRESS DIALOG HERE
    
    
    
    
    // sample error response
    
    {“error_code”: “403”,“error_message”: “Invalid TPN”}
    
    }
    
    });
    
    
    

     

    שלב 1.b  ביצוע חיוב במכשיר

    פנייה לחיוב topService.performTransaction

    שם תיאור דוגמה סוג
    sessionKey כפי שהתקבל בעת הרישום בשלב 1.B    
    inputObject      
    type REFUND או SALE

    SALE – חיוב

    REFUND - זיכוי

    מחרוזת
    amount סכום    מספר בלבד
    Lang תמיד iw עברית  
    CustomObject      
    CustomerName אופציונלי    
    CustomerEmail אופציונלי    
    PhoneNumber אופציונלי    
    HolderID אופציונלי    
    AllowFullCardNumberInResponse True    
    SapakMutavNumber כפי שהתקבל בשלב 1.a    
    NumberOfPayments מספר תשלומים    
    CreditType

    אם מספר תשלומים 1 – יש לשלוח ערך 1

    אם מספר תשלומים גדול מ-1 יש לשלוח ערך 8 עבור תשלומים רגילים או ערך 6 עבור תשלומים בקרדיט

     

       

     

    תשובה :

    שם תיאור דוגמה סוג
    response_code קוד תשובה 0 string
    message תיאור תשובה   string
    status סטטוס עסקה Approved / Declined string
    transaction_id מספר עסקה 000123456789 string
    transactionResult פרטי עסקה   string
    customMessage     string
    DE48     string
    ReturnCode קוד תשובה 0 string
    ReturnMessage תיאור תשובה   string
    CardNumber מספר כרטיס 4580000000000000 string
    ExpDate_MMYY תוקף כרטיס 06/29 string
    CardBrandCode קוד מותג כרטיס 1 string
    CardIssuerCode קוד מנפיק כרטיס 1 string
    CardFinancerCode קוד סולק כרטיס 2 string
    Token אסימון כרטיס 56f1321c-03b7-478e-a0dc-76ff83e3c8c5 string
    ApprovalNumber מספר אישור 1234567 string
    ResultRecord פרטי עסקה מוצפנים   string
    UID מזהה עסקה 0000123456789123456789 string

     

     

    דוגמה לביצוע חיוב

    
    }
    
    "type": "REFUND" / "SALE",
    
    "amount" "1.00",
    
    "lang": "iw",
    
    "CustomObject": {
    
    "CustomerName": "Test Test",
    
    "CustomerEmail": "test@test.test",
    
    "PhoneNumber": "9999999999",
    
    "HolderID": "999999999",
    
    "AllowFullCardNumberInResponse": true,
    
    "SapakMutavNumber": "123456",
    
    "NumberOfPayments": 1,
    
    "CreditType": 1
    
    {
    
    }
    
    
    
    
    ToPService topService = new ToPService(Activity activity);
    
    topService.performTransaction(inputObject, sessionKey,  new ToPService.OnTransactionListener() {
    
    @Override
    
    public void onTransactionResponse (JSONObject successObject){ 
    
    //note: response_code:’00’ means Successful transaction other than ‘00’ means Failure transaction 
    
     }
    
    
    
    
    @override
    
    public void onTransactionError (JSONObject errorObject) {
    
     // sample error response
    
     //{
    
    // “error_code”: “21”,
    
     //“message”: “Transaction Cancelled”
    
    //}
    
    }
    
    
    
    @override
    
    public void onRegisterNeeded (JSONObject errorObject) {
    
     // sample error response
    
     //{
    
     //“error_code”: “990”,
    
     //“message”: “Session key is expired, To authenticate, please re-initiate device registration api”
    
    }
    
    }
    
    });

     

     

    פניה לשרת קארדקום לרישום עסקה שלב 2.b

    בקשה

    שם תיאור דוגמה
    ApiName שם משתמש למסוף  
    Terminal מספר מסוף קארדקום  
    UID UID של המכשיר  
    SdkTransactionInfo הבקשה שנשלחה בשלב b.1  
    TransactionResult התשובה שחזרה בשלב b.1  

     

    תשובה

    שם תיאור דוגמה
    ResponseCode קוד תשובה  0=הצלחה / אחרת=כישלון
    Description תיאור תשובה  

     

     

    הערה ! אם יש תקלת תקשורת יש לבצע פנייה שוב !

    אם התקבלה שגיאה – הכרטיס לא יחויב יש להציג חיוב נכשל

    לאחר מכן יש לבצע רישום מכשיר פיזי ב API ורישום עסקאות מוצלחות לפי ממשק :

    הסבר ממשק TapTransactions

    האם המאמר הזה עזר לך?