NAV
docs

Create Token

Android

如欲了解最新版號 SDK 以及各版號之間的差異性,請參考 Github Release Page : TapPay Android Github

此步驟將會把客戶的卡片轉為一個不敏感的字串稱之為 prime token
在您的 Android 應用程式中取得該字串有 5 個步驟:

  1. 下載我們的 SDK 套件並加入至您的專案中: tpdirect.aar
  2. 使用 TPDSetup 設定環境
  3. 於 Layout 中添加 TPDForm
  4. 透過 TPDForm 初始化 TPDCard,並為 TPDCard 設置 Callbacks
  5. 利用 TPDCard 取得 prime 字串
  6. 為提高信用卡交易安全,若可以請跟使用者取得此權限

<uses-permission android:name=“android.permission.READ_PHONE_STATE”>

TPDSetup

static void initInstance(Context context, int appID, String appKey, TPDServerType serverType);

名稱 類別 內容
context Context Android Context
appID int 請參考 appid
appKey String 請參考 appkey
serverType TPDServerType 使用的伺服器種類
測試時請使用 Sandbox 環境 (TPDServerType.Sandbox)
實體上線後請切換至 Production 環境 (TPDServerType.Production)
TPDSetup.initInstance(getApplicationContext(), APP_ID, "APP_KEY", TPDServerType.Sandbox);

TPDForm

TPDForm 為用來取得消費者卡片資訊的欄位
其中的 EditText 將會自動套用您主題中為其設定之樣式
請在您對應的 layout.xml 中加入以下的 code:

<tech.cherri.tpdirect.API.TPDForm
  android:id="@+id/tpdForm"
  android:layout_width="wrap_content"
  android_layout_height="wrap_content">
</tech.cherri.tpdirect.API.TPDForm>


利用 findViewById() 取得 TPDForm 物件後
您可使用 setOnFormUpdateListener() 來得知目前卡片資訊的輸入狀態
並用回傳的 TPDStatus 來做判斷及處理
最後再用 isCanGetPrime() 來檢查參數是否都正確
在測試環境時,請一律使用測試卡號(4242424242424242, 01/23, 123)

tpdForm.setTextErrorColor(Color.RED); // 設定錯誤顏色
tpdForm.setOnFormUpdateListener(new TPDFormUpdateListener() {
    @Override
    public void onFormUpdated(TPDStatus tpdStatus) {
        errorText.setText("");
        if(tpdStatus.getCardNumberStatus() == TPDStatus.STATUS_ERROR){
            errorText.setText("Invalid Card Number");
        }else if(tpdStatus.getExpirationDateStatus() == TPDStatus.STATUS_ERROR){
            errorText.setText("Invalid Expiration Date");
        }else if(tpdStatus.getCcvStatus() == TPDStatus.STATUS_ERROR){
            errorText.setText("Invalid CCV");
        }
        payButton.setEnabled(tpdStatus.isCanGetPrime());
    }
});

setIsUsedCcv

tpdForm.setIsUsedCcv(Bool)


使用此方法設定是否要顯示 ccv 欄位

TPDCard

將正確的 TPDForm 傳給 TPDCard 來初始化,並設置成功與失敗的 callback 函數

TPDCard card = TPDCard.setup(TPDForm tpdForm);
  .onSuccessCallback(new TPDCardGetPrimeSuccessCallback() {
    @Override
    public void onSuccess(String prime, TPDCardInfo cardInfo, String cardIdentifier,TPDMerchantReferenceInfoDto merchantReferenceInfo) {
      Log.i("TPDCard", "Success");
    }
  })
  .onFailureCallback(new TPDGetPrimeFailureCallback()) {
    @Override
    public void onFailure(int status, String reportMsg) {
      Log.i("TPDCard", "Failed");
    }
  });

Get Prime

以上步驟都完成後,您即可呼叫 getPrime 來取得 prime 字串
之後再將它傳至您的伺服器,並呼叫 Pay by Prime API 來完成付款
若為 AE 卡且 3DS2.0 交易,後 3 碼必須帶入,否則會造成交易失敗

card.getPrime();

Response

TPDCardGetPrimeSuccessCallback 參數

名稱 內容
prime prime 字串,於 Pay by Prime 交易時使用
cardInfo 卡片資訊,將會回傳以下幾個值:
名稱類別(長度)內容
bincodeString(6)卡片前六碼
lastFourString(4)卡片後四碼
issuerString發卡銀行
issuerZhTWString發卡銀行中文名稱
bankIdString銀行代碼
fundingint卡片類別
-1 = Unknown
0 = 信用卡 (Credit Card)
1 = 簽帳卡 (Debit Card)
2 = 預付卡 (Prepaid Card)
cardTypeint卡片種類
-1 = Unknown
1 = VISA
2 = MasterCard
3 = JCB
4 = Union Pay
5 = AMEX
levelString卡片等級
countryString發卡行國家
countryCodeString發卡行國家碼
cardIdentifier 信用卡識別碼。每張信用卡只會對到一組識別碼。
merchantReferenceInfo 若商戶在 TapPay 後台使用 Co-brand card management 功能,且交易卡號符合設定時,將會回傳此參數,不支援 JKOPAY

商戶於TapPay後台設定的affiliate code management須限制於20字元內且為半形的英數字
名稱類別內容
affiliateCodesArray商戶在 TapPay 後台的 Co-brand card management 功能專區設定的Affiliated codes


TPDGetPrimeFailureCallback 參數

名稱 內容
status 錯誤代碼,0 為成功
message 錯誤訊息

Example

請參考我們的範例程式,並將 MainActivity.java 中的變數更換為您的值:

名稱 內容
EXAMPLE_APP_ID 您的 app ID
EXAMPLE_APP_KEY 您測試環境的 app key
TEST_PARTNER_SERVER 您處理付款的伺服器路徑
我們將會將 prime 字串 POST 至該路徑

Get Fraud ID

TPDSetup.getInstance(this).getFraudId();


如果您有綁定卡片欲開啟偽卡偵測功能,請使用此方法取得FraudId ,並在呼叫 Pay by Card Token 時帶入 fraud id


//GetFraudId for PayByToken
TPDSetup.getInstance(this).getFraudId();