본문 바로가기
안드로이드

안드로이드 부트페이 API 카카오결제 사용! (JAVA)

by 개발_블로그 2021. 11. 18.
반응형

 

오늘은 부트페이 API 를 사용하는 예제를 준비해봤습니다 . 

 

하기전에 API를 사용하려면 해당 사이트의 동의를 받아야겠죠! 

1.부트페이 접속(https://www.bootpay.co.kr/) --- 부트페이 회원가입 , 로그인

2.상단에 결제설치 메뉴에서 인증키 및 보안에 들어가서 자신의 안드로이드 어플리케이션을 id 확인

더 자세한 내용은부트페이 개발자메뉴얼 페이지가서 확인 , 에뮬레이터보다 핸드폰으로 확인해보세요

(https://docs.bootpay.co.kr/online/total?language=android )

 

 

 

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"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/test"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="결제"
        android:textSize="30sp"/>

</LinearLayout>

버튼 한개로만 설정하겠습니다 .

 

 

다음은 메인 액티비티입니다 . 

 

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

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.ErrorListener;
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, "안드로이드 ID ");



        button = findViewById(R.id.test);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                BootUser bootUser = new BootUser().setPhone("010-XXXX-XXXX"); //자기 전화번호 
                BootExtra bootExtra = new BootExtra().setQuotas(new int[]{0, 2, 3});



                Bootpay.init(getFragmentManager())
                        .setApplicationId("안드로이드 ID") // 해당 프로젝트(안드로이드)의 application id값 
                .setPG(PG.KCP) // 결제할 PG 사
                        .setMethod(Method.KAKAO) // 결제수단
                        .setContext(MainActivity.this)
                        .setBootUser(bootUser)
                        .setBootExtra(bootExtra)
                        .setUX(UX.PG_DIALOG)
//                      .setUserPhone("010-1234-5678") // 구매자 전화번호
                        .setName("맥북프로's 임다") // 결제할 상품명
                        .setOrderId("1234") // 결제 고유번호expire_month
                        .setPrice(100) // 결제할 금액
                  
                  //개발자 메뉴얼에 가면 더 추가할 수 있음 . 
                  
                        .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);
                            }
                        })
                        .onError(new ErrorListener() { // 에러가 났을때 호출되는 부분
                            @Override
                            public void onError(@Nullable String message) {
                                Log.d("error", message);
                            }
                        })
                        .onClose(
                                new CloseListener() { //결제창이 닫힐때 실행되는 부분
                                    @Override
                                    public void onClose(String message) {
                                        Log.d("close", "close");
                                    }
                                })
                        .request();
            }
        });
    }
}

 

Build gradle (module) 설정입니다 . 

defaultConfig {
   
        minSdkVersion 21     /// 만약 21 이하라면 21이상으로 수정
  
           targetSdkVersion 29   ///30 이상이면 30미만으로 수정 
  

    }

dependencies {
   
  implementation 'com.github.bootpay:client_android_java:3.3.04'
  
 }

 

Build gradle(project) 입니다 . 

  dependencies {
   
        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'   //추가

    }


allprojects {
    repositories {
 
  
        maven { url 'https://jitpack.io' } //추가 
    }
}

 

마지막!! manifest 

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

 

 

 

이게 제가 예전에 포스팅한 글이라서 버젼이 현재와는 차이가 있을 수 있습니다 . 

버젼이나 추가적인게 있다면 댓글 달아주세요!! 

반응형