일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 안드로이드 레트로핏 crud
- ANR이란
- 안드로이드 유닛 테스트
- rxjava cold observable
- 안드로이드 유닛 테스트 예시
- ar vr 차이
- 멤버변수
- 스택 큐 차이
- android ar 개발
- 2022 플러터 안드로이드 스튜디오
- rxjava disposable
- jvm이란
- 서비스 vs 쓰레드
- 안드로이드 라이선스
- 자바 다형성
- 안드로이드 os 구조
- 2022 플러터 설치
- 클래스
- Rxjava Observable
- 큐 자바 코드
- rxjava hot observable
- 서비스 쓰레드 차이
- 객체
- jvm 작동 원리
- android retrofit login
- 안드로이드 유닛테스트란
- 스택 자바 코드
- 안드로이드 라이선스 종류
- 플러터 설치 2022
- 안드로이드 레트로핏 사용법
- Today
- Total
나만을 위한 블로그
[Android] 안드로이드 KG이니시스 결제 연동하는 법 본문
※ 20.06.24에 에러 없이 작동하는 걸 확인한 후 올리는 코드임
1. 매니페스트에 권한 설정
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
2. 앱 수준 gradle에 의존성 추가
implementation 'com.github.bootpay:client_android_java:3.2.47'
3. 프로젝트 수준 gradle에 의존성과 리포지토리 추가
dependencies {
classpath 'com.android.tools.build:gradle:3.6.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' <- 이 부분을 추가한다
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' } <- 이 부분을 추가한다
}
}
4. 레이아웃 xml 설정. 테스트니까 버튼 하나만 뒀다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="결제"
android:textSize="30sp"/>
</LinearLayout>
5. MainActivity.java 소스코드
이 코드를 보기 전에 들어가야 할 사이트가 있다. 키를 하나 받아야 하는데 이게 없으면 결제고 나발이고 안된다.
이 사이트에 회원가입 후 로그인한 다음 IP 및 인증키 관리 페이지에서 Android를 누르고 Android Application ID 텍스트의 아래 회색 부분을 누른다.
구글링 후 나오는 게시글들을 보면 application id라고만 써놨길래 안드로이드 스튜디오에서 확인하는 건줄 알았는데 그게 아니라 이 사이트에서 확인하는 거다.
확인하는 경로는 여기다.
저걸 누르면 아래의 화면이 나온다. 회색 부분을 클릭하면 지가 알아서 클립보드에 복사되니 이 키는 메모장에 잠깐 붙여넣기하자.
그 다음 아래 소스코드에서 '웹에서 확인한 id' 부분에 복사한 키를 붙여넣는다.
당연한 거지만 "" 안에 넣어야 한다.
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import kr.co.bootpay.Bootpay;
import kr.co.bootpay.BootpayAnalytics;
import kr.co.bootpay.enums.Method;
import kr.co.bootpay.enums.PG;
import kr.co.bootpay.enums.UX;
import kr.co.bootpay.listener.CancelListener;
import kr.co.bootpay.listener.CloseListener;
import kr.co.bootpay.listener.ConfirmListener;
import kr.co.bootpay.listener.DoneListener;
import kr.co.bootpay.listener.ReadyListener;
import kr.co.bootpay.model.BootExtra;
import kr.co.bootpay.model.BootUser;
public class MainActivity extends AppCompatActivity {
Button button;
private int stuck = 10;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 초기설정 - 해당 프로젝트(안드로이드)의 application id 값을 설정합니다. 결제와 통계를 위해 꼭 필요합니다.
// 앱에서 확인하지 말고 꼭 웹 사이트에서 확인하자. 앱의 application id 갖다 쓰면 안됨!!!
BootpayAnalytics.init(this, "웹에서 확인한 application id 값 복붙");
button = findViewById(R.id.test);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
BootUser bootUser = new BootUser().setPhone("010-1234-5678"); // !! 자신의 핸드폰 번호로 바꾸기
BootExtra bootExtra = new BootExtra().setQuotas(new int[] {0, 2, 3});
Bootpay.init(getFragmentManager())
.setApplicationId("웹에서 확인한 application id 값 복붙") // 해당 프로젝트(안드로이드)의 application id 값(위의 값 복붙)
.setPG(PG.INICIS) // 결제할 PG 사
.setMethod(Method.CARD) // 결제수단
.setContext(MainActivity.this)
.setBootUser(bootUser)
.setBootExtra(bootExtra)
.setUX(UX.PG_DIALOG)
// .setUserPhone("010-1234-5678") // 구매자 전화번호
.setName("맥북프로's 임다") // 결제할 상품명
.setOrderId("1234") // 결제 고유번호 (expire_month)
.setPrice(10000) // 결제할 금액
.addItem("마우's 스", 1, "ITEM_CODE_MOUSE", 100) // 주문정보에 담길 상품정보, 통계를 위해 사용
.addItem("키보드", 1, "ITEM_CODE_KEYBOARD", 200, "패션", "여성상의", "블라우스") // 주문정보에 담길 상품정보, 통계를 위해 사용
.onConfirm(new ConfirmListener() { // 결제가 진행되기 바로 직전 호출되는 함수로, 주로 재고처리 등의 로직이 수행
@Override
public void onConfirm(@Nullable String message) {
if (0 < stuck) Bootpay.confirm(message); // 재고가 있을 경우.
else Bootpay.removePaymentWindow(); // 재고가 없어 중간에 결제창을 닫고 싶을 경우
Log.d("confirm", message);
}
})
.onDone(new DoneListener() { // 결제완료시 호출, 아이템 지급 등 데이터 동기화 로직을 수행합니다
@Override
public void onDone(@Nullable String message) {
Log.d("done", message);
}
})
.onReady(new ReadyListener() { // 가상계좌 입금 계좌번호가 발급되면 호출되는 함수입니다.
@Override
public void onReady(@Nullable String message) {
Log.d("ready", message);
}
})
.onCancel(new CancelListener() { // 결제 취소시 호출
@Override
public void onCancel(@Nullable String message) {
Log.d("cancel", message);
}
})
.onClose(
new CloseListener() { //결제창이 닫힐때 실행되는 부분
@Override
public void onClose(String message) {
Log.d("close", "close");
}
})
.request();
}
});
}
}
이것 말고도 여러 결제 모듈과 결제 수단이 존재하는데 다른 걸 쓰고 싶다면 이 사이트를 참조. 기본적인 의존성과 매니페스트 설정 및 각 경우별 소스코드, 소스코드에서 사용하는 요청 파라메터에 대해 친절하게 설명돼 있다.
값들을 자신에 맞게 바꾼 후 앱을 빌드하면 아래처럼 작동한다.
취소나 백버튼을 누르면 정말 미련없이 깔끔하게 결제창이 사라지는 걸 볼 수 있다.
자바 소스코드에서 입력한 핸드폰 번호의 단말에서 모듈이 떠오르는 걸 볼 수 있고 소스코드에 적힌대로 금액, 상품명이 나오는 걸 볼 수 있다.
저 안에 들어갈 정보는 인텐트를 통해 값을 넘겨서 받아오든가 쉐어드에서 저장된 값을 getXXX()으로 빼오던가 해서 자신에 맞게 바꿔 넣으면 될 것이다.
'Android' 카테고리의 다른 글
[Android] Google Vision API 사용 시 Requests from this Android client application <empty> are blocked 에러 해결 (0) | 2020.06.30 |
---|---|
[Android] 핸드폰 키보드 자판에 검색 버튼 나오게 하는 법 (0) | 2020.06.26 |
[Android] 다음 우편번호 API 사용하기 (0) | 2020.06.23 |
[Android] 리사이클러뷰 아이템 간 가로 / 세로 간격 조절하는 법 (0) | 2020.06.22 |
[Android] Volley를 사용해 이미지, 텍스트를 같이 서버에 저장하는 법 (0) | 2020.06.22 |