상세 컨텐츠

본문 제목

페이팔(Paypal) 웹방식 연동하기 - 2. 연동 테스트

프로그램개발/web

by fsteam 2014. 7. 19. 14:28

본문

페이팔 연동에 대해서 간단한 소스를 통해 테스트 해보자.

페이팔 서버로 정해진 변수들을 넘기고 리턴값을 받아야 하는데, 여기서 보낼 변수의 종류가 굉장히 많다. 여기서는 테스트이므로 일단 변수를 최소화해서 간단하게 테스트 해보자.


소스는 PHP를 이용해서 아래와 같이 간단하게 만들어 보았다.

<?php

# 테스트 URL

$pp_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";

$recv_mail = "info-facilitator@xxxxxx.com";

# 상용 URL

// $pp_url = "https://www.paypal.com/cgi-bin/webscr";

// $recv_mail = "info@xxxxxx.com";

?>


<!DOCTYPE html>

<html>

<meta charset="utf-8" />

<head>

    <title> paypal test </title>

</head>

<body>

<h2>페이팔 결제 테스트</h2>

<form action="<?=$pp_url?>" method="post">

<input type="hidden" name="cmd" value="_xclick">

<input type="hidden" name="business" value="<?=$recv_mail?>">

상품명 : <input type="text" name="item_name" value="Test Item 0001"><br />

상품코드 : <input type="text" name="item_number" value="ITEM0001"><br />

통화단위 : <input type="text" name="currency_code" value="USD"><br />

상품가격 : <input type="text" name="amount" value="5"><br />

인코딩 : <input type="text" name="charset" value="UTF-8"><br /><br />

<input type="image" name="submit" border="0" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">

</form>


</body>

</html>


위에서 살펴볼 파라메터들은 다음과 같다.

form action url : post로 전송할 paypal 서버 주소이다. 테스트 서버에는 sandbox가 들어간다.

cmd : 구매과정을 시작하기 위해서 반드시 들어가야 되는 항목이다. hidden 값으로 넘기자.

business : 판매대금을 받을 paypal 계정 이메일을 넣어야 한다. 테스트 계정 생성시에 자동생성된 판매자 이메일을 넣고, 상용으로 전환시에 위의 URL과 마찬가지로 반드시 paypal 판매자 계정 이메일로 수정해야 한다.

item_name : 상품명이 들어가도록 한다.

item_number : 상품고유번호를 등록한다. 판매형태에 따라 주문번호, 인보이스 등을 넣으면 되겠다.

currency_code : 3자리 화폐단위를 입력한다. 달러일 경우 USD, 원화는 KRW, 일본엔화는 JPY 등으로 입력하면 된다.

amount : 결제가 일어날 금액을 입력한다.

charset : 인코딩 문자셋

위에서 버튼은 paypal 에서 제공하는 버튼을 이용했다. 이 버튼이 싫으면.. 원하는 버튼으로 대체한다.


여기까지 구성한 php 파일을 서버에 올려서 실행하면 다음과 같은 모습이 된다.




Buy Now 버튼을 클릭하면.. 소스에서 설정한 paypal URL로 변수들이 전달되고 다음과 같은 화면을 보게 된다.


Your order summary 부분에 내가 전달한 값들이 셋팅되어 있는것을 볼수 있다. 결제는 paypal, credit card 두가지로 테스트 해볼수 있다. 아래는 신용카드로 결제를 진행할 수 있는 화면이다.




앞서 생성해 두었던 테스트 계정으로 로그인하면 아래와 같은 화면을 볼 수 있다. 동의하기 체크박스에 체크하고 다음 버튼을 누른다.



최종적으로 결제하는 사용자의 이름 주소 등을 보여주며 Pay Now 버튼을 누르면 결제가 이루어 진다.



아래는 결제가 완료된 화면이다. 여기서는 PDT(Payment Data Transfer)나 IPN(Instant Payment Notification) 설정을 하지 않았기 때문에 사용자가 아래 링크를 클릭하지 않으면 자동으로 어떠한 화면을 넘어가지 않는다. PDT(Payment Data Transfer) 나 IPN(Instant Payment Notification)은 결제가 완료되었을때 paypal 측에서 우리의 서버로 확인 메시지를 넘겨주는 프로세스이다. 이에 대해서는 다음 포스트에서 다루도록 하겠다.



결제가 완료되었으니 실제 paypal의 잔액이 변동된 것을 확인해 보자. 구매자 계정으로 sandbox 의 paypal 에 로그인해보면 다음과 같이 기존에 충전했던 1,000 달러와 이번에 결제한 5달러를 확인할수 있다. 결제된 내용은 -$5.00으로 표시가 되어 있다.


아래 화면은 판매자 계정으로 로그인 해서 확인한 결과이다.. 표에는 $5.00 이 입금된 것으로 표시되고.. 상단의 Paypal balance 부분에는 $4.55 로 표시되는 것을 볼수 있다. 여기서 잔액이 $4.55 로 표시되는 이유는.. 최종 잔액은 paypal 수수료를 제외한 금액이기 때문이다.


여기까지 진행하면.. 기본적인 paypal 결제 방식이 완료된 것이다. 하지만 실제 쇼핑몰에서는 결제 결과를 결제하는 시점에 확인할 필요가 있다. 따라서 paypal 서버로부터 쇼핑몰의 서버로 결과를 리턴받는것이 필요하다. 이러한 기능은 PDT(Payment Data Transfer) 또는 IPN(Instant Payment Notification)을 통해서 적용할 수 있다. 이에 대해서는 다음 포스트에서 다루도록 하겠다.




관련글 더보기