logoเอกสาร
ค้นหา
เข้าสู่ระบบ

Android SDK API

คลาสยูทิลิตี้สนับสนุนภายนอก

เมธอด

getClient(Context)

เรียกคืนออบเจ็กต์คลาสยูทิลิตี้ GTCaptcha4Client

การประกาศ

public static GTCaptcha4Client getClient(Context context)
              
              public static GTCaptcha4Client getClient(Context context)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
context Context ออบเจ็กต์ Context

การอภิปราย

หมายเหตุ: นี่ไม่ใช่การใช้งานแบบ singleton ออบเจ็กต์ GTCaptcha4Client ที่ได้รับผ่าน getClient() จำเป็นต้องบันทึกไว้สำหรับการใช้งานใน onDestroy หรือเมธอดวงจรชีวิตอื่นๆ

init(String)

เริ่มต้นด้วยการกำหนดค่าดีฟอลต์

การประกาศ

public GTCaptcha4Client init(String captchaId)
              
              public GTCaptcha4Client init(String captchaId)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
captchaId String captchaId ที่สมัครจาก backend

การอภิปราย

หมายเหตุ: การเรียกเมธอด init() จะเริ่มกระบวนการโหลด captcha ทันที หากเรียกก่อนวงจรชีวิต onResume() captcha จะถูกโหลดล่วงหน้า เมื่อ verifyWithCaptcha() ถูกเรียกเพื่อแสดง captcha จะโหลดและแสดงผลได้อย่างรวดเร็ว เช่นเดียวกันกับด้านล่าง

init(String, GTCaptcha4Config)

เริ่มต้นด้วยการกำหนดค่าแบบกำหนดเอง

การประกาศ

public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)
              
              public GTCaptcha4Client init(String captchaId, GTCaptcha4Config config)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
captchaId String captchaId ที่สมัครจาก backend
config GTCaptcha4Config ออบเจ็กต์การกำหนดค่า

addOnSuccessListener(GTCaptcha4Client.OnSuccessListener)

เพิ่ม listener สำหรับผลการตรวจสอบ ซึ่งจะถูกเรียกกลับเมื่อ captcha โหลดสำเร็จและผู้ใช้แก้ captcha ได้

การประกาศ

public GTCaptcha4Client addOnSuccessListener(GTCaptcha4Client.OnSuccessListener response)
              
              public GTCaptcha4Client addOnSuccessListener(GTCaptcha4Client.OnSuccessListener response)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
response GTCaptcha4Client.OnSuccessListener Listener ผลการตรวจสอบ

addOnFailureListener(GTCaptcha4Client.OnFailureListener)

เพิ่ม listener สำหรับการโหลด captcha ล้มเหลว ซึ่งจะถูกเรียกเมื่อเกิดข้อผิดพลาดระหว่างกระบวนการโหลด captcha

การประกาศ

public GTCaptcha4Client addOnFailureListener(GTCaptcha4Client.OnFailureListener listener)
              
              public GTCaptcha4Client addOnFailureListener(GTCaptcha4Client.OnFailureListener listener)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
listener GTCaptcha4Client.OnFailureListener Listener สำหรับการโหลด captcha ล้มเหลว

addOnWebViewShowListener(GTCaptcha4Client.OnWebViewShowListener)

เพิ่ม listener สำหรับการโหลดการตรวจสอบ frontend สำเร็จ เมื่อการตรวจสอบ frontend โหลดสำเร็จ callback จะถูกเรียก หากการโหลดล่วงหน้าเสร็จสิ้น callback จะถูกเรียกทันทีหลังจากเรียก verifyWithCaptcha

การประกาศ

public GTCaptcha4Client addOnWebViewShowListener(GTCaptcha4Client.OnWebViewShowListener listener)
              
              public GTCaptcha4Client addOnWebViewShowListener(GTCaptcha4Client.OnWebViewShowListener listener)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
listener GTCaptcha4Client.OnWebViewShowListener Listener สำหรับการโหลดการตรวจสอบ frontend สำเร็จ

verifyWithCaptcha()

เริ่มกระบวนการตรวจสอบและโหลด captcha

การประกาศ

public GTCaptcha4Client verifyWithCaptcha()
              
              public GTCaptcha4Client verifyWithCaptcha()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

หมายเหตุ: ก่อนเรียก verifyWithCaptcha() จำเป็นต้องเรียก init(), addOnSuccessListener() และ addOnFailureListener() มิฉะนั้นอาจเกิดข้อผิดพลาด

cancel()

ยกเลิกการตรวจสอบและปิดหน้าต่างการตรวจสอบ

การประกาศ

public void cancel()
              
              public void cancel()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

หมายเหตุ: ก่อนเรียก cancel() จำเป็นต้องเรียก init(), addOnSuccessListener() และ addOnFailureListener() มิฉะนั้นอาจเกิดข้อผิดพลาด

setLogEnable(boolean enable)

เปิดหรือปิดการตรวจสอบ log

การประกาศ

public void setLogEnable(boolean enable)
              
              public void setLogEnable(boolean enable)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

การเรียก setLogEnable ควบคุมฟังก์ชันการพิมพ์ log

destroy()

ทำลายทรัพยากรที่มีวงจรชีวิตยาวนาน

การประกาศ

public void destroy()
              
              public void destroy()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

ทำลายทรัพยากรการตรวจสอบ เมธอดนี้ต้องถูกเรียก

การอภิปราย

เมธอดนี้ควรถูกเรียกในระหว่างวงจรชีวิต onDestroy ของอินเทอร์เฟซ captcha ที่ใช้โดย client

configurationChanged(Configuration)

จัดการการเปลี่ยนแปลงการหมุนหน้าจอ

การประกาศ

public void configurationChanged(Configuration newConfig)
              
              public void configurationChanged(Configuration newConfig)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

เมธอดนี้ควรถูกเรียกในระหว่างเมธอดวงจรชีวิต onConfigurationChanged สำหรับการเปลี่ยนแปลงการหมุนหน้าจอ

getVersion()

เรียกคืนหมายเลขเวอร์ชัน

การประกาศ

public static String getVersion()
              
              public static String getVersion()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ค่าที่ส่งคืน

ส่งคืนหมายเลขเวอร์ชันเป็น String

isSupportWebView(Context)

ตรวจสอบว่าระบบรองรับ WebView หรือไม่ หากไม่รองรับ แนะนำให้ใช้ fallback logic

การประกาศ

public static Pair<Boolean, String> isSupportWebView(Context context)
              
              public static Pair<Boolean, String> isSupportWebView(Context context)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ค่าที่ส่งคืน

คำอธิบายของออบเจ็กต์ Pair:

พารามิเตอร์ ประเภท คำอธิบาย
first Boolean ระบบรองรับ WebView หรือไม่ หากไม่รองรับ สามารถใช้ fallback logic ได้
second String คำอธิบายข้อผิดพลาดสำหรับการโหลดออบเจ็กต์ WebView

GTCaptcha4Config#Builder

คลาสการกำหนดค่าพารามิเตอร์

setTimeOut(int)

ตั้งค่าระยะเวลาการหมดเวลา request

การประกาศ

public Builder setTimeOut(int timeOut)
              
              public Builder setTimeOut(int timeOut)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
timeOut int หน่วย: ms, ดีฟอลต์คือ 10000

setResourcePath(String)

ตั้งค่าเส้นทางทรัพยากรสำหรับการโหลด WebView

การประกาศ

public Builder setResourcePath(String html)
              
              public Builder setResourcePath(String html)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
html String ที่อยู่สำหรับการโหลด WebView

การอภิปราย

โดยดีฟอลต์จะโหลดไฟล์ gt4-index*.html ในไดเรกทอรี assets อินเทอร์เฟซนี้ไม่จำเป็นต้องตั้งค่ายกเว้นมีข้อกำหนดพิเศษ

setLanguage(String)

ตั้งค่าภาษาสำหรับการส่ง JS อินเทอร์เฟซนี้สามารถควบคุมได้เฉพาะภาษาของ WebView ที่โหลด ในขณะที่ภาษาของ SDK จะตามภาษาของแอปพลิเคชันปัจจุบัน

การประกาศ

public Builder setLanguage(String language)
              
              public Builder setLanguage(String language)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
language String รหัสย่อสำหรับภาษาด้านหน้า ดูรายละเอียดในเอกสารด้านหน้า

การอภิปราย

หากตั้งค่าเป็น null หรือไม่ได้ตั้งค่า รหัสย่อภาษาดีฟอลต์ของแอปพลิเคชันจะถูกส่งไปยัง frontend

setCanceledOnTouchOutside(boolean)

ตั้งค่าว่าการคลิกพื้นที่สีเทาจะปิด dialog หรือไม่ ดีฟอลต์คือปิด

การประกาศ

public Builder setCanceledOnTouchOutside(boolean canceledOnTouchOutside)
              
              public Builder setCanceledOnTouchOutside(boolean canceledOnTouchOutside)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
canceledOnTouchOutside boolean true เพื่อปิด

setDebug(boolean)

ตั้งค่าว่าอยู่ในโหมด debug หรือไม่ สำหรับการผลิตต้องตั้งค่าเป็น false หรือไม่ตั้งค่า

การประกาศ

public Builder setDebug(boolean debug)
              
              public Builder setDebug(boolean debug)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
debug boolean true สำหรับ debug, ดีฟอลต์คือ false

setBackgroundColor(int)

ตั้งค่าสีพื้นหลังของ WebView ซึ่งควบคุมสีพื้นหลังของคอมโพเนนต์ Android WebView และแตกต่างจากสีพื้นหลังของ JS ฝั่งหน้า

การประกาศ

public Builder setBackgroundColor(int backgroundColor)
              
              public Builder setBackgroundColor(int backgroundColor)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
backgroundColor int ที่อยู่ทรัพยากรสีหรือค่าที่คืนจาก Color.parseColor()

setDialogStyle(String)

ตั้งค่ารูปแบบธีมของกล่องโต้ตอบการยืนยัน

การประกาศ

public Builder setDialogStyle(String dialogStyle)
              
              public Builder setDialogStyle(String dialogStyle)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
dialogStyle String ชื่อของรูปแบบธีมกล่องโต้ตอบ

การประกาศ

ต่อไปนี้คือตัวอย่างรูปแบบธีมเริ่มต้น:

<style name="gt4_captcha_dialog_style" parent="android:Theme.Dialog"> <!-- ไม่มีกรอบหน้าต่างสำหรับ Dialog --> <item name="android:windowFrame">@null</item> <!-- ลอยอยู่เหนือกิจกรรมหรือไม่ --> <item name="android:windowIsFloating">true</item> <!-- โปร่งแสงหรือไม่ --> <item name="android:windowIsTranslucent">true</item> <!-- ลบชื่อเรื่อง --> <item name="android:windowNoTitle">true</item> <item name="android:windowContentOverlay">@null</item> <!-- ใช้พื้นหลังโปร่งแสงสีดำภายนอกพื้นที่แสดงหรือไม่ --> <item name="android:backgroundDimEnabled">true</item> <!-- ตั้งค่าพื้นหลังของกล่องโต้ตอบ --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:padding">0dp</item> </style>
              
              <style name="gt4_captcha_dialog_style" parent="android:Theme.Dialog">
    <!-- ไม่มีกรอบหน้าต่างสำหรับ Dialog -->
    <item name="android:windowFrame">@null</item>
    <!-- ลอยอยู่เหนือกิจกรรมหรือไม่ -->
    <item name="android:windowIsFloating">true</item>
    <!-- โปร่งแสงหรือไม่ -->
    <item name="android:windowIsTranslucent">true</item>
    <!-- ลบชื่อเรื่อง -->
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <!-- ใช้พื้นหลังโปร่งแสงสีดำภายนอกพื้นที่แสดงหรือไม่ -->
    <item name="android:backgroundDimEnabled">true</item>
    <!-- ตั้งค่าพื้นหลังของกล่องโต้ตอบ -->
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:padding">0dp</item>
</style>

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

setDialogShowListener(GTCaptcha4Client.OnDialogShowListener)

ตั้งค่าการเรียกกลับของผู้ฟังเมื่อหน้าต่างการยืนยันแสดงผล

การประกาศ

public void setDialogShowListener(GTCaptcha4Client.OnDialogShowListener dialogShowListener)
              
              public void setDialogShowListener(GTCaptcha4Client.OnDialogShowListener dialogShowListener)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
dialogShowListener GTCaptcha4Client.OnDialogShowListener วัตถุผู้ฟังสำหรับการแสดงหน้าต่างการยืนยัน

setParams(Map<String, Object>)

กำหนดค่าพารามิเตอร์เพิ่มเติม ซึ่งจะถูกส่งไปยัง JS ทั้งหมด

การประกาศ

public Builder setParams(Map<String, Object> params)
              
              public Builder setParams(Map<String, Object> params)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย
params JSONObject พารามิเตอร์การกำหนดค่าเพิ่มเติม

การอภิปราย

คู่คีย์-ค่า ที่รองรับมีดังนี้:

คีย์ ประเภทค่า คำอธิบาย ค่าเริ่มต้น
displayMode int รูปแบบธีม, 0: ตามระบบ, 1: ปกติ, 2: โหมดมืด 0
protocol String ส่วนหัวโปรโตคอล, รองรับ "https:// หรือ http:// https://
bgColor String สีพื้นหลังหน้ากากการยืนยัน, ตามกฎ CSS, โปรดสังเกตสองหลักสุดท้ายสำหรับความโปร่งใส #00000000
loading String การโหลดแบบกำหนดเอง, เส้นทางสัมพัทธ์ของทรัพยากรการโหลดสำหรับ WebView โหลด HTML, สตริงว่างหมายถึงไม่มีผลการโหลด "/gt4-loading.gif"
rem float ตั้งค่าอัตราส่วนการปรับขนาดโดยรวมของรหัสยืนยัน 1
hideBar JSONArray ซ่อนปุ่มปิดและปุ่มรีเฟรชบนหน้าจอการยืนยันถัดไป N/A
nextWidth String ความกว้างของหน้าต่างป๊อปอัปรหัสยืนยัน, ต้องรวมหน่วย, เช่น "300px" N/A
riskType String ระบุรูปแบบการยืนยันร่วมกับการควบคุมความเสี่ยง N/A
hideSuccess boolean ซ่อนป๊อปอัปความสำเร็จของการยืนยัน FALSE

ตัวอย่างโค้ด

Map<String, Object> params = new HashMap<>(); params.put("displayMode", 0); params.put("protocol", "https://"); params.put("bgColor", "#CC0000FF"); params.put("loading", "./loading_test.gif"); params.put("rem", 0.6); JSONArray hideBar = new JSONArray() .put("close") .put("refresh"); params.put("hideBar", hideBar); params.put("nextWidth", "300px"); params.put("hideSuccess", true); GTCaptcha4Config.Builder builder = new GTCaptcha4Config.Builder() .setParams(params);
              
              Map<String, Object> params = new HashMap<>();
params.put("displayMode", 0);
params.put("protocol", "https://");
params.put("bgColor", "#CC0000FF");
params.put("loading", "./loading_test.gif");
params.put("rem", 0.6);
JSONArray hideBar = new JSONArray()
        .put("close")
        .put("refresh");
params.put("hideBar", hideBar);
params.put("nextWidth", "300px");
params.put("hideSuccess", true);

GTCaptcha4Config.Builder builder = new GTCaptcha4Config.Builder()
        .setParams(params);

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

build()

สร้างวัตถุ GTCaptcha4Config เพื่อใช้กับอินเทอร์เฟซ init()

การประกาศ

public GTCaptcha4Config build()
              
              public GTCaptcha4Config build()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

GTCaptcha4Client#OnSuccessListener

ผู้ฟังการเรียกกลับสำหรับผลลัพธ์การยืนยัน

onSuccess(Boolean, String)

การเรียกกลับอินเทอร์เฟซการยืนยัน

การประกาศ

void onSuccess(Boolean status, String response)
              
              void onSuccess(Boolean status, String response)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ |ประเภท | คำอธิบาย ------ |-----|----- status |Boolean | ผลลัพธ์การยืนยันการดำเนินการของผู้ใช้, true สำหรับสำเร็จ, false สำหรับล้มเหลว. การล้มเหลวจะรีเฟรชรูปแบบการยืนยัน. response | String | เมื่อการยืนยันการดำเนินการของผู้ใช้สำเร็จ, ข้อมูล response ต้องถูกส่งไปยังเซิร์ฟเวอร์เพื่อการยืนยัน.

การอภิปราย

คำอธิบายของการยืนยันสำเร็จ:

{"lot_number":"b150e61198924eff9eaae121e9b67aa8","pass_token":"6fcfba4c35cb57b873c99c5b3b02089c58a26244c18f7706aaa1e87aed3aa8f4","gen_time":"1622020720","captcha_output":"Tu6rW0dRNO0NLxMKftwdH00G5whF5HHddthoXSEA1G4="}
              
              {"lot_number":"b150e61198924eff9eaae121e9b67aa8","pass_token":"6fcfba4c35cb57b873c99c5b3b02089c58a26244c18f7706aaa1e87aed3aa8f4","gen_time":"1622020720","captcha_output":"Tu6rW0dRNO0NLxMKftwdH00G5whF5HHddthoXSEA1G4="}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

คำอธิบายของการยืนยันล้มเหลว:

{"captchaId":"647f5ed2ed8acb4be36784e01556bb71","captchaType":"slide","challenge":"95ed53b4-95c6-4c6b-9aac-769b29ef74a0"}
              
              {"captchaId":"647f5ed2ed8acb4be36784e01556bb71","captchaType":"slide","challenge":"95ed53b4-95c6-4c6b-9aac-769b29ef74a0"}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

GTCaptcha4Client#OnFailureListener

ผู้ฟังการเรียกกลับสำหรับการโหลดล้มเหลว

onFailure(String)

การเรียกกลับสำหรับการโหลดล้มเหลว

การประกาศ

void onFailure(String error)
              
              void onFailure(String error)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ |ประเภท | คำอธิบาย ------ |-----|----- error | String | คำอธิบายของการโหลดการยืนยันล้มเหลว. หมายเหตุ: รวมถึงการยกเลิกที่ผู้ใช้เริ่มต้น.

การอภิปราย

คำอธิบายของการโหลดล้มเหลว:

{"code":"-14460","msg":"Verification session has been canceled","desc":{"description":"User cancelled 'Captcha'"}}
              
               {"code":"-14460","msg":"Verification session has been canceled","desc":{"description":"User cancelled 'Captcha'"}}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

GTCaptcha4Client#OnWebViewShowListener

ผู้ฟังการเรียกกลับสำหรับการโหลดการยืนยันฝั่งหน้าสำเร็จ

onWebViewShow()

การโหลดการยืนยันฝั่งหน้าสำเร็จ

การประกาศ

void onWebViewShow()
              
              void onWebViewShow()

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การอภิปราย

การเรียกกลับหลังจากการโหลดการยืนยันฝั่งหน้าสำเร็จ. หากการโหลดล่วงหน้าเสร็จสิ้น, การเรียกกลับนี้จะถูกเรียกทันทีหลังจากเรียก verifyWithCaptcha.

GTCaptcha4Client#OnDialogShowListener

ผู้ฟังการเรียกกลับสำหรับการแสดงหน้าต่างการยืนยัน

actionBeforeDialogShow(Dialog)

การเรียกกลับก่อนที่หน้าต่างการยืนยันจะแสดงผล

การประกาศ

void actionBeforeDialogShow(Dialog dialog)
              
              void actionBeforeDialogShow(Dialog dialog)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ |ประเภท | คำอธิบาย ------ |-----|----- dialog | Dialog | อินสแตนซ์ของหน้าต่างการยืนยัน.

actionAfterDialogShow()

การเรียกกลับหลังจากที่หน้าต่างการยืนยันแสดงผล

การประกาศ

void actionAfterDialogShow(Dialog dialog)
              
              void actionAfterDialogShow(Dialog dialog)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ |ประเภท | คำอธิบาย ------ |-----|----- dialog | Dialog | อินสแตนซ์ของหน้าต่างการยืนยัน.

การอภิปราย

คุณสามารถเปลี่ยนรูปแบบระบบได้ที่นี่ เช่น ซ่อนแถบนำทาง, ซ่อนแถบสถานะ เป็นต้น.

onDialogFocusChanged()

การเรียกกลับเมื่อโฟกัสของหน้าต่างการยืนยันเปลี่ยนแปลง

การประกาศ

void onDialogFocusChanged(Dialog dialog, boolean hasFocus)
              
              void onDialogFocusChanged(Dialog dialog, boolean hasFocus)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

พารามิเตอร์

พารามิเตอร์ |ประเภท | คำอธิบาย ------ |-----|----- dialog |Dialog | อินสแตนซ์ของหน้าต่างการยืนยัน. hasFocus | boolean | มีโฟกัสหรือไม่.

icon
ติดต่อฝ่ายขาย