NAV
docs

Create Token

Samsung Pay in App

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

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, TPDSamsungPayGetPrimeSuccessCallback, TPDTokenFailureCallback);


TPDSamsungPayGetPrimeSuccessCallback 參數

名稱 類別 內容
prime String prime 字串,於 Pay by Prime 交易時使用
cardInfo JSONObject 卡片資訊,將會回傳以下幾個值:
名稱類別(長度)內容
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發卡行國家碼
merchantReferenceInfo JSON 若商戶在 TapPay 後台使用 Co-brand card management 功能,且交易卡號符合設定時,將會回傳此參數,不支援 JKOPAY

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


TPDGetPrimeFailureCallback 參數

名稱 類別 內容
status Int 錯誤代碼
msg String 錯誤訊息

Example

如果您碰到問題,可參考我們的範例程式

Samsung Pay Web Checkout

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

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/v5.7.0"></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: ['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 Button

請參考 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
    },
    "card_info": {
        "bincode": String,
        "lastfour": String,
        "issuer": String,
        "issuer_zh_tw": String,
        "bank_id": String,
        "funding": int,
        "type": int,
        "level": String,
        "country": String,
        "countrycode": String,
    },
    "merchant_reference_info": {
        "affiliate_codes": ArrayString,
    }
}
名稱 類別 內容
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
card_info JSONObject 卡片資訊,將會回傳以下幾個值:
名稱類別(長度)內容
bincodeString(6)卡片前六碼
lastfourString(4)卡片後四碼
issuerString發卡銀行
issuer_zh_twString發卡銀行中文名稱
bank_idString發卡銀行代碼
fundingint卡片類別
-1 = Unknown
0 = 信用卡 (Credit Card)
1 = 簽帳卡 (Debit Card)
2 = 預付卡 (Prepaid Card)
typeint卡片種類
-1 = Unknown
1 = VISA
2 = MasterCard
3 = JCB
4 = Union Pay
5 = AMEX
levelString卡片等級
countryString發卡行國家
countrycodeString發卡行國家碼
merchant_reference_info JSONObject 若商戶在 TapPay 後台使用 Co-brand card management 功能,且交易卡號符合設定時,將會回傳此參數,不支援 JKOPAY

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

Example

如果您碰到問題,可參考我們的範例程式

Q&A

如果您需要設定 Content Security Policy 中的 frame-src, 請設置以下二個網域:

  1. js.tappaysdk.com
  2. fraud.tappaysdk.com