このリポジトリは、SumUp のネイティブ Android SDK のステップバイステップのドキュメントを提供します。これにより、当社独自のカード端末とその支払いプラットフォームを統合して、クレジット カードおよびデビット カード支払い (VISA、MasterCard、American Express などを含む) を受け入れることができます。 SDK は Bluetooth (BLE 4.0) 経由でカード端末と透過的に通信します。チェックアウトを開始すると、SDK は適切な画面を使用して支払いプロセスの各ステップをユーザーにガイドします。プロセスの一環として、SumUp はカード所有者の署名確認画面に加えて、カード端末のセットアップ画面も提供します。チェックアウト結果は、記録に関連するデータとともに返されます。
カードの機密データが販売者の電話に渡されたり、販売者の電話に保存されたりすることはありません。すべてのデータは、最高の業界標準 (PCI、EMV I & II、Visa、MasterCard、Amex) に対して完全に認定されたカード端末によって暗号化されます。
SumUp 開発者製品の詳細については、SumUp API ドキュメントを参照してください。
minSdkVersion
26 以降が必要ですtargetSDK
31以降リポジトリを Gradle 依存関係に追加します。
allprojects {
repositories {
maven { url ' https://maven.sumup.com/releases ' }
}
}
依存関係をモジュールに追加します。
implementation ' com.sumup:merchant-sdk:5.0.3 '
アプリ内の SumUp コンポーネントを初期化します。
public class SampleApplication extends Application {
@ Override
public void onCreate () {
super . onCreate ();
SumUpState . init ( this );
}
}
SumUp SDK の機能を呼び出す前に、登録済みの SumUp 販売アカウントにログインする必要があります。https://me.sumup.com/developers にアクセスして、アプリのアプリケーション ID を入力してアフィリエイト キーを取得してください。 (例: com.sumup.sdksampleapp)
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
注: ユーザーが SDK に SumUp ログイン資格情報を入力せずに、トークンを使用してアカウントにログインすることもできます。 「透過的認証」セクションを参照してください。
ログインすると、SumUp SDK を使用してカード支払いを受け入れることができます。ログインしているアカウントがない場合は、 SumUpAPI.Response.ResultCode.ERROR_NOT_LOGGED_IN
が返されます。
SumUpPayment payment = SumUpPayment . builder ()
// mandatory parameters
. total ( new BigDecimal ( "1.12" )) // minimum 1.00
. currency ( SumUpPayment . Currency . EUR )
// optional: to be used only if the card reader supports the feature, what can be checked with `SumUpApi.isTipOnCardReaderAvailable()`
. tipOnCardReader ()
// optional: include a tip amount in addition to the total, ignored if `tipOnCardReader()` is present
. tip ( new BigDecimal ( "0.10" ))
// optional: add details
. title ( "Taxi Ride" )
. receiptEmail ( "[email protected]" )
. receiptSMS ( "+3531234567890" )
// optional: Add metadata
. addAdditionalInfo ( "AccountId" , "taxi0334" )
. addAdditionalInfo ( "From" , "Paris" )
. addAdditionalInfo ( "To" , "Berlin" )
// optional: foreign transaction ID, must be unique!
. foreignTransactionId ( UUID . randomUUID (). toString ()) // can not exceed 128 chars
// optional: skip the success screen
. skipSuccessScreen ()
// optional: skip the failed screen
. skipFailedScreen ()
. build ();
SumUpAPI . checkout ( MainActivity . this , payment , 2 );
@ Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data ) {
if ( requestCode == 2 && data != null ) {
// Handle the response here
}
}
コールバック アクティビティが呼び出されたときに、いくつかの応答フィールドを使用できます。
応答フラグは、コールバック アクティビティに返されるバンドル内で提供されます。
int resultCode = getIntent (). getExtras (). getInt ( SumUpAPI . Response . RESULT_CODE );
販売者がログインしている場合、このアクティビティを開いて、カード リーダーに関連するすべての設定とオプションにアクセスできます。
SumUpAPI . openCardReaderPage ( MainActivity . this , 4 );
prepareForCheckout()
使用すると、チェックアウトを開始する前にカード リーダーを接続できるため、全体的なチェックアウト時間が短縮されます。
このメソッドを呼び出すには、ユーザーは SumUp アカウントでログインし、カード リーダーがすでにセットアップされている必要があります。次に、チェックアウトを開始する前にprepareForCheckout()
呼び出します。
注: Air および Solo カード リーダーは各トランザクション後に BLE 経由で接続されたままですが、カード リーダーが切断された場合 (例: リーダーが範囲外になった場合、ホスト アプリがフォーカスを失った場合、またはリーダーがオフになった場合)、 prepareForCheckout
prepareForCheckout()
が使用されます。
SumUpPayment
オブジェクトを設定する場合、次のオプションのパラメーターを含めることができます。
tip
パラメータを使用すると、 total
に加えてチップ金額を処理できます。チップの金額はチェックアウトプロセス中に表示され、応答に含まれます。チェックアウト中またはチェックアウト後にチップの金額を変更することはできませんのでご注意ください。
これにより、顧客は Android デバイスでチップの金額を入力するよう求められるのではなく、カード リーダーに直接チップを追加できるようになります。
カード リーダーがチップをサポートしている場合は、 tipOnCardReader
パラメーターを使用して、カード リーダーでチップの金額を直接求めることができます。ここのフィールドtipOnCardReader
の例を参照してください。
注: すべてのカード リーダーがこの機能をサポートしているわけではありません。この機能が最後に保存されたカード リーダーでサポートされているかどうかを確認するには、常に
SumUpApi.isTipOnCardReaderAvailable()
を確認する必要があります。チップが要求されないようにするには、このケースは自分で処理する必要があります。また、tip
とtipOnCardReader
両方が呼び出された場合、チェックアウト時に利用可能な場合は、tipOnCardReader
金額のみが考慮されることにも注意してください。
configureRetryPolicy()
機能を使用すると、 pollingInterval
、 maxWaitingTime
、およびdisableBackButton
使用して、トランザクション結果を取得するためのカスタム再試行パラメータを設定できます。
pollingInterval
とmaxWaitingTime
どちらもミリ秒単位で指定する必要があり、デフォルト値はそれぞれ 2000 ミリ秒と 60000 ミリ秒です。 disableBackButton
true に設定すると、再試行中に「戻る」ボタンが無効になります。maxWaitingTime
が経過しても結果が得られない場合、SDK はSumUpAPI.ResultCode.ERROR_UNKNOWN_TRANSACTION_STATUS
を返します。再試行中に戻るボタン (有効な場合) を押すと、このエラーが発生します。pollingInterval
maxWaitingTime
超える場合、 maxWaitingTime
一致するように自動的に調整されます。どちらのパラメータも負の値の場合、デフォルトは 0 になります。configureRetryPolicy()
が使用されていない場合、SDK はデフォルトでSumUpAPI.ResultCode.ERROR_TRANSACTION_FAILED
を返します。 SumUp決済をご利用の場合は以下の通りです。
SumupPayment . builder ()
...
. foreignTransactionId ( UUID . randomUUID (). toString ())
. configureRetryPolicy ( 2000 , 60000 , true )
. build ();
接続に問題があり、トランザクション ステータスを取得できない場合、API はERROR_UNKNOWN_TRANSACTION_STATUS
を返します。このような場合は、指定したforeignTransactionId
を使用して SumUp トランザクション ステータス API を呼び出すことで、トランザクション ステータスをクエリできます。
foreignTransactionID
識別子はトランザクションに関連付けられ、トランザクションに関連する詳細を取得するために使用できます。詳細については、API ドキュメントを参照してください。この ID が SumUp 販売アカウントおよびサブアカウントの範囲内で一意であることを確認してください。 128 文字を超えてはなりません。コールバック アクティビティが呼び出されるときに、foreignTransactionID を使用できます: SumUpAPI.Param.FOREIGN_TRANSACTION_ID
成功したトランザクションの最後に表示される成功画面をスキップするには、 skipSuccessScreen
パラメーターを使用できます。このパラメータを使用する場合、アプリケーションはトランザクション結果を顧客に表示する必要があります。 Receipts API と組み合わせて、アプリケーションは独自の領収書を送信することもできます。詳細については、API ドキュメントを参照してください。 SumUp Air Lite リーダーを使用している場合でも、成功画面が表示されることに注意してください。
失敗したトランザクションの最後に表示される失敗した画面をスキップするには、 skipFailedScreen
パラメーターを使用できます。このパラメータを使用する場合、アプリケーションはトランザクション結果を顧客に表示する必要があります。 SumUp Air Lite リーダーを使用する場合、失敗した画面が引き続き表示されることに注意してください。
ユーザーが毎回 SumUp 資格情報を入力せずにアカウントを認証するには、OAuth2.0 を使用してアクセス トークンを生成し、それを使用して SumUp SDK に透過的にログインできます。
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). accessToken ( "MY_ACCESS_TOKEN" ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
トークンの取得方法については、API ドキュメントを参照してください。
トークンが無効な場合は、 SumUpAPI.Response.ResultCode.ERROR_INVALID_TOKEN
が返されます。
販売アカウントが現在ログインしている場合は、このアカウントのデータを取得できます。
if (! SumUpAPI . isLoggedIn ()) {
// no merchant account currently logged in
} else {
Merchant currentMerchant = SumUpAPI . getCurrentMerchant ();
}
SumUpAPI . logout ();
buildTypes {
release {
// All ProGuard rules required by the SumUp SDK are packaged with the library
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android.txt ' )
}
}
SDK は Google 位置情報サービスをサポートし、位置精度を向上させ、消費電力を削減します。
これを使用するには、build.gradle ファイルに依存関係を追加する必要があります。
implementation " com.google.android.gms:play-services-location:19.0.1 "
GLS 依存関係がプロジェクトに追加されていない場合、または Google Play サービスがモバイル デバイスにインストールされていない場合、SumUp SDK は Android が提供するデフォルトの位置情報サービスを使用して位置を特定します。
注: GLS バージョン 19.0.1 の使用をお勧めします。
次の関数は SumUp API によって処理されます。
SumUp Android SDK 変更ログ
Android SDK ライセンスの合計