이번에 hybrid 웹 개발을 진행하면서.. paypal 연동이 필요하게 되었다.
paypal에서는 다양한 방식의 결제연동을 지원한다. 웹방식, Rest API 방식, Native Mobile SDK 방식(iPhone, Android) 등등..
커스터마이징을 위해서는 Native Mobile SDK를 쓰면 좋겠지만.. 손이 많이 가게되는 관계로.. web 방식을 택했다.
가장 연동하기 쉬운방법은 web 방식이다. 이 방식은 paypal 서버로 post, get 등으로 파라메터를 던지고 결과값을 받으면 끝!
쉽게 아래와 같은 방식으로 연동이 이루어지는 것이다.
결제 연동에 대해서 개발하고 테스트를 하기 위해서는 개발 환경을 만들어서 진행하는것이 좋다.
(상용서버에 연동해서 테스트할수도 있지만.. 실제 결제가 일어나기 때문에.. )
다행히도 paypal 에서는 상용서버, 테스트서버가 별도로 존재한다. 상용서버는 paypal.com 이고 테스트 서버는 sandbox.paypal.com 으로 앞에 sandbox 가 붙으므로 이점 유의해서 진행해야 한다.
먼저 개발자 계정을 만들어 보자. (개발자 계정을 생성하기 위해서는 먼저 paypal 계정이 있어야 한다.)
https://developer.paypal.com 에서 Application -> Sandbox accounts 메뉴로 이동한다.
로그인 한 상태에서 Sandbox test accounts 에는 계정이 없는 상태이고, 아래 그림의 오른쪽 상단 Create Account 버튼을 눌러서 테스트 할 계정을 생성해 준다.
계정을 생성하는 화면이다. Country 부분에는 한국이 나오지 않기 때문에.. 애써 찾지 말고.. 그냥 아무 국가나 선택해 준다.
Account Type 은 Personal 을 선택해 준다. (Personal은 구매자, Business 는 판매자 계정인데.. 구매자를 생성하면 판매자 계정은 자동으로 생성이 되므로 구매자만 일단 추가해 보자.)
이메일, 패스워드는 알아서 입력하고.. 이름은 옵션이므로 안 넣어도 된다.
Paypal balance 부분은 테스트에 사용할 잔액을 입력하는 곳이다. 대충 원하는 만큼(?)의 금액을 입력하자.
아래는 계정이 생성된 화면이다. 여기서 만든 user0001@test.com 계정이 생성되었고 그 아래에는 info-facilitator@도메인 이라는 판매자 계정이 생성되었다. Type 부분이 personal은 구매자용, business 부분은 자동생성된 판매자 계정이다.
구매자 계정의 Profile 항목을 클릭하면 아래와 같은 팝업화면을 볼수 있다. 테스트를 위한 가상의 카드정보, 은행정보, 페이팔잔액등이 생성되어 있다. 여기서는 $1,000 를 생성했고 이 금액 한도에서 테스트를 진행할 수 있다. (이 금액은 실제 금액이 아니고 가상의 금액이다. 브라우저 URL에서 항상 유의할 점이 sandbox가 들어가 있는가 하는것이다. )
아래는 만들어진 테스트 계정을 통해 페이팔에 로그인하기 위한 화면이다. 위의 계정리스트 상단에 있는 Enter Sandbox Site 링크를 타고 들어가면 아래 화면을 볼수 있다. 아래 화면의 URL을 주의깊게 살펴보자. www.sandbox.paypal.com 이다. sandbox가 없는 경우는 실제 서버이므로.. 주의해야 한다.
위에서 만든 user0001@test.com 계정으로 로그인을 한 화면이다. Paypal balance(잔액) 부분을 보면 계정 생성시에 입력한 1000 달러가 충전되어 있는것을 볼수 있다.
여기까지 작업하면 일단 테스트 환경 설정은 모두 끝이다. 엄밀히 따지면 환경설정이라기 보다는 테스트용 계정생성이라고 하는것이 더 적절한 표현인것 같다. 다음 포스트에서는 여기서 만든 계정으로 실제 결제 테스트를 진행해 보겠다.
페이팔(Paypal) 버튼방식 연동하기 (1) | 2014.07.21 |
---|---|
페이팔(Paypal) 웹방식 연동하기 - 3. 결제결과 전달받기 (21) | 2014.07.20 |
페이팔(Paypal) 웹방식 연동하기 - 2. 연동 테스트 (1) | 2014.07.19 |
jQuery 레이어 팝업 라이브러리 (0) | 2014.06.13 |