반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Kafka
- 스프링 공부
- JPA공부
- 스프링공부
- JPA
- JPA예제
- JPA 공부
- DDD
- 코테준비
- 스프링
- nestjs
- 스프링부트
- 기술공부
- nestjs공부
- 스프링부트공부
- 알고리즘공부
- querydsl
- Flutter
- Axon framework
- 카프카
- 자료구조공부
- 코테공부
- 자바공부
- 프로그래머스
- 플러터 개발
- 플러터 공부
- JPA스터디
- K8S
- 기술면접공부
- nestjs스터디
Archives
- Today
- Total
DevBoi
[Flutter] PortOne 결제 모듈 연동 본문
반응형
1. pubspec.yaml 에 의존성 추가
iamport_flutter: ^0.10.0
2.IOS 설정
info.plist에 아래 3가지를 등록 해야한다.
2-1. 앱 스킴 등록
외부 결제 앱이 호출되고 다시 돌아오기위해 필요한 앱스킴을 등록한다.
URL types > item0 > URL Schemes > item 0에 해당하는 Scheme을 작성한다.
2-2. 외부 앱 리스트 등록
아래의 리스트들을 등록해준다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>kftc-bankpay</string> <!-- 계좌이체 -->
<string>ispmobile</string> <!-- ISP모바일 -->
<string>itms-apps</string> <!-- 앱스토어 -->
<string>hdcardappcardansimclick</string> <!-- 현대카드-앱카드 -->
<string>smhyundaiansimclick</string> <!-- 현대카드-공인인증서 -->
<string>shinhan-sr-ansimclick</string> <!-- 신한카드-앱카드 -->
<string>smshinhanansimclick</string> <!-- 신한카드-공인인증서 -->
<string>kb-acp</string> <!-- 국민카드-앱카드 -->
<string>mpocket.online.ansimclick</string> <!-- 삼성카드-앱카드 -->
<string>ansimclickscard</string> <!-- 삼성카드-온라인결제 -->
<string>ansimclickipcollect</string> <!-- 삼성카드-온라인결제 -->
<string>vguardstart</string> <!-- 삼성카드-백신 -->
<string>samsungpay</string> <!-- 삼성카드-삼성페이 -->
<string>scardcertiapp</string> <!-- 삼성카드-공인인증서 -->
<string>lottesmartpay</string> <!-- 롯데카드-모바일결제 -->
<string>lotteappcard</string> <!-- 롯데카드-앱카드 -->
<string>cloudpay</string> <!-- 하나카드-앱카드 -->
<string>nhappcardansimclick</string> <!-- 농협카드-앱카드 -->
<string>nonghyupcardansimclick</string> <!-- 농협카드-공인인증서 -->
<string>citispay</string> <!-- 씨티카드-앱카드 -->
<string>citicardappkr</string> <!-- 씨티카드-공인인증서 -->
<string>citimobileapp</string> <!-- 씨티카드-간편결제 -->
<string>kakaotalk</string> <!-- 카카오톡 -->
<string>payco</string> <!-- 페이코 -->
<string>lpayapp</string> <!-- (구)롯데 L페이 -->
<string>hanamopmoasign</string> <!-- 하나카드 공인인증앱 -->
<string>wooripay</string> <!-- (구) 우리페이 -->
<string>nhallonepayansimclick</string> <!-- NH 올원페이 -->
<string>hanawalletmembers</string> <!-- 하나카드(하나멤버스 월렛) -->
<string>chaipayment</string> <!-- 차이 -->
<string>kb-auth</string> <!-- 국민 -->
<string>hyundaicardappcardid</string> <!-- 현대카드 -->
<string>com.wooricard.wcard</string> <!-- 우리WON페이 -->
<string>lmslpay</string> <!-- 롯데 L페이 -->
<string>lguthepay-xpay</string> <!-- 페이나우 -->
<string>liivbank</string> <!-- Liiv 국민 -->
<string>supertoss</string> <!-- 토스 -->
<string>newsmartpib</string> <!-- 우리WON뱅킹 -->
</array>
2-3 App Transport Security 설정
<key>NSAppTransportSecurity</key>
<dict>
<!-- Allow Arbitrary Loads in Web Content 속성을 true로 설정 -->
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
3. AOS 설정
버그 방지를 위해 Manifest.xml 에 아래 내용 추가
<manifest ...>
...
<application
...
android:usesCleartextTraffic="true"
>
</application>
</manifest>
4. 구현 예시 코드
간단한 위젯코드이다.
import 'package:flutter/material.dart';
/* 아임포트 결제 모듈을 불러옵니다. */
import 'package:iamport_flutter/iamport_payment.dart';
/* 아임포트 결제 데이터 모델을 불러옵니다. */
import 'package:iamport_flutter/model/payment_data.dart';
class Payment extends StatelessWidget {
@override
Widget build(BuildContext context) {
return IamportPayment(
appBar: new AppBar(
title: new Text('아임포트 결제'),
),
/* 웹뷰 로딩 컴포넌트 */
initialChild: Container(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset('assets/images/iamport-logo.png'),
Container(
padding: EdgeInsets.fromLTRB(0.0, 30.0, 0.0, 0.0),
child: Text('잠시만 기다려주세요...', style: TextStyle(fontSize: 20.0)),
),
],
),
),
),
/* [필수입력] 가맹점 식별코드 */
userCode: 'iamport',
/* [필수입력] 결제 데이터 */
data: PaymentData({
pg: 'html5_inicis', // PG사
payMethod: 'card', // 결제수단
name: '아임포트 결제데이터 분석', // 주문명
merchantUid: 'mid_${DateTime.now().millisecondsSinceEpoch}', // 주문번호
amount: 39000, // 결제금액
buyerName: '홍길동', // 구매자 이름
buyerTel: '01012345678', // 구매자 연락처
buyerEmail: 'example@naver.com', // 구매자 이메일
buyerAddr: '서울시 강남구 신사동 661-16', // 구매자 주소
buyerPostcode: '06018', // 구매자 우편번호
appScheme: 'example', // 앱 URL scheme
displayCardQuota: [2, 3] // 결제창 UI 내 할부개월수 제한
}),
/* [필수입력] 콜백 함수 */
callback: (Map<String, String> result) {
Navigator.pushReplacementNamed(
context,
'/payment-result',
arguments: result,
);
},
);
}
}
신경써야하는 부분은 user_code와 pg 이다.
나는 가맹점 식별코드와 pg 는 kcp로 변경하니 잘 되었다.
pg부분은 설명이 잘없어서, 감으로 했는데 성공해서 다행이다.
반응형
'[Mobile] > [Flutter]' 카테고리의 다른 글
[Flutter] imagePicker 관련 설정 (0) | 2023.11.22 |
---|---|
[Flutter] Naver 로그인 (0) | 2023.11.21 |
[AOS] ADB memory 부족으로 인해 오류 시 대처 (0) | 2023.11.12 |
[Flutter] Firebase auth + Google login 구현 (0) | 2023.11.12 |
[Flutter] Auto Serializable (0) | 2023.11.12 |