NAV
docs

Create Token

Samsung Pay in App

Overview

Samsung Pay in App 主要分為四個步驟:

  1. 專案設置, 使用 TPDSetup 設定環境
  2. 準備商店資訊
  3. 建立 TPDSamsungPay 物件, 並確認用戶設備是否支援 SamsungPay
  4. 利用 TPDSamsungPay 取得 Prime

Environment

專案設置:
將 tpdirect.aar 與 samsung-1.x.jar 加入您的專案
在 AndroidManifest.xml 的 application 標籤中加入 SamsungPay 相關配置:

範例如下:

<application
    android:allowBackup="false" 
    android:icon="@mipmap/ic_launcher" 
    android:label="${k_appName}" 
    android:logo="@mipmap/ic_launcher" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" 
    tools:replace="android:label">

    <!--Set to 'N' if in release mode.--> 
    <meta-data
        android:name="debug_mode" 
        android:value="Y" />

    <meta-data 
        android:name="spay_sdk_api_level" 
        android:value="1.8" />

    <!--Debug Key is valid for 3 months;--> 
    <!--Remove below metadata if in release mode--> 
    <meta-data
        android:name="spay_debug_api_key"
        android:value="{Your debug_api_key obtained from Samsung}" />

    <activity android:name=".MainActivity"> 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter>
    </activity>

TPDSetup

TPDSetup.initInstance(getApplicationContext(), APP_ID, "APP_KEY", TPDServerType.SANDBOX);


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

Prepare Payment Data

1.建立 TPDMerchant 物件並將您的商店資訊設定進去, 範例如下

TPDMerchant tpdMerchant = new TPDMerchant();
tpdMerchant.setMerchantName("Your Merchant Name"); 
tpdMerchant.setSupportedNetworks(allowedNetworks); 
tpdMerchant.setSamsungMerchantId("Your SamsungMerchantId Obtained from TapPay Portal"); 
tpdMerchant.setCurrencyCode("TWD");


其中, allowedNetworks 為允許的卡種,範例如下:

TPDCard.CardType[] allowedNetworks = new TPDCard.CardType[] { TPDCard.CardType.Visa, TPDCard.CardType.MasterCard };


2. 建立 TPDSamsungPay 物件, 並給入
(1.) 先前建立的 TPDMerchnat
(2.) 從 Samsung 取得的 serviceId

TPDSamsungPay tpdSamsungPay = new TPDSamsungPay(Context context, serviceId, tpdMerchant);

Check device can use Samsung Pay

確認用戶設備支援 SamsungPay

boolean isSamsungPayAvailable =
tpdSamsungPay isSamsungPayAvailable(TPDSamsungPayStatusListener listener);


您可於 TPDSamsungPayStatusListener 取得結果, 範例如下:

@Override
public void onReadyToPayChecked(boolean isReadyToPay, String msg) {
    Log.d(TAG, "Samsung Pay availability : " + isReadyToPay); 
    if (isReadyToPay) {
        // show Samsung Pay button 
    } else {
        Log.d(TAG, "Cannot use Samsung Pay due to : " + msg); 
    }
}

Get Prime

當用戶按下 Samsung Pay Button 時, 利用 TPDSamsungPay 取得 Prime :

名稱 類別 內容
itemTotalAmount String 品項總金額
shippingPrice String 運費
tax String 稅金
totalAmount String 總金額
tpdSamsungPay.getPrime(itemTotalAmount, shippingPrice, tax, totalAmount,TPDTokenSuccessCallback, TPDTokenFailureCallback);

Samsung Pay Web Checkout

Overview

Samsung Pay Mobile Web 主要分為兩個步驟:

  1. 利用 TapPay WebSDK 取得 prime
  2. 將 prime 回傳給您的伺服器,並透過 pay-by-prime 來完成付款

Setup SDK

TPDirect.setupSDK(appID, appKey, serverType)

名稱 內容
appID 請參考 appid
appKey 請參考 appkey
serverType 使用的伺服器種類
測試時請使用 Sandbox 環境 (‘sandbox’)
實體上線後請切換至 Production 環境 ('production’)
<script src="https://js.tappaysdk.com/tpdirect/v4"></script>
<script>
    TPDirect.setupSDK(APP_ID, 'APP_KEY', 'sandbox')
</script>

Setup Samsung Pay

TPDirect.samsungPay.setup(config)

使用這個方法設定 Samsung Pay 相關參數

TPDirect.samsungPay.setup({
    country_code: 'tw'
})
名稱 類別 內容
config JSONObject Samsung Pay 相關設定
config.country_code String Samsung Pay 驗證頁面國家及語言,支援的 country_code 請參考 samsung_pay_country_code

Setup PaymentRequest

建立一個 PaymentRequest 來索取 Prime

var paymentRequest = {
    supportedNetworks: ['AMEX', 'MASTERCARD', 'VISA'],
    total: {
        label: 'TapPay',
        amount: {
            currency: 'TWD',
            value: '1.00'
        }
    }
}
TPDirect.samsungPay.setupPaymentRequest(paymentRequest)
名稱(* = 必填) 類別 內容
supportedNetworks Array 設定可支援的卡別
total* JSONObject 設定交易資訊
total.label* String 顯示在 Samsung Pay 上的商家名稱
total.amount* JSONObject 顯示在 Samsung Pay 上的金額
total.amount.currency* String currencyCode
total.amount.value* String 金額

Setup Samsung Pay 按鈕

請參考 Samsung Pay 的 Branding guidelines 選擇適當的按鈕樣式,並使用 TPDirect.samsungPay.setupSamsungPayButton 設定按鈕

(您也可以直接從 Branding guidelines 頁面上下載按鈕 ai 檔)

TPDirect.samsungPay.setupSamsungPayButton(element, button_type)

<div id="spay-button"></div>
TPDirect.samsungPay.setupSamsungPayButton('#spay-button', {
    // black, white
    color: 'black',
    // pay, buy
    type: 'pay',
    // rectangular, pill
    shape: 'rectangular'
})
名稱 類別 內容
element String / HTMLElement 按鈕 container 的 css selector 或者 HTMLElement 物件
button_type JSONObject 按鈕種類
button_type.color String 按鈕顏色(black, white)
button_type.type String 按鈕上顯示文字(pay, buy)
button_type.shape String 按鈕形狀(rectangular, pill)

Get Prime

使用此方法開始 Samsung Pay Web Checkout 付款流程,並取得 prime

TPDirect.samsungPay.getPrime(callback)

TPDirect.samsungPay.getPrime(function (result) {
    if (result.status !== 0) {
        return console.error('getPrime failed: ' + result.msg)
    }

    // 把 prime 傳到您的 server,並使用 Pay by Prime API 付款
    var prime = result.prime
})

Get Prime Result

處理收到的結果,將 Prime 回傳至您的伺服器
再用 Pay by Prime API 來完成付款

{
    "status": Int,
    "msg": String,
    "prime": String,
    "total_amount": String,
    "client_ip": String,
    "card": {
        "lastfour": String,
        "type": Int
    }
}
名稱 類別 內容
status Int 交易代碼,成功的話為0
msg String 錯誤訊息
prime Stinrg prime 字串,於 Pay by Prime 交易時使用
total_amount String 總金額
client_ip String 消費者的 IP 位置
card JSONObject
名稱類別內容
lastfourString實體卡片的末四碼
typeInt卡片種類
1 = VISA
2 = MasterCard
3 = JCB
4 = Union Pay
5 = AMEX