Create Token
Samsung Pay in App
如欲了解最新版號 SDK 以及各版號之間的差異性,請參考 Github Release Page : TapPay Android Github
Overview
Samsung Pay in App 主要分為四個步驟:
- 專案設置, 使用 TPDSetup 設定環境
- 準備商店資訊
- 建立 TPDSamsungPay 物件, 並確認用戶設備是否支援 SamsungPay
- 利用 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 | 卡片資訊,將會回傳以下幾個值:
|
|||||||||||||||||||||||||||||||||
merchantReferenceInfo | JSON | 若商戶在 TapPay 後台使用 Co-brand card management 功能,且交易卡號符合設定時,將會回傳此參數,不支援 JKOPAY 商戶於TapPay後台設定的affiliate code management須限制於20字元內且為半形的英數字
|
|||||||||||||||||||||||||||||||||
card | JSONObject |
|
TPDGetPrimeFailureCallback 參數
名稱 | 類別 | 內容 |
---|---|---|
status | Int | 錯誤代碼 |
msg | String | 錯誤訊息 |
Example
如果您碰到問題,可參考我們的範例程式
Samsung Pay Web Checkout
如欲了解最新版號 SDK 以及各版號之間的差異性,請參考 Github Release Page : TapPay Web Github
Overview
Samsung Pay Mobile Web 主要分為兩個步驟:
- 利用 TapPay Web SDK 取得 prime
- 將 prime 回傳給您的伺服器,並透過 pay-by-prime 來完成付款
Setup SDK
TPDirect.setupSDK(appID, appKey, serverType)
名稱 | 內容 |
---|---|
appID | 請參考 appid |
appKey | 請參考 appkey |
serverType | 使用的伺服器種類 測試時請使用 Sandbox 環境 (‘sandbox’) 實體上線後請切換至 Production 環境 ('production’) |
請注意版本的差異,避免載入 Web SDK 錯誤
https://js.tappaysdk.com/sdk/tpdirect/v5.14.0
https://js.tappaysdk.com/tpdirect/v5.13.1
使用方式請參考以下範例
<script src="https://js.tappaysdk.com/sdk/tpdirect/v5.14.0"></script>
<script>
TPDirect.setupSDK(APP_ID, 'APP_KEY', 'sandbox')
</script>
若使用低於 v5.14.0 之Web SDK版本,請使用以下路徑引用 Web SDK
<script src="https://js.tappaysdk.com/tpdirect/v5.13.1"></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 |
|
|||||||||||||||||||||||||||||||||
card_info | JSONObject | 卡片資訊,將會回傳以下幾個值:
|
|||||||||||||||||||||||||||||||||
merchant_reference_info | JSONObject | 若商戶在 TapPay 後台使用 Co-brand card management 功能,且交易卡號符合設定時,將會回傳此參數,不支援 JKOPAY 商戶於TapPay後台設定的affiliate code management須限制於20字元內且為半形的英數字
|
Example
如果您碰到問題,可參考我們的範例程式
Q&A
如果您需要設定 Content Security Policy 中的 frame-src, 請設置以下二個網域:
- js.tappaysdk.com
- fraud.tappaysdk.com