stera terminal(ステラターミナル)の設置情報を利用する
端末設置情報とは
stera terminal(ステラターミナル)には端末固有のシリアル番号や、識別番号、加盟店番号、業種情報、利用可能な金種一覧などの端末設置情報を保持しております。
端末設置情報は下記のとおりです。
表の詳細については横スクロールさせて確認することができます。
| No. | 設置情報 | 詳細 |
|---|---|---|
| 1 | 機種名(品番) | 端末の機種名 |
| 2 | シリアル番号 | 端末固有のシリアル番号 |
| 3 | システムバージョン | 端末にインストールされているシステム(ソフトウェア)のバージョン |
| 4 | 端末識別番号(TID) | 端末が固有に持つ、識別番号(半角数字13ケタの文字列) |
| 5 | 加盟店番号 | 端末を設置している加盟店の番号 |
| 6 | 業種コード | 下記5種類に分類された業種コード(半角数字1~5の文字列) “業種コード”:業種 “1”:物販 “2”:飲食 “3”:宿泊 “4”:旅行 “5”:その他 |
| 7 | 業種名 | 設置している加盟店の業種名 |
| 8 | 利用可能な金種一覧 (※1) |
決済連携サービスに利用可能な金種コード一覧(文字列) “金種コード”:金種 “01”:クレジット,銀聯 “02-01”:iD “02-02”:交通系IC “02-03”:楽天Edy “02-04”:WAON “02-05”:nanaco “02-06”:QUICPay plus “02-07”:PiTaPa “03”:QR |
1:金種とは、決済時に利用する決済方法の種別のことです。
アプリは以下のSDKを利用することで端末設置情報を取得することができます。
PaymentApi.jarの利用方法は以下のページを参照ください。
InstalledInfomation Java APIについて
端末設置情報の取得にはInstalledInfomationAPIを利用します。
InstalledInfomation Java APIで提供するAPIは次のとおりです。
InstalledInformation Java APIフィールド
表の詳細については横スクロールさせて確認することができます。
| No. | 型 | フィールド名 | 値 | 詳細 |
|---|---|---|---|---|
| 1 | static String | PRODUCT_SALES | “1” | 業種コード(=”1”)の「物販」を意味するフィールド |
| 2 | static String | RESTAURANT | “2” | 業種コード(=”2”)の「飲食」を意味するフィールド |
| 3 | static String | ACCOMODATIONS | “3” | 業種コード(=”3”)の「宿泊」を意味するフィールド |
| 4 | static String | TRAVEL_AGANCY | “4” | 業種コード(=”4”)の「旅行」を意味するフィールド |
| 5 | static String | OTHERS | “5” | 業種コード(=”5”)の「その他」を意味するフィールド |
| 6 | static String | CREDIT_UNIONPAY | “01” | 金種コード(=”01”)の「クレジット,銀聯」を意味するフィールド |
| 7 | static String | ID | “02-01” | 金種コード(=”02-01”)の「iD」を意味するフィールド |
| 8 | static String | TRAFFIC_IC | “02-02” | 金種コード(=”02-02”)の「交通系IC」を意味するフィールド |
| 9 | static String | RAKUTEN_EDY | “02-03” | 金種コード(=”02-03”)の「楽天Edy」を意味するフィールド |
| 10 | static String | WAON | “02-04” | 金種コード(=”02-04”)の「WAON」を意味するフィールド |
| 11 | static String | NANACO | “02-05” | 金種コード(=”02-05”)の「nanaco」を意味するフィールド |
| 12 | static String | QUIC_PAY | “02-06” | 金種コード(=”02-06”)の「QUICPay」を意味するフィールド |
| 13 | static String | PITAPA | “02-07” | 金種コード(=”02-07”)の「PiTaPa」を意味するフィールド |
| 14 | static String | QR | “03” | 金種コード(=”03”)の「QR」を意味するフィールド |
InstalledInformation Java API メソッド
表の詳細については横スクロールさせて確認することができます。
| No | メソッド | 機能 |
|---|---|---|
| 1 | enum ValueType | 取得可能な情報の種類をenum型で列挙します。 メソッドNo.2、No.3の引数に使用してください。 種類(enum型):情報名 PRODUCT_NUMBER:機種名(品番) SERIAL_NUMBER:シリアル番号 SYSTEM_VERSION:システムバージョン TID:端末識別番号 MERCHANT_NUMBER:加盟店番号 INDUSTRY_CODE:業種コード INDUSTRY_NAME:業種名 |
| 2 | String getTerminalInfo(ValueType valueType) | 端末情報を文字列で取得できます。 どの情報を取得するかは該当する種類(valueType)をenum型で指定します。 |
| 3 | String getMerchantInfo(ValueType valueType) | 加盟店情報を文字列で取得できます。 どの情報を取得するかは該当する種類(valueType)をenum型で指定します。 |
| 4 | List<String> getPaymentType() | 決済連携サービスに利用可能な金種コードをString型のListで取得できます。(利用不可な金種コードは含まれません) “金種コード”:金種 “01”:クレジット,銀聯 “02-01”:iD “02-02”:交通系IC “02-03”:楽天Edy “02-04”:WAON “02-05”:nanaco “02-06”:QUICPay plus “02-07”:PiTaPa “03”:QR |
実際に情報を取得してみる
端末設置情報を取得するためには下記の手続きを実施する必要があります。
実際のコードは下記のとおりです。
InstalledInfomationのインスタンス取得
コードは横スクロールさせて確認することができます。
protected void onResume() {
super.onResume();
// Connect to PaymentAPI Service.
mPaymentApiConnection.initializePaymentApi(this);
// check if PaymentApi is connected
mPaymentApiConnection.setIPaymentApiInitializationListener(new IPaymentApiInitializationListener() {
// PaymentApi is connected
@Override
public void onApiConnected() {
Log.d(TAG, "[in] onApiConnected");
mCallbackHandler.post(mRunnable = new Runnable() {
@Override
public void run() {
// Get IInstalledInformation instance
mIInstalledInformation = mPaymentApiConnection.getInstalledInformation();
showInstalledInformation();
}
});
Log.d(TAG, "[out] onApiConnected");
}
// PaymentApi isn't connected
@Override
public void onApiDisconnected() {
Log.d(TAG, "PaymentApi is disconnected");
}
});
}
取得する情報ごとのAPIを実行
コードは横スクロールさせて確認することができます。
// get InstalledInformation values and show them
private void showInstalledInformation() {
// Get Product Number
String productNumber = mIInstalledInformation.getTerminalInfo(IInstalledInformation.ValueType.PRODUCT_NUMBER);
Log.d(TAG, "Product Number =" + productNumber);
mTvModelName.setText(productNumber);
// Get Serial Number
String serialNumber = mIInstalledInformation.getTerminalInfo(IInstalledInformation.ValueType.SERIAL_NUMBER);
Log.d(TAG, "Serial Number =" + serialNumber);
mTvSerialNumber.setText(serialNumber);
// Get System Version
String systemVersion = mIInstalledInformation.getTerminalInfo(IInstalledInformation.ValueType.SYSTEM_VERSION);
Log.d(TAG, "System version =" + systemVersion);
mTvPaymentSystemVersion.setText(systemVersion);
// Get TID (Terminal Identification)
String TerminalID = mIInstalledInformation.getTerminalInfo(IInstalledInformation.ValueType.TID);
Log.d(TAG, "TID(Terminal ID) =" + TerminalID);
mTvTerminalID.setText(TerminalID);
// Get Merchant Number
String merchantNumber = mIInstalledInformation.getMerchantInfo(IInstalledInformation.ValueType.MERCHANT_NUMBER);
Log.d(TAG, "Merchant Number =" + merchantNumber);
mTvMerchantNumber.setText(merchantNumber);
// Get Industry Code
String industryCode = mIInstalledInformation.getMerchantInfo(IInstalledInformation.ValueType.INDUSTRY_CODE);
Log.d(TAG, "Industry Code =" + industryCode);
String industry = "";
switch (industryCode) {
case IInstalledInformation.PRODUCT_SALES:
industry = getString(R.string.ProductSales);
break;
case IInstalledInformation.RESTAURANT:
industry = getString(R.string.Restaurant);
break;
case IInstalledInformation.ACCOMMODATIONS:
industry = getString(R.string.Accommodation);
break;
case IInstalledInformation.TRAVEL_AGENCY:
industry = getString(R.string.Travel);
break;
case IInstalledInformation.OTHERS:
industry = getString(R.string.Others);
break;
default:
Log.d(TAG, "Unknown industry code.");
break;
}
mTvIndustryCode.setText(getString(R.string.IndustryCode) + getString(R.string.separator) + industryCode + "\n"
+ getString(R.string.Industry) + getString(R.string.separator) + industry);
// Get Industry Name
String industryName = mIInstalledInformation.getMerchantInfo(IInstalledInformation.ValueType.INDUSTRY_NAME);
Log.d(TAG, "Industry Name =" + industryName);
mTvIndustryName.setText(industryName);
// Get Payment Type
List<String> paymentType = mIInstalledInformation.getPaymentType();
Log.d(TAG, "Payment Type=" + paymentType);
StringBuilder availablePaymentType = new StringBuilder();
for (String type : paymentType) {
switch (type) {
case IInstalledInformation.CREDIT_UNIONPAY:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.CreditUnionPay) + "\n");
break;
case IInstalledInformation.ID:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.iD) + "\n");
break;
case IInstalledInformation.TRAFFIC_IC:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.TrafficIC) + "\n");
break;
case IInstalledInformation.RAKUTEN_EDY:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.Edy) + "\n");
break;
case IInstalledInformation.WAON:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.WAON) + "\n");
break;
case IInstalledInformation.NANACO:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.nanaco) + "\n");
break;
case IInstalledInformation.QUIC_PAY:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.QUICPay) + "\n");
break;
case IInstalledInformation.PITAPA:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.PiTaPa) + "\n");
break;
case IInstalledInformation.QR:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.QR) + "\n");
break;
default:
availablePaymentType.append(type + getString(R.string.separator)
+ getString(R.string.unknownPaymentType) + "\n");
Log.d(TAG, "No function is ready");
break;
}
}
mTvPaymentType.setText(availablePaymentType);
}