이 저장소는 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()
()이 사용됩니다.
SumUpPayment
개체를 설정할 때 다음과 같은 선택적 매개변수를 포함할 수 있습니다.
tip
매개변수를 사용하여 total
외에 팁 금액도 처리할 수 있습니다. 그러면 결제 과정에서 팁 금액이 표시되고 응답에 포함됩니다. 결제 도중/결제 후에는 팁 금액을 변경할 수 없습니다.
이를 통해 고객은 Android 기기에서 팁 금액을 묻는 메시지를 표시하는 대신 카드 리더기에 직접 팁을 추가할 수 있습니다.
카드 판독기가 팁 제공을 지원하는 경우, tipOnCardReader
매개변수를 사용하여 카드 판독기에 팁 금액을 직접 표시할 수 있습니다. tipOnCardReader
필드에 대한 예는 여기를 참조하세요.
참고: 모든 카드 리더기가 이 기능을 지원하는 것은 아닙니다. 마지막으로 저장된 카드 리더기에서 해당 기능이 지원되는지 확인하려면 항상
SumUpApi.isTipOnCardReaderAvailable()
확인해야 합니다. 팁이 표시되지 않도록 하려면 이 사례를 직접 처리해야 합니다. 또한tip
과tipOnCardReader
모두 호출되면 결제 시 가능한 경우tipOnCardReader
금액만 고려됩니다.
configureRetryPolicy()
기능을 사용하면 pollingInterval
, maxWaitingTime
및 disableBackButton
사용하여 트랜잭션 결과 검색을 위한 사용자 정의 재시도 매개변수를 설정할 수 있습니다.
pollingInterval
및 maxWaitingTime
모두 밀리초 단위로 제공되어야 하며 기본값은 각각 2000ms 및 60000ms입니다. 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에 의해 처리됩니다.
요약 Android SDK 변경 내역
요약 Android SDK 라이선스