Code Monkey home page Code Monkey logo

iamport-react-example's Introduction

iamport-react-example

alt text alt text alt text

리액트 환경에서 아임포트 결제 및 휴대폰 본인인증 연동을 위한 예제입니다.

다운받기

$ git clone https://github.com/iamport/iamport-react-example

실행하기

$ cd ./iamport-react-example
$ yarn
$ yarn start

아임포트 라이브러리 추가하기

최상단 HTML(public/index.html)에 아래의 <script>를 삽입합니다. 아임포트 라이브러리는 jQuery 기반으로 동작하기 때문에 jQuery 1.0 이상이 반드시 설치되어 있어야합니다.

  <!-- jQuery -->
  <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
  <!-- iamport.payment.js -->
  <script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.8.js"></script>

결제 연동하기

결제 연동 방법은 리액트에서 아임포트 결제 연동하기 문서를 참고하세요.

휴대폰 본인인증 연동하기

휴대폰 본인인증 연동 방법은 리액트에서 아임포트 휴대폰 본인인증 연동하기 문서를 참고하세요.

iamport-react-example's People

Contributors

anymate98 avatar dependabot[bot] avatar soleechoi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iamport-react-example's Issues

ios RN웹뷰에서 popup:false로 설정하였으나 팝업으로 본인인증 노출됨

image

react에서 휴대폰인증 서비스를 사용중이고 RN webview에서 호출 시
위 이미지와 같이 화면에 꽉차지 않게 보여집니다 ! 수정할 방법이 있을까요 ?

팝업 false로 지정했지만 팝업이 뜨는 것 같습니다.

image

`export interface Iamport {
init: (accountID?: string) => void;
certification: (param: RequestPayParams, rsp: RequestPayResponseCallback) => void
}

declare global {
interface Window {
IMP?: Iamport;
}
}

export const initIamport = (accountID?: string) => {
if (window.IMP) {
const {IMP} = window;
IMP.init(accountID);
}
};

export const openCertification = (redirectUrl: string) => {
if (window.IMP) {
const {IMP} = window;

const callback = (response: RequestPayResponse) => {
  console.log(response);

}

IMP.certification({
  pg: '',
  m_redirect_url: redirectUrl,
  popup: false
}, callback)

}
}`

iamport types module

안녕하세요, react에서 아임포트를 사용하고있는 사용자입니다.

저는 typescript + react를 사용중이라 types.ts를 직접 만들어 사용하고 있는데요,
@types/iamport-client 모듈을 만든다면 다른 많은 분들이 사용하기 훨씬 편할 것 같아 제안해봅니다..

짧지만 제가 사용하고 있는 type을 예시로 보여드리겠습니다.


export interface ExtendedIamportWindow extends Window {
  IMP: IMP
}

export interface IMP {
  init: ( imp_uid: string ) => void;
  request_pay: ( params: IamportPaymentRequest, callback: ( res: IamportPaymentResponse ) => void ) => void;
}

export type IamportPaymentResponse = {
  success: true,
  imp_uid: string,
  merchant_uid: string,
  pay_method: string,
  status: string,
  name: string,
  card_name: string,
  card_quota: number,
  buyer_name: string,
  buyer_email: string,
  paid_amount: number,
  paid_at: string
  receipt_url: string,
} | {
  success: false,
  error_code: string
  error_msg: string,
}

export type IamportPaymentRequest = {
  pg: string,
  pay_method: "card" | "vbank",
  merchant_uid: string,
  name: string,
  amount: number,
  buyer_email: string,
  buyer_name: string,
  notice_url?: string,
}

모바일 환경에서 뒤로 가기 버튼 클릭 시 화면 가리는 문제

모바일 + 이니시스 웹표준 결제창 기준이고요,
React 환경에서 웹표준 결제창 띄우고
사용자가 '취소하기' 버튼이 아니라 '뒤로가기' 버튼을 누르면,
아임포트에서 띄운 iframe 이 화면 전체를 가려버리는 현상 있습니다.
해결되어야 하지 않을까요?
크롬 개발자 도구로 휴대폰 화면 띄워놓고 해도 쉽게 재현할 수 있습니다.

react-example file -> fsevents is not a constructor

안녕하세요. react example 파일을 local환경에서 돌리니 아래와 같은 에러가 발생하는데 해결할 방법이 있을까요?

/Users/###/Desktop/##/2_workspace/0_example/iamport-react-example/node_modules/chokidar/lib/fsevents-handler.js:29
return (new fsevents(path)).on('fsevent', callback).start();
^

TypeError: fsevents is not a constructor
at createFSEventsInstance (/Users/###/Desktop/##/2_workspace/0_example/iamport-react-example/node_modules/chokidar/lib/fsevents-handler.js:29:11)
at setFSEventsListener (/Users/###/Desktop/##/2_workspace/0_example/iamport-react-example/node_modules/chokidar/lib/fsevents-handler.js:83:16)
at FSWatcher.FsEventsHandler._watchWithFsEvents (/Users/###/Desktop/##/2_workspace/0_example/iamport-react-example/node_modules/chokidar/lib/fsevents-handler.js:253:16)
at FSWatcher. (/Users/###/Desktop/##/2_workspace/0_example/iamport-react-example/node_modules/chokidar/lib/fsevents-handler.js:387:25)
at LOOP (fs.js:1902:14)
at processTicksAndRejections (internal/process/task_queues.js:77:11)

IMP.init() infinite call error

안녕하세요~

  • 맥: Big Sur 11.5.2
  • 크롬: 97.0.4692.99(공식 빌드)
  • 연결된 PG: 토스페이먼츠

이 환경에서 IMP 결제를 하기 위해 아래와 같이 IMP.init()을 호출했습니다.

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" />
<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.2.0.js" />

const IMP = window.IMP 
IMP.init( IAMPORT.MERCHANT_CODE ) // string marchant_code

local storage에서 https://service.iamport.kr이 제거되었다가 다시 로드되는 무한 반복 현상이 나타납니다.

iamport.payment-1.2.0.js 코드 내부에서 확인했을 때

if ("https://service.iamport.kr" !== d.origin) return !1;

다음에서 사용하는 d.data 값이 "IS_NEED_PIXEL_INJECT"가 들어와 JSON.parse(d.data) 구문에서 파싱 에러 발생 후

r.close();
r.reload();

가 계속 실행되며 반복되는 현상입니다.

그 결과 결제를 실행할 수 없는 상황으로 확인 부탁드릴 수 있을까요?

참고로 시크릿 창에서는 잘 되는 것 확인했으며 일반 크롬에서는 재부팅을 해도 100% 재현됩니다!

resolve

Tiktok pixel 크롬 확장 프로그램을 설치하였을 경우 Iamport init 시 발생하는 문제로 확인되었습니다. 유사 문제를 겪고 계실 분들을 위해 히스토리 남겨둡니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.