ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • bootpay flutter 결제 연동
    flutter 2025. 1. 3. 11:20
    반응형

    순서

    개발 진행 -> PG 심사 -> 카드사 심사(2주~3주소요)

     

    참고로 개발을 하다 중단이 된 상태다

     

    이유 : 기부 목적으로 기능을 만듬, 비영리 단체가 아닌이상 기부 서비스 심사가 거절됨 (기부영수증 발행이 가능해야함)

    카드사에서 배네핏을 보고 심사를해줌 (실물 상품) - 멤버십도 어려울수 있음

     

    그렇게 인앱 결제로 전환 하기로함

     

    일단 개발까지 한것만 기록하려고 함

     

    회원가입

     

     

     

    PG사 선택

     

    참고로 나이스 페이를 신청시 카카오가 안되기 때문에 카카로 따로 신청해야함

    화면에서는 카카오페이가 지원되는것으로 보이지만 사실은 아닌듯 (상담사가 따로 신청하라고함)

     

    void bootpayTest(BuildContext context) {
        Payload payload = getPayload();
        if (kIsWeb) {
          payload.extra?.openType = "iframe";
        }
    
        Bootpay().requestSubscription(
          context: context,
          payload: payload,
          showCloseButton: false,
          onCancel: (String data) {
            print('------- onCancel: $data');
          },
          onError: (String data) {
            print('------- onCancel: $data');
          },
          onClose: () {
            print('------- onClose');
            Bootpay().dismiss(context); //명시적으로 부트페이 뷰 종료 호출
            //TODO - 원하시는 라우터로 페이지 이동
          },
          onIssued: (String data) {
            print('------- onIssued: $data');
          },
          onConfirm: (String data) {
            /**
                1. 바로 승인하고자 할 때
                return true;
             **/
            /***
                2. 비동기 승인 하고자 할 때
                checkQtyFromServer(data);
                return false;
             ***/
            /***
                3. 서버승인을 하고자 하실 때 (클라이언트 승인 X)
                return false; 후에 서버에서 결제승인 수행
             */
            // checkQtyFromServer(data);
            return true;
          },
          onDone: (String data) {
            print('------- onDone: $data');
          },
        );
      }
    
      Payload getPayload() {
        Payload payload = Payload();
        Item item1 = Item();
        item1.name = "후원"; // 주문정보에 담길 상품명
        item1.qty = 1; // 해당 상품의 주문 수량
        item1.id = "donation"; // 해당 상품의 고유 키
        item1.price = 500; // 상품의 가격
    
        Item item2 = Item();
        item2.name = "키보드"; // 주문정보에 담길 상품명
        item2.qty = 1; // 해당 상품의 주문 수량
        item2.id = "ITEM_CODE_KEYBOARD"; // 해당 상품의 고유 키
        item2.price = 500; // 상품의 가격
        List<Item> itemList = [item1, item2];
        
        payload.androidApplicationId = '67763....'; // android application id
        payload.iosApplicationId = '677....'; // ios application id
    
    
        payload.pg = 'nicepay';
        payload.methods = ['card', 'phone', 'vbank', 'bank', 'kakao'];
        payload.orderName = "후원"; //결제할 상품명
        
        payload.orderId = DateTime.now().millisecondsSinceEpoch.toString(); 
    
        payload.metadata = {
          "callbackParam1": "value12",
          "callbackParam2": "value34",
          "callbackParam3": "value56",
          "callbackParam4": "value78",
        }; // 전달할 파라미터, 결제 후 되돌려 주는 값
        
        payload.items = itemList; // 상품정보 배열
    
        User user = User(); // 구매자 정보
        user.username = "사용자 이름";
        user.email = "user@gmail.com";
    
        Extra extra = Extra(); // 결제 옵션
        extra.appScheme = 'FlutterExample';
        extra.cardQuota = '3';
        // extra.openType = 'popup';
    
        payload.user = user;
        payload.extra = extra;
        return payload;
      }

     

    반응형

    'flutter' 카테고리의 다른 글

    Flutter - ios 인앱 결제  (1) 2025.01.09
    Flutter - 안드로이드 인앱 결제  (0) 2025.01.08
    paypal 결제 시스템 연동 (1)  (0) 2025.01.02
    Stripe 결제 Flutter 와 연동하기  (2) 2025.01.02
    flutter 네이버 로그인 구현  (2) 2024.12.05

    댓글

Designed by Tistory.