PayApp 서비스 연동 매뉴얼 입니다.

  • 판매자 관리 사이트의 메뉴 "설정"탭의 "연동 Key", "연동 Value" 값으로 연동이 가능합니다.
  • 본 연동 매뉴얼에 설명하는 API는 서버에서 호출하는 API로 사용자에게 보여지는 디자인이 되어있지 않습니다.

연동 API 구성방법

연동 환경

  • 자체개발된 서버사이드 스크립트 언어가 연동가능한 개발환경이라면 페이앱 API 연동이 가능합니다.
  • 임대형 쇼핑몰을 이용중이시라면 임대를 해준 업체에 페이앱 API 연동을 문의하셔야 합니다.(예 : 카페24, 고도몰, 메이크샵 등..)
  • 템플릿형 사이트나 쇼핑몰을 이용중이시라면 소스코드의 편집 및 수정이 가능한 템플릿에서만 페이앱 API 연동이 가능합니다.

연동 방법

  • 웹사이트 api.payapp.kr의 REST URL 페이지를 호출해서 응답 값을 받아 연동합니다.
  • REST API URL 페이지 호출은 서버에서 실행이 되어야 합니다. (Server Side 호출)

REST API URL 주소

  • http://api.payapp.kr/oapi/apiLoad.html

호출 파라메터

  • 호출 파라메터는 FORM POST 방식으로 REST API URL 주소에 전달합니다.
  • 호출 파라메터의 각 값은 UTF-8로 인코딩된 문자열 이어야 합니다.

응답 파라메터

  • 응답 파라메터는 KEY, VALUE 쌍으로 URL encoding된 query 값으로 생성됩니다.

연동 KEY

  • 판매자 회원가입 후 판매자 관리 사이트의 메뉴 “설정” 탭의 “연동 정보” 값이 있어야 연동이 가능합니다.
  • 연동 정보 값은 판매자 회원마다 값이 다르며 영문 대/소문자, 숫자, 기호로 구성되어 있습니다.

테스트 정보

  • 판매자 회원 아이디 userid payapptest

연동 예제

  • 현재 페이지의 연동 예제는 기본 PHP 제공
  • API를 다운로드 하시면 PHP, JSP 예제파일이 있으며 연동문서를 같이 다운받을 수 있습니다.
    API 다운로드

오류코드

코드번호 설명 해결
70001 보안접속(https)으로 호출하지 않을 경우 https로 호출하도록 수정
70010 userid, linkkey값이 정확하지 않을 경우 userid, linkkey값을 확인 후 수정
70020 파라메터값이 정확하지 않을 경우 전달한 파라메터값중 공백이나 잘못된 값이 입력된 경우 수정
70040 cmd값이 정확하지 않은 경우 cmd값을 확인 후 연동하고자 하는 api cmd값으로 수정
70060 권한이 없는 경우 userid의 사용권한을 확인
70080 고객사 응답 실패일 경우 고객사 feedbackurl로 접속하여 SUCCESS 확인

결제요청 연동API

결제 요청– REST 방식

  • REST 방식은 모바일 기기, 브라우저 등 다양한 단말기와 프로그램을 지원하는 API입니다.
  • 호출 파라메터 중 userid,goodname,price,recvphone 값은 필수 입니다.
  • feedbackurl 의 값은 “http://” 가 포함된 url 주소 값입니다.
  • 구매자가 결제완료시feedbackurl로 아래 “feedbackurl 전달”파라메터가 POST방식으로 전달 됩니다.
  • feedbackurl에서 다른 url로 리다이렉션(http code 302, 또는 javascript) 처리하시면 자료전달이 되지 않습니다.
    (feedbackurl 이외 다른페이지로 이동되지 않습니다.)
  • var1, var2 의 값은 임의로 사용이 가능하며 결제 완료시feedbackurl로 그대로 전달이 됩니다.
  • 결제요청 구분 (reqmode)가 usd (달러결제), unionpay (중국은련카드결제) 인 경우 openpaytype은 무시됩니다.
    (신용카드 결제만 가능)
  • 결제요청 구분 (reqmode)가 usd (달러결제) 인 경우 price (결제요청금액)은 1000일 경우 $10.00 입니다.
  • REST URL :
    http://api.payapp.kr/oapi/apiLoad.html
  • 안드로이드와 아이폰 앱의 연동일 경우 하단 파라메터 목록의 appurl을 반드시 포함하여 전송해 주셔야 합니다.
    예제 파일을 다운로드 받으셔서 카드사 스키마를 참고 후 연동바랍니다.
REST API 연동

호출 파라메터 목록

파라메터 필수 Type Description
cmd 필수 String 결제요청 payrequest
userid 필수 String 판매자 회원 아이디
goodname 필수 String 상품명
price 필수 int 결제요청 금액
recvphone 필수 int 수신 휴대폰번호
memo String 메모
reqaddr int 주소요청 (1:요청, 0:요청안함)
feedbackurl String 결제완료 후 결과값을 리턴받을 고객사 URL
var1 String 임의 사용 변수 1
var2 String 임의 사용 변수 2
smsuse String 결제요청 SMS 발송여부 (n: SMS발송안함)
reqmode String 결제요청 구분 (krw:원화결제,usd:달러결제,unionpay:중국은련카드결제)
vccode String 국제전화 국가번호 (currency가 usd일 경우 필수)
returnurl String 결제완료 후 이동할 링크 URL (매출전표 페이지에서 "확인"버튼 클릭시 이동)
openpaytype String 결제수단 선택 (휴대전화:phone, 신용카드:card, 계좌이체:rbank, 가상계좌:vbank)
콤마(,) 구분으로 결제수단 선택이 가능합니다.
ex) phone,card 인 경우 휴대전화,신용카드 결제만 가능합니다.
checkretry String feedbackurl 재시도 (y:재시도,n:재시도 안함)
feedbackurl의 응답값이 SUCCESS 가 아니면 feedbackurl 호출을 재시도 합니다. (총 10회 재시도)
appurl String ISP, 안심클릭의 경우(해당 카드사 앱 및 ISP모듈을 이용한 계좌이체)
Android/IOS 공통 : appurl=앱스키마://card_pay
계좌이체의 경우(BankPavPG 앱을 이용한 계좌이체)
Android : appurl=앱스키마://acnt_pay
IOS : appurl=앱스키마://
설명 : 앱스키마는 카드사스키마가 아닌 앱제작사의 스키마를 사용합니다.
호출 예제)
curl -d "cmd=payrequest" \
-d "userid=[고객사 아이디]" \
-d "goodname=api%20test" \
-d "price=1000" \
-d "recvphone=[구매자 휴대전화 번호]" \
-d "smsuse=n" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage "" String 실패시 오류 문자열
mul_no "" int 성공시 결제요청 번호
payurl "" String 결제창URL
응답 예제)
state=1&errorMessage=&mul_no=2000&payurl=http%3A%2F%2Fpayapp.kr%2F000000000000
REST API 연동

Feedbackurl 전달

  • ※ 판매자 관리 사이트의 메뉴 “설정” 탭의 “연동 VALUE” 값과 feedbackurl로 전달되는 linkval 값이 같은 경우에만 정상 호출입니다.
파라메터 Type Description
userid String 판매자 회원 아이디
linkkey String 연동 KEY
linkval String 연동 VALUE
goodname String 상품명
price int 결제요청 금액
recvphone int 수신 휴대폰번호
memo String 메모
reqaddr int 주소요청 (1:요청, 0:요청안함)
reqdate String 결제요청 일시
pay_memo String 결제시 입력한 메모
pay_addr String 결제시 입력한 주소
pay_date String 결제승인 일시
pay_type int 결제수단
(1:신용카드, 2:휴대전화, 3:해외결제, 4:대면결제, 6:계좌이체, 7:가상계좌, 9:문화상품권)
pay_state int 결제요청 상태
(1:요청, 4:결제완료, 8,16,32:요청취소, 9,64:승인취소, 10:결제대기)
var1 String 임의 사용 변수 1
var2 String 임의 사용 변수 2
mul_no int 결제요청번호(결제취소시 사용함)
payurl String 결제페이지 주소
csturl String 신용카드 결제시 매출전표 URL
cardname String 신용카드명
currency String 통화 (krw:원화,usd:달러)
vccode String 국제전화 국가번호
score String DM Score (currency가 usd이고 결제성공일 때 DM 점수)
vbank String 은행명 (가상계좌 결제일 경우)
vbankno String 입금계좌번호 (가상계좌 결제일 경우)
feedbacktype int 0 : 결제요청 연동, 1 : 공통 통보 URL
REST API 연동

연동 예제

  • http://고객사 도메인/payapp_popup.php
  • 구매자가 결제를 요청하는 페이지입니다. 고객사에서 개발하시는 페이지입니다.
  • 예제파일 payapp_request.php로 post전송합니다.
  • "{변수}"는 개발환경에 맞추어서 정의바랍니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

<!DOCTYPE html>
<html>
<head>
    <title>페이앱 결제요청 팝업</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="shortcut icon" href="http://lite.payapp.kr/public/ico/favicon.ico">
    <link rel="stylesheet" href="http://lite.payapp.kr/public/css/common.css" type="text/css">
    <link rel="stylesheet" href="http://lite.payapp.kr/public/css/pay.css" type="text/css">
    <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="http://lite.payapp.kr/public/js/common.js"></script>
    <script src="http://lite.payapp.kr/public/js/security.js"></script>
    <script>
        var $window = $(window);
        $(function () {
            // layout
            window.$content = $('#content');
        });
    </script>
</head>
<body>
<div id="wrap">
    <div id="container">
        <div id="header">
            <h1><img src="http://lite.payapp.kr/public/img/pay/header-logo.gif" alt="페이앱"></h1>
        </div>
        <div id="content">
            <!-- style -->
            <style type="text/css">
                #clause {
                    margin-top: 5px;
                    text-align: right;
                }
                #clause .label { margin-left: 5px; }
                #txt-clause {
                    background-color: #eee;
                    border: 1px solid #ccc;
                    height: 200px;
                    overflow-y: scroll;
                    -webkit-overflow-scrolling: touch;
                    padding: 10px;
                }
                #content-usage {
                    margin-bottom: 10px;
                    text-align: center;
                }
                .no-overflow-scroll #txt-clause { height: auto; }

                #content-payment .price {
                    color: #b94a48;
                    width: 100px;
                }
                .content-toggle { display: none; }
                #content-inner.payment #content-payment,
                #content-inner.error #content-error,
                #content-inner.clause #content-clause,
                #content-inner.success #content-success { display: block; }
            </style>
            <!-- /style -->

            <!-- script -->
            <script>
                $(function () {
                    // layout
                    var windowSize = {
                        width: 440,
                        plusWidth: 0    };
                    !isMobile && window.resizeTo(windowSize.width, 520 + windowSize.plusWidth);
                    var Layout = {
                        $btn: $('.btn'),
                        $contentInner: $('#content-inner'),
                        $errorCode: $('#error-code'),
                        $errorMessage: $('#error-message'),
                        init: function () {
                            this.$contentInner.removeClass();
                        },
                        payment: function () {
                            this.init();
                            this.$contentInner.addClass('payment');
                        },
                        success: function () {
                            !isMobile && window.resizeTo(windowSize.width, 680 + windowSize.plusWidth);
                            this.init();
                            this.$contentInner.addClass('success');
                            self.location.replace('#success');
                        }
                    };

                    // hash
                    var hash = window.location.hash;
                    hash == '#success' && Layout.success();

                    // action
                    $('#clause a').click(function () {
                        Layout.clause();
                    });
                    $('.close').click(function () {
                        $window.trigger('self.close');
                    });
                    $window.bind('self.close', function () {
                        //window.open('about:blank', '_self').close();
                        window.close();
                    });

                    // request Layout.success()
                    $('#request').click(function () {
                        $.ajax({
                            type: 'post',
                            url: './payapp_request.php', //페이앱 API 호출할 URL 경로 ex)payapp_request.php
                            data: $('#content-payment').serializeArray2(),
                            dataType: 'json',
                            beforeSend: function () {
                                Layout.$btn.disable();
                            }
                        }).done(function (data) {
                            if (data.state) {
                                Layout.success();
                                Layout.$btn.enable();
                            } else {
                                alert(data.msg);
                            }
                        });
                    });
                    // complete
                    $('#complete').click(function () {
                        opener.location.href='/shopuser/goods/orderOk.html?ordsess={$ordno}'; //팝업에서 결제 완료 후 이동할 페이지 ex)영수증 or 결제완료 페이지
                        self.close();
                    });
                });
            </script>

            <!-- /script -->
            <div id="content-inner" class="payment">
                <div id="content-payment" class="content-toggle krw">
                    <div>
                        <h2>기본정보</h2>
                        <table class="table">
                            <tr>
                                <th>상점명</th>
                                <td>{좋은상점}</td>
                            </tr>
                            <tr>
                                <th>상품명</th>
                                <td>{좋은상품}
                                    <input type="hidden" name="goodname" value="{좋은상품}">
                                </td>
                            </tr>
                            <tr>
                                <th>결제금액</th>
                                <td>\<span class="price">{1000}</span>
                                    <input type="hidden" name="price" value="{1000}"> 원
                                </td>
                            </tr>
                        </table>
                    </div>

                    <div>
                        <h2>결제정보</h2>
                        <table class="table">
                            <tr>
                                <th>휴대폰번호</th>
                                <td><input type="tel" name="recvphone" value="{01012345678}" pattern="\d*" autocomplete="off"></td>
                            </tr>
                        </table>
                    </div>

                    <div class="btn-container">
                        <a class="btn btn-primary" id="request">결제하기</a>
                        <a class="btn btn-default close">닫기</a>
                    </div>

                    <!-- hidden -->
                    <input type="hidden" name="userid" value="{페이앱아이디}">
                    <input type="hidden" name="var1" value="{임의변수1}"> //임의 변수 1
                    <input type="hidden" name="var2" value="{임의변수2}"> //임의 변수 2
                    <!-- /hidden -->
                </div>

                <div id="content-success" class="content-toggle">
                    <div>
                        <div class="alert alert-info">
                            <ul>
                                <li>입력된 휴대폰으로 결제요청 메시지가 전송되었습니다.</li>
                                <li>메시지를 수신하신 후 결제를 진행하여 주시길 바랍니다.</li>
                            </ul>
                        </div>
                        <div id="content-usage">
                            <img src="http://lite.payapp.kr/public/img/pay/success-usage.gif" alt="페이앱 결제방법">
                        </div>
                        <div class="alert alert-message">
                            <ul>
                                <li>휴대폰에서 결제가 완료되면 자동으로 상점에 통보됩니다.</li>
                                <li>확인 버튼을 클릭하여 해당 창을 종료해 주시길 바랍니다.</li>
                            </ul>
                        </div>
                    </div>A

                    <div class="btn-container">
                        <a id="complete" class="btn btn-primary">확인</a>
                    </div>
                </div>
            </div>
        </div>
        <div id="footer"></div>
    </div>
</div>
</body>
</html>

                    
  • http://고객사 도메인/payapp_request.php
  • 고객사 서버에서 페이앱서버로 결제를 요청하는 페이지입니다.
  • 결제요청 후 리턴되는 $oResData값으로 결제요청성공 또는 결제요청실패를 확인하셔야 합니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include('payapp_lib.php');
    /*
    TODO : 이곳에서 결제요청전 정보를 저장합니다.

    ex) INSERT INTO payrequest (orderno,memberid,goodcode,goodname,goodprice) VALUES ('1234567890','kim','abcdefg','테스트상품',1000)
    */

    // 결제요청 정보(파라메터 목록을 참고하세요)
    // payapp_popup.php에서 전달한 변수들을 POST로 받아서 정의합니다.
    // test시 임의의 값으로 정의하셔도 무방합니다.
    $cmd = "payrequest";              // 결제요청, 필수
    $userid = "payapptest";           // 판매자 아이디, 필수
    $goodname = $_POST['goodname'];
    $price = $_POST['price'];
    $recvphone = $_POST['recvphone'];
    $memo = "결제요청 테스트 메모";
    $reqaddr = 0;
    $feedbackurl = "http://고객사 도메인/payapp_feedbackurl.php";
    $var1 = $_POST['var1'];
    $var2 = $_POST['var2'];
    $smsuse = "n";
    $reqmode = "krw";
    $vccode = "";
    $returnurl = "http://고객사 도메인/결제완료페이지.php";
    $openpaytype = "card";
    $checkretry = "y";

    $postdata = array(
        'cmd'	    	=> $cmd,
        'userid'		=> $userid,
        'goodname'		=> $goodname,
        'price'			=> $price,
        'recvphone'		=> $recvphone,
        'memo'			=> $memo,
        'reqaddr'		=> $reqaddr,
        'feedbackurl'	=> $feedbackurl,
        'var1'			=> $var1,
        'var2'			=> $var2,
        'smsuse'		=> $smsuse,
        'reqmode'		=> $reqmode,
        'vccode'		=> $vccode,
        'returnurl'		=> $returnurl,
        'openpaytype'   => $openpaytype,
        'checkretry'    => $checkretry
    );

    $oResData = payapp_oapi_post($postdata);
    if( $oResData['state']=='1' ){
        // 결제요청성공
        // 결제요청번호($oResData['mul_no'])를 고객사 DB에 저장해 놓으셔야 합니다.
        // 요청이 성공한 것으로 결제완료 상태가 아닙니다. 여기에서 상품배송/서비스 제공을 하면 안됩니다.
        // 결제완료는 feedbackurl에서만 확인이 가능합니다.
        /*
        $oResData['mul_no'];	// 결제요청번호
        $oResData['payurl'];	// 결제창 URL
        */

        /*
        # TODO : 이곳에서 결제요청 성공 정보를 저장합니다.
        ex) UPDATE payrequest SET mul_no='{$oResData['mul_no']}' WHERE orderno='1234567890'
        */

        /*
        # TODO : 아래처럼 'payurl'로 페이지를 이동 하시면 결제할 수 있는 페이지가 열립니다.
        echo <<<EOT
        <script type='text/javascript'>
            location.href = '{$oResData['payurl']}';
        </script>
        EOT;
        */

    }else{
        // 결제요청실패
        // 오류메시지($oResData['errorMessage'])를 확인하고, 오류를 수정하셔야 합니다.
        /*
        $oResData['errorMessage'];	// 오류메시지
        $oResData['errno'];			// 오류코드
        */

        /*
        TODO : 이곳에서 결제요청 실패 정보를 저장하거나, 이전 페이지로 이동해서 다시 시도할 수 있도록 해야 합니다.

        ex) UPDATE payrequest SET errorMessage='{$oResData['errorMessage']}' WHERE orderno='1234567890'
        */
        /*
        echo <<<EOT
        <script type='text/javascript'>
            alert('{$oResData['errorMessage']}');
            window.close();
        </script>
        EOT;
        */
    }
    ?>
                    
  • http://고객사 도메인/payapp_lib.php
  • 결제요청시 사용되는 라이브러리 파일입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    // payapp 연동 도메인
    define('PAYAPP_API_DOMAIN', 'api.payapp.kr');
    // payapp 연동 URL
    define('PAYAPP_API_URL', '/oapi/apiLoad.html');

    // payapp 연동을 위해서는
    // api.payapp.kr로 80port 접속이 가능해야 합니다.
    // 서버에서 api.payapp.kr:80 접속이 가능하도록 방화벽 룰을 조정하시기 바랍니다.
    function payapp_oapi_post($postdata = array())
    {
    // 예제에서는 php extension curl, 또는 fsockopen으로 api.payapp.kr:80에 접속을 합니다.
    // curl, fsockopen 둘중 하나는 이용이 가능해야 합니다.
    $enable_curl   = function_exists('curl_exec');
    $enable_socket = function_exists('fsockopen');

    $CRLF          = "\r\n";
    $request_data  = '';
    $response_data = '';
    $postdata_str  = '';
    $parse_data    = array();

    if (!$postdata['cmd']) {
    return array('state' => '0', 'errorMessage' => 'cmd 값을 확인하세요.', 'errno' => '99999');
    }
    if (!$postdata['userid']) {
    return array('state' => '0', 'errorMessage' => 'userid 값을 확인하세요.', 'errno' => '70010');
    }
    if ($postdata['cmd']=='payrequest') {
    if (!$postdata['goodname']) {
    return array('state' => '0', 'errorMessage' => 'goodname 값을 확인하세요.', 'errno' => '70020');
    }
    if (!$postdata['price']) {
    return array('state' => '0', 'errorMessage' => 'price 값을 확인하세요.', 'errno' => '70020');
    }
    if (!$postdata['recvphone']) {
    return array('state' => '0', 'errorMessage' => 'recvphone 값을 확인하세요.', 'errno' => '70020');
    }
    }
    foreach ($postdata as $k => $v) {
    $postdata_str .= $postdata_str != '' ? '&' : '';
    $postdata_str .= urlencode($k) . '=' . urlencode($v);
    }
    if ($enable_curl === true) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://' . PAYAPP_API_DOMAIN . PAYAPP_API_URL);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata_str);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response_data = curl_exec($ch);
    $errno         = curl_errno($ch);
    $errstr        = curl_error($ch);

    if ($errno) {
    return array('state' => '0', 'errorMessage' => '(' . $errno . ') ' . $errstr, 'errno' => '99999');
    }
    parse_str($response_data, $parse_data);
    } elseif ($enable_socket === true) {
    # curl 확장 모듈을 이용한 연동을 추천합니다.
    # curl 확장 모듈을 서버에 설치할 수 없는 경우에만 아래 소켓방식을 이용하시기 바랍니다.
    # 페이앱연동 결과가 "Transfer-Encoding: chunked"으로 나오면 결과값을 chunked에 맞게 핸들링 하시거나
    # 아래와 같이 HTTP/1.0으로 이용하시기 바랍니다.
    #$request_data .= 'POST ' . PAYAPP_API_URL . ' HTTP/1.0' . $CRLF;
    $request_data .= 'POST ' . PAYAPP_API_URL . ' HTTP/1.1' . $CRLF;
    $request_data .= 'Host: ' . PAYAPP_API_DOMAIN . $CRLF;
    $request_data .= 'Accept: text/html,application/xhtml+xml,*/*' . $CRLF;
    $request_data .= 'Accept-Language: ko-KR' . $CRLF;

    if ($postdata_str) {
    $request_data .= 'Content-Type: application/x-www-form-urlencoded' . $CRLF;
    $request_data .= 'Content-Length: ' . strlen($postdata_str) . $CRLF . $CRLF;
    $request_data .= $postdata_str;
    } else {
    $request_data .= $CRLF;
    }

    if (($fp = fsockopen(PAYAPP_API_DOMAIN, 80, $errno, $errstr, 10)) == false) {
    return array('state' => '0', 'errorMessage' => '(' . $errno . ') ' . $errstr, 'errno' => '99999');
    }
    stream_set_timeout($fp, 30);
    fwrite($fp, $request_data);
    while ($line = fread($fp, 2000)) {
    $response_data .= $line;
    }
    $info = stream_get_meta_data($fp);
    fclose($fp);

    if ($info['time_out']) {
    return array('state' => '0', 'errorMessage' => 'connection time out', 'errno' => '99999');
    }

    $response_data_row = explode($CRLF . $CRLF, $response_data);
    parse_str($response_data_row[1], $parse_data);
    } else {
    return array('state' => '0', 'errorMessage' => 'function not exists', 'errno' => '99999');
    }

    return $parse_data;
    }
    ?>
                    
  • http://고객사 도메인/payapp_feedbackurl.php
  • 결제완료시 페이앱서버에서 고객사 서버로 결과값을 리턴하는 페이지입니다.
  • 결제성공 또는 결제취소시 페이앱서버에서 결과값을 POST로 전송하오니 확인 후 처리하시면 되겠습니다.
  • Feedbackurl 전달을 참고하시기 바랍니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    /*
    $_POST['userid'];	판매자 회원 아이디
    $_POST['linkkey'];	연동 KEY
    $_POST['linkval'];	연동 VALUE
    $_POST['goodname'];	상품명
    $_POST['price'];	결제요청 금액
    $_POST['recvphone'];수신 휴대폰번호
    $_POST['memo'];		메모
    $_POST['reqaddr'];	주소요청 (1:요청, 0:요청안함)
    $_POST['reqdate'];	결제요청 일시
    $_POST['pay_memo'];	결제시 입력한 메모
    $_POST['pay_addr'];	결제시 입력한 주소
    $_POST['pay_date'];	결제승인 일시
    $_POST['pay_type'];	결제수단 (1:신용카드, 2:휴대전화, 3:해외결제, 4:대면결제, 6:계좌이체, 7:가상계좌, 9:문화상품권)
    $_POST['pay_state'];결제요청 상태 (4:결제완료, 8,16,31:요청취소, 9,64:승인취소, 10:결제대기)
    $_POST['var1'];		임의 사용 변수 1
    $_POST['var2'];		임의 사용 변수 2
    $_POST['mul_no'];	결제요청번호
    $_POST['payurl'];	결제페이지 주소
    $_POST['csturl'];	매출전표URL
    $_POST['card_name'];	신용카드명
    $_POST['currency'];	통화 (krw:원화,usd:달러)
    $_POST['vccode'];	국제전화 국가번호
    $_POST['score'];	DM Score (currency가 usd이고 결제성공일 때 DM 점수
    $_POST['vbank'];	은행명 (가상계좌 결제일 경우)
    $_POST['vbankno'];	입금계좌번호 (가상계좌 결제일 경우)
    $_POST['feedbacktype'];	feedback 구분 (0:REST API, 1:COMMON FEEDBACK)
    */

    // 아래 정보를 payapp 판매자의 정보로 입력하세요.
    // 판매자 사이트에 있는 연동KEY, 연동VALUE는 일반 사용자에게 노출이 되지 않도록 주의 하시기 바랍니다.
    $payapp_userid	= 'payapp 판매자 아이디';	// payapp 판매자 아이디
    $payapp_linkkey	= '연동KEY';				// payapp 연동key, 판매자 사이트 로그인 후 설정 메뉴에서 확인 가능
    $payapp_linkval	= '연동VALUE';				// payapp 연동value, 판매자 사이트 로그인 후 설정 메뉴에서 확인 가능
    $order_price = '1000';                      // 결제요청한 금액

    $check_userid	= $_POST['userid'] == $payapp_userid;
    $check_key	= $_POST['linkkey'] == $payapp_linkkey;
    $check_val	= $_POST['linkval'] == $payapp_linkval;
    $check_price	= $_POST['price'] == $order_price;

    /*
    userid, linkkey, linkval 값을 비교 확인 하고 동일한 경우에만 결제여부를 처리 하셔야 합니다.
    */
    if( $check_userid && $check_key && $check_val && $check_price )
    {
    switch( $_POST['pay_state'] )
    {
    case '1':
    // 결제요청
    break;
    case '4':
    // 결제완료
    // 결제요청한 결제건이 결제가 완료된 상태입니다.
    // 이곳에서 결제완료에 대한 처리 (상품배송/서비스 제공 등)를 하시면 됩니다.

    /*
    TODO : 이곳에서 결제완료 처리를 합니다.

    ex) UPDATE payrequest SET pay_state='결제완료', pay_date='{$_POST['pay_date']}' WHERE orderno='$_POST['var1']' AND mul_no={$_POST['mul_no']};
    */
    break;
    case '8':
    case '16':
    case '32':
    // 요청취소

    /*
    TODO : 이곳에서 결제요청 취소 처리를 합니다. (결제하지 않은 상태에서 취소)
    */
    break;
    case '9':
    case '64':
    // 승인취소

    /*
    TODO : 이곳에서 결제승인 취소 처리를 합니다. (결제완료 상태에서 취소)

    ex) UPDATE payrequest SET pay_state='결제취소', pay_date='{$_POST['pay_date']}' WHERE orderno='$_POST['var1']' AND mul_no={$_POST['mul_no']};
    */
    break;
    case '10':
    // 결제대기

    break;
    default:
    break;
    }
    }

    // 처리응답
    // 결제요청시 checkretry이 'y'인 경우 응답이 'SUCCESS'가 아니면 재호출 합니다. (총 10회)
    echo 'SUCCESS';
    // 처리실패
    //echo 'FAIL';

    exit;
    ?>
                    

실행순서 참고

payapp_popup.php -> payapp_request.php ( payapp_lib.php ) -> payapp_feedbackurl.php

결제 요청 – 팝업창 방식

  • 팝업창 방식은 결제요청시 문자메세지를 받아서 모바일 기기에서 바로 결제를 진행하는 API입니다.
  • "PAYAPP LITE" 는 PAYAPP REST API 를 HTML 및 자바스크립트를 이용해 연동할 수 있도록 제작된 WRAPPER API 입니다.
「참고화면」

시작하기

연동을 원하는 페이지 내에 스크립트를 삽입합니다.
<script src="http://lite.payapp.kr/public/api/payapp-lite.js"></script>
팝업창 API 연동

파라메터 설정

결제 파라메터는 두 가지 방식으로 설정이 가능합니다.
자바스크립트는 반드시 <script></script> 태그 내에 작성되어야 합니다.

1. HTML 폼 사용

HTML 로 폼을 작성한 후 자바스크립트로 해당 폼을 등록할 수 있습니다.

HTML

<form name="{폼이름}">
    <input type="hidden" name="{파라메터1}" value="{설정값1}">
    <input type="hidden" name="{파라메터2}" value="{설정값2}">
</form>

자바스크립트

PayApp.setForm('{폼이름}');
팝업창 API 연동

결제창 호출

설정된 파라메터를 사용하여 결제창을 호출합니다.
PayApp.call();
팝업창 API 연동

파라메터 목록

기본 정보

파라메터필수TypeDescription
userid필수String판매자 회원 아이디

판매자 회원 아이디 userid 필수

페이앱에 로그인하는 판매자 아이디를 입력합니다.

결제 정보

파라메터필수TypeDescription
shopname필수String상점명
goodname필수String상품명
price필수int결제요청 금액
recvphoneint수신 휴대폰번호
memoString메모
reqaddrint주소요청
currencyString통화단위
vccodeString국가번호

상점명 shopname 필수

결제창에 표시할 상점명을 입력합니다.

상품명 goodname 필수 사용자입력

결제창에 표시할 상품명을 입력합니다.
빈값으로 입력될 경우 사용자가 직접 입력할 수 있는 입력박스가 결제창에 표시됩니다.

결제요청 금액 price 필수 사용자입력

결제창에 표시할 결제금액을 입력합니다.
빈값으로 입력될 경우 사용자가 직접 입력할 수 있는 입력박스가 결제창에 표시됩니다.

수신 휴대폰번호 recvphone 미리입력 사용자입력

결제창에 표시할 휴대폰번호를 입력합니다.
전송된 값으로 미리 입력이 되어 있으며 사용자가 직접 입력하거나 수정할 수 있습니다.

메모 memo

사용자 휴대폰으로 전송된 결제페이지에 입력된 메모가 표시됩니다.

주소요청 reqaddr

0 [기본값] 요청안함 1 요청함
사용자 휴대폰으로 전송된 결제페이지에서 주소를 입력받을 수 있습니다.

통화단위 currency

krw [기본값] KRW usd USD
결제를 받을 통화단위를 설정할 수 있습니다.

국가번호 vccode 미리입력 사용자입력

SMS 전송에 필요한 국제전화 국가번호를 입력합니다.
currencyusd로 설정하는 경우 결제창에 입력란이 표시됩니다.
전송된 값으로 미리 입력이 되어 있으며 사용자가 직접 입력하거나 수정할 수 있습니다.

연동 정보

파라메터필수TypeDescription
redirecturlString결제요청 성공 URL
redirectString결제요청 성공 URL 방향
feedbackurlString결제요청 피드백 URL
returnurlString결제완료 이동 URL
var1String임의 사용 변수 1
var2String임의 사용 변수 2
smsuseString결제요청 SMS 발송여부
charsetString캐릭터셋
openpaytypeString결제수단 선택
checkretryStringfeedbackurl 재시도

결제요청 성공 URL redirecturl

결제요청 성공시 결제창이 이동할 URL 을 입력합니다.
설정된 값이 없을 경우 결체요청 완료 후 결제창이 닫히며 종료됩니다.

결제요청 성공 URL 방향 redirect

opener [기본값] 부모창 self 현재창
결제요청 성공시 결제요청 성공 URL redirecturl로 이동할 방향을 지정합니다.

결제요청 피드백 URL feedbackurl

결제 데이터가 생성되거나 상태가 변경될 경우 해당 URL 로 결과값을 전송합니다.
전송시점: 최초 결제요청, 사용자가 결제를 완료했을 경우, 요청취소 또는 승인취소
전송된 결과값을 사용해 시스템 상에서 결제 관련 DB 처리 등을 수행할 수 있습니다.
결과값에 대한 자세한 내용은 PAYAPP REST API 매뉴얼을 참고하시길 바랍니다.

결제완료 이동 URL returnurl

사용자 휴대폰으로 전송된 결제페이지에서 사용자가 결제를 완료할 경우
특정 URL 로 페이지가 이동하도록 설정할 수 있습니다.
해당 API를 통해 호출된 현재 결제창에는 영향을 주지 않습니다.

임의 사용 변수 var1 var2

필요한 임의의 값을 입력하여 사용할 수 있습니다.

결제수단 선택 openpaytype

결제수단 선택 (휴대전화:phone, 신용카드:card, 계좌이체:rbank, 가상계좌:vbank)
콤마(,) 구분으로 결제수단 선택이 가능합니다.
ex) phone,card 인 경우 휴대전화,신용카드 결제만 가능합니다.

feedbackurl 재시도 checkretry

feedbackurl 재시도 (y:재시도,n:재시도 안함)
feedbackurl의 응답값이 SUCCESS 가 아니면 feedbackurl 호출을 재시도 합니다. (총 10회 재시도)

결제요청 SMS 발송여부 smsuse

y [기본값] 발송함 n 발송안함
예외적으로 결제요청 SMS 발송이 필요없는 경우 사용합니다.

캐릭터셋 charset 주의

auto [기본값] UTF-8/EUC-KR 자동감지 euc-kr EUC-KR 고정
페이지나 시스템에서 UTF-8 이외의 캐릭터셋을 사용할 경우 사용합니다.
결제창에 한글이 정상적으로 표시되지 않는 경우 euc-kr로 설정해 보시길 바랍니다.

파라메터 처리

입력받은 파라메터 값은 모두 자동으로 TRIM(앞뒤 공백 제거) 처리됩니다.
결제금액이나 휴대폰 등의 숫자 파라메터의 경우 숫자 외의 문자는 제거됩니다.
팝업창 API 연동

자바스크립트 메써드

.setForm()

HTML 로 폼을 작성한 후 등록합니다.
등록된 폼을 이용해 결제창에 파라메터를 전달하게 됩니다.
.setParam() 등을 통한 별도의 파라메터 설정은 적용되지 않습니다.

.setForm(string)

폼의 이름이나 아이디를 입력하여 폼을 등록합니다.
PayApp.setForm('{폼이름}');

.setForm(object HTMLFormElement)

폼의 객체를 직접 넘겨 폼을 등록합니다.
var form;
form = document.forms['{폼이름}'];
form = document.getElementById('{폼아이디}');
PayApp.setForm(form);

.setDefault()

파라메터 기본값을 설정합니다.
변경되지 않는 고정값 설정시 사용하시면 됩니다.
폼을 등록하는 경우 동작하지 않습니다.

.setDefault(string, string)

파라메터 기본값을 개별적으로 설정합니다.
PayApp.setDefault('{파라메터1}', '{설정값1}');
PayApp.setDefault('{파라메터2}', '{설정값2}');

.setDefault(object Object)

파라메터 기본값을 오브젝트로 일괄 설정합니다.
PayApp.setDefault({
    '{파라메터1}': '{설정값1}',
    '{파라메터2}': '{설정값2}'
});

.setParam()

파라메터 값을 설정합니다.
.call() 호출 후 설정된 값은 초기화됩니다.
폼을 등록하는 경우 동작하지 않습니다.

.setParam(string, string)

파라메터 값을 개별적으로 설정합니다.
PayApp.setParam('{파라메터1}', '{설정값1}');
PayApp.setParam('{파라메터2}', '{설정값2}');

.setParam(object Object)

파라메터 값을 오브젝트로 일괄 설정합니다.
PayApp.setParam({
    '{파라메터1}': '{설정값1}',
    '{파라메터2}': '{설정값2}'
});

.setTarget()

결제창을 띄울 타겟을 설정합니다.
타겟이 지정되지 않은 경우 PayAppWindow 이름의 새창을 띄워 결제창이 호출됩니다.
작성된 폼을 등록하는 경우에도 해당 메써드를 통해서만 타겟 설정이 가능합니다.
타겟을 설정하는 경우 추가적으로 redirect 파라메터 설정이 필요할 수 있습니다.

.setTarget(string)

별도의 타겟 이름을 사용하거나 HTML 스펙으로 지정된 _ 키워드를 사용할 수 있습니다.
예를 들어 결제창을 현재창에서 페이지 전환하려는 경우 _self로 설정합니다.
PayApp.setTarget('{타겟}');

.call()

결제창을 호출합니다.

.call()

설정된 파라메터를 사용하여 결제창을 호출합니다.
PayApp.call();

.call(object Object)

파라메터 설정과 동시에 결제창을 호출할 수 있습니다.
폼을 등록하는 경우 설정값은 무시됩니다.
PayApp.call({
    '{파라메터1}': '{설정값1}',
    '{파라메터2}': '{설정값2}'
});

Method Chaining

메써드들은 체인으로 연결 가능합니다.
.call() 메써드가 호출되면 체인은 종료됩니다.
// 폼 등록. 결제창 호출
PayApp.setForm('MyForm').call();

// 상품명 설정. 가격 설정. 결제창 호출.
PayApp.setParam('goodname', '좋은상품').setParam('price', '2000').call();

jQuery

결제 연동시 jQuery 가 필요한 경우 PayApp.$ 또는 PayApp.jQuery를 통해 내부에 포함된 jQuery 를 사용할 수 있습니다.
// jQuery 버전 확인
alert(PayApp.$().jquery);

// 1. 결제버튼 비활성화
PayApp.$('#pay-button').attr('disabled', 'disabled');
// 2. 결제창 호출
PayApp.call();
// 3. 결제버튼 활성화
PayApp.$('#pay-button').removeAttr('disabled');
팝업창 API 연동

연동 예제

HTML 폼 사용

<script src="http://lite.payapp.kr/public/api/payapp-lite.js"></script>
<script>
function myPay() {
    PayApp.setForm('MyForm');
    PayApp.call();
}
</script>

<form name="MyForm">
    <input type="hidden" name="userid"   value="payapptest">
    <input type="hidden" name="shopname" value="좋은상점">
    <input type="hidden" name="goodname" value="착한상품">
    <input type="hidden" name="price"    value="1000">
</form>

<a href="#" onclick="myPay();">결제하기</a>

자바스크립트 사용

<script src="http://lite.payapp.kr/public/api/payapp-lite.js"></script>
<script>
PayApp.setDefault('userid',     'payapptest');
PayApp.setDefault('shopname',   '좋은상점');

function myPay() {
    PayApp.setParam('goodname', '착한상품');
    PayApp.setParam('price',    '1000');
    PayApp.call();
}
</script>

<a href="#" onclick="myPay();">결제하기</a>

자바스크립트 사용 #2

<script src="http://lite.payapp.kr/public/api/payapp-lite.js"></script>
<script>
PayApp.setDefault('userid',     'payapptest');
PayApp.setDefault('shopname',   '좋은상점');
</script>

<a href="#" onclick="PayApp.setParam('goodname', '좋은상품').setParam('price', '1000').call();">좋은상품 결제하기</a>
<a href="#" onclick="PayApp.call({'goodname': '보통상품', 'price': '2000'});">보통상품 결제하기</a>
<a href="#" onclick="PayApp.call({'goodname': '나쁜상품', 'price': '3000'});">나쁜상품 결제하기</a>

사용자 입력 결제창 제작

<script src="http://lite.payapp.kr/public/api/payapp-lite.js"></script>
<script>
PayApp.setDefault('userid',     'payapptest');
PayApp.setDefault('shopname',   '좋은상점');
</script>

<a href="#" onclick="PayApp.call();">결제하기</a>

결제 (요청,승인) 취소

  • 호출 파라메터 중 userid, linkkey, mul_no 값은 필수 입니다.
  • “결제 요청” 연동 에서 feedbackurl을 입력된 결제요청 건 경우에는 결제 요청 취소 성공시“Feedbackurl 전달” 으로 자료가 전송됩니다.
  • REST URL :
    http://api.payapp.kr/oapi/apiLoad.html

호출

파라메터 필수 Type Description
cmd 필수 String 결제(요청,승인)취소 :paycancel
userid 필수 String 판매자 회원 아이디
linkkey 필수 String 연동 KEY
mul_no 필수 int 결제요청번호
cancelmemo String 결제요청취소 메모
cancelmode String 결제요청취소 모드
(값이 ready 인 경우 결제요청 상태만 취소 가능)
호출 예제)
curl -d "cmd=paycancel" \
-d "userid=[고객사 아이디]" \
-d "linkkey=[연동 KEY]" \
-d "mul_no=[결제요청번호]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage "" String 실패시 오류 문자열
응답 예제)
state=1&errorMessage=

결제 취소 요청

  • 구매자가 결제승인 후 D+5일이 경과 되었거나, 판매자 정산이 완료된 경우 “2.3. 결제(요청,승인) 취소” 연동으로 취소 되지 않습니다. 이 경우 결제 취소 요청 연동 후 정산금액을 반환하셔야(판매자 정산이 완료된 경우) 취소가 가능합니다.
  • REST URL :
    http://api.payapp.kr/oapi/apiLoad.html

호출

파라메터 필수 Type Description
cmd 필수 String 결제요청취소 :paycancelreq
userid 필수 String 판매자 회원 아이디
linkkey 필수 String 연동 KEY
mul_no 필수 int 결제요청번호
cancelmemo String 결제요청취소 메모
호출 예제)
curl -d "cmd=paycancelreq" \
-d "userid=[고객사 아이디]" \
-d "linkkey=[연동 KEY]" \
-d "mul_no=[결제요청번호]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage "" String 실패시 오류 문자열
응답 예제)
state=1&errorMessage=
결제 취소 요청

결제 취소 연동 예제

  • http://고객사 도메인/payapp_paycancel.php
  • 결제(요청,승인) 취소시 사용되는 페이지입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include("payapp_lib.php");
    /*
    TODO : 이곳에서 결제요청 정보를 불러옵니다.

    ex) SELECT mul_no FROM payrequest WHERE orderno='1234567890'
    */

    // 아래 입력정보를 알맞게 수정하세요.
    // 판매자 사이트에 있는 연동KEY, 연동VALUE는 일반 사용자에게 노출이 되지 않도록 주의 하시기 바랍니다.
    $postdata = array(
    'cmd'        => 'paycancel',               // 결제요청 취소, 필수
    'userid'     => 'payapp 판매자 아이디',    // 판매자 아이디, 필수
    'linkkey'    => '연동KEY',                 // 연동KEY값, 필수 (판매자 사이트 로그인 후 설정 메뉴에서 확인 가능)

    // 아래 값을 고객사에 맞게 바꾸셔야 합니다.
    'mul_no'     => '1234',                    // 결제요청번호, 필수
    'cancelmemo' => '품절되었습니다',          // 결제요청취소 메모
    'cancelmode' => '',                        // 결제요청취소 모드
    // ready 인 경우 결제요청 상태(결제가 안된상태)인 경우 에만 취소가 됩니다.
    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 결제요청취소성공
    // 결제요청취소는 즉시 실행됩니다.
    // 결제요청시 feedbackurl을 사용하면 결제요청취소 성공시 feedbackurl로 취소 정보가 전달됩니다.
    // feedbackurl 을 사용하면서 이곳에서 결제요청취소를 처리하면 결제요청취소 처리가 중복될 수 있으니 주의하시기 바랍니다.

    /*
    TODO : 이곳에서 결제요청취소 성공 정보를 저장합니다. 또는 feedbackurl 에서 처리하시기 바랍니다.

    ex) UPDATE payrequest SET cancel='y',cancel_date=NOW() WHERE orderno='1234567890'
    */
    } else {
    // 결제요청실패
    // 오류메시지($oResData['errorMessage'])를 확인하고, 오류를 수정하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    $oResData['errno'];			// 오류코드
    */

    /*
    TODO : 이곳에서 결제요청취소 실패 정보를 저장하거나, 이전 페이지로 이동해서 다시 시도할 수 있도록 해야 합니다.

    ex) UPDATE payrequest SET errorMessage='{$oResData['errorMessage']}' WHERE orderno='1234567890'
    */
    }
    ?>
                    

판매자 회원 가입

  • 대리점이 리셀러를, 리셀러가 판매자를 가입하는 연동입니다.
  • resellerid는 대리점 또는 리셀러 아이디를 입력하셔야 합니다.
  • REST URL :
    http://api.payapp.kr/oapi/apiLoad.html

호출

파라메터 필수 Type Description
cmd 필수 String 판매자 회원 가입 : sellerRegist
userid 필수 String 판매자 회원 아이디
userpwd 필수 String 판매자 회원 비밀번호 (영문,숫자 8자리)
sellername 필수 String 판매자명
phone 필수 int 판매자 휴대전화번호
compregno String (사업자 필수) 사업자등록번호
compname String (사업자 필수) 상호명(법인명)
biztype1 String (사업자 필수) 업태
biztype2 String (사업자 필수) 업종
email 필수 String 이메일
zipcode String 주소-우편번호
addr1 String 주소1
addr2 String 주소2
homepage String 홈페이지
compbank String 정산은행
compbanknum String 정산은행 계좌번호
compbankname String 정산은행 예금주
bizkind 필수 String 서비스 구분
username String (개인 필수) 이름
usertype 필수 int 판매자 구분 (개인:1, 사업자:2)
resellerid 필수 String 대리점 또는 리셀러 아이디
join_type 필수 int 가입형태 (유료:0, 할인:4), 리셀러 회원가입은 유료형
ceo_nm String (사업자 필수) 대표자 성함
seller_type 필수 String 가입구분 (seller,reseller)
common_feedbackurl String 공통 통보 URL
  • seller_type의 값이“seller”인 경우 resellerid는 리셀러 아이디, seller_type의 값이“reseller”인 경우 resellerid는 대리점 아이디 입니다.
  • bizkind : Blog사업자,쇼핑몰사업자,방문판매,음식점(배달),A/S긴급출동,운수업,컨텐츠,도소매,유통,서비스,숙박업,임대업,농수산업,기타
  • common_feedbackurl : 결제요청연동시 입력하는 feedbackurl과 별도로 결제상태 피드백을 받으실 수 있습니다.
  • common_feedbackurl은 결제요청 없이 결제완료로 통보 될 수 있으며, 결제요청연동으로 연동되지 않는 결제건도 피드백이 됩니다. (모든 결제건에 대해 피드백이 이루어 집니다.)
  • common_feedbackurl의 피드백은 하나의 결제요청건에 대해 여러 번 피드백 될 수 있으니, 결제상태/결제요청번호에 따라 적절한 연동을 하셔야 합니다.
호출 예제)
curl -d "cmd=sellerRegist" \
-d "userid=[고객사 아이디]" \
-d "userpwd=[비밀번호]" \
-d "sellername=[판매자명]" \
-d "phone=[판매자휴대전화번호]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage String 실패시 오류 문자열
userid String 가입 성공시 판매자 아이디
linkkey String 가입 성공시 연동KEY
linkval String 가입 성공시 연동VALUE

판매자 회원 아이디 중복 체크

  • 대리점이 리셀러를, 리셀러가 판매자를 가입하기 위해 아이디 중복체크 하는 연동입니다.
  • resellerid는 대리점 또는 리셀러 아이디를 입력하셔야 합니다.
  • REST URL :
    http://api.payapp.kr/oapi/apiLoad.html

호출

파라메터 필수 Type Description
cmd 필수 String 판매자 회원 아이디 중복체크 : useridCheck
userid 필수 String 판매자 회원 아이디
resellerid 필수 String 대리점 또는 리셀러 아이디
호출 예제)
curl -d "cmd=useridCheck" \
-d "userid=[고객사 아이디]" \
-d "resellerid=[대리점(리셀러)아이디]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 중복안됨
0 int 실패, 또는 아이디 중복
errorMessage String 실패시 오류 문자열
회원 연동

판매자 회원가입 연동 예제

  • http://고객사 도메인/payapp_sellerRegist.php
  • 페이앱 대리점, 리셀러가 리셀러 또는 판매자를 가입하는 연동입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include("payapp_lib.php");

    // 아래 입력정보를 알맞게 수정하세요.
    $postdata = array(
    'cmd'                => 'sellerRegist',   // 회원가입, 필수
    'userid'             => '',               // 판매자 아이디, 필수
    'userpwd'            => '',               // 판매자 비밀번호, 필수
    'sellername'         => '',               // 판매자명, 필수
    'phone'              => '',               // 판매자 휴대전화번호, 필수
    'compregno'          => '',               // 사업자등록번호 (사업자 필수)
    'compname'           => '',               // 상호명(법인명) (사업자 필수)
    'biztype1'           => '',               // 업태 (사업자 필수)
    'biztype2'           => '',               // 업종 (사업자 필수)
    'email'              => '',               // 이메일, 필수
    'zipcode'            => '',               // 우편번호
    'addr1'              => '',               // 주소1
    'addr2'              => '',               // 주소2
    'homepage'           => '',               // 홈페이지
    'compbank'           => '',               // 정산은행
    'compbanknum'        => '',               // 정산은행 계좌
    'compbankname'       => '',               // 정산은행 예금주
    'bizkind'            => '',               // 서비스구분 (Blog사업자,쇼핑몰사업자,방문판매,음식점(배달),A/S긴급출동,운수업,컨텐츠,도소매,유통,서비스,숙박업,임대업,농수산업,기타), 필수
    'username'           => '',               // 이름 (개인 필수)
    'usertype'           => '',               // 판매자 구분 (개인:1, 사업자:2), 필수
    'resellerid'         => '',               // 대리점 또는 리셀러 아이디, 필수
    'join_type'          => '',               // 가입형태 (유료:0, 할인:4), 필수
    'ceo_nm'             => '',               // 대표자 성함 (사업자 필수)
    'seller_type'        => '',               // 가입 구분 (판매자:seller, 리셀러:reseller), 필수
    'common_feedbackurl' => '',               // 공통 feedbackurl
    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 가입성공
    /*
    $oResData['userid'];	// 판매자 아이디
    $oResData['linkkey'];	// 연동 KEY
    $oResData['linkval'];	// 연동 VALUE
    */
    } else {
    // 가입실패
    // 실패메시지($oResData['errorMessage'])를 확인하고, 수정하고 재시도 하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    */
    }
    ?>
                    

판매자 회원아이디 중복체크 연동 예제

  • http://고객사 도메인/payapp_useridCheck.php
  • 페이앱 대리점, 리셀러가 리셀러 또는 판매자를 가입시키고자 할때 아이디 중복체크 하는 연동입니다.

    <?php    include("payapp_lib.php");

    // 아래 입력정보를 알맞게 수정하세요.
    $postdata = array(
    'cmd'        => 'useridCheck',      // 아이디 중복체크, 필수
    'userid'     => '',                 // 판매자 아이디, 필수
    'resellerid'    => '',              // payapp 대리점 또는 리셀러 아이디, 필수
    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 중복안됨
    // userid의 값이 중복되지 않습니다. 해당 아이디로 가입이 가능합니다.
    } else {
    // 연동실패 또는 아이디 중복
    // 실패메시지($oResData['errorMessage'])를 확인하고, 수정 또는 다른 아이디로 재시도 하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    */
    }
    ?>
                    

부계정 등록

  • 직원별로 카드 결제 및 매출 현황관리를 가능하도록 부계정을 등록하는 연동입니다.

호출

파라메터 필수 Type Description
cmd 필수 String 부계정 등록 : subidregist
userid 필수 String 판매자 회원 아이디
subuserid 필수 String 부계정 아이디
subpwd 필수 String 부계정 비밀번호
subname 필수 String 부계정명
subetc1 String 대분류
subetc2 String 중분류
subetc3 String 소분류
subjtype String 직급
state int 권한(0:권한없음, 1:부계정사용, 2:메인관리자, 4:결제취소)

조직분류 관리 subetc1

조직별 매출관리를 위해 대분류를 등록합니다.

조직분류 관리 subetc2

조직별 매출관리를 위해 중분류를 등록합니다.

조직분류 관리 subetc3

조직별 매출관리를 위해 소분류를 등록합니다.

권한설정 state

권한없음=0, 부계정사용=1, 메인관리자=2, 결제취소=4
부계정사용+메인관리자=3, 부계정사용+결제취소=5, 메인관리자+결제취소=6, 부계정사용+메인관리자+결제취소=7
호출 예제)
curl -d "cmd=subidregist" \
-d "userid=[고객사 아이디]" \
-d "subuserid=[부계정 아이디]" \
-d "subpwd=[부계정 비밀번호]" \
-d "subname=[부계정명]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage String 실패시 오류 문자열
부계정 등록

부계정등록 연동 예제

  • http://고객사 도메인/payapp_subidRegist.php
  • 직급별로 부계정을 등록하는 연동입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include("payapp_lib.php");

    // 아래 입력정보를 알맞게 수정하세요.
    $postdata = array(
    'cmd'                  => 'subidregist',    // 부계정등록, 필수
    'userid'               => '',               // 판매자 아이디, 필수
    'subuserid'            => '',               // 부계정 아이디, 필수
    'subpwd'               => '',               // 부계정 비밀번호, 필수
    'subname'              => '',               // 부계정명, 필수
    'subetc1'              => '',               // 대분류(예:본사)
    'subetc2'              => '',               // 중분류(예:기획팀)
    'subetc3'              => '',               // 소분류(예:마케팅파트)
    'subjtype'             => '',               // 직급
    'state'                => '',               // 권한설정(입력:0,1,2,3,4,5,6,7)
    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 등록성공
    } else {
    // 등록실패
    // 실패메시지($oResData['errorMessage'])를 확인하고, 수정하고 재시도 하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    */
    }
    ?>
                    

현금영수증 발행

  • 현금영수증 발행 연동입니다.

호출

파라메터 필수 Type Description
cmd 필수 String 현금영수증 발행 : cashSt
userid 필수 String 판매자 회원 아이디
good_name 필수 String 상품명
buyr_name 필수 String 구매자명
buyr_tel1 int 구매자 휴대폰
buyr_mail String 구매자 이메일
id_info 필수 int 휴대폰번호(사업자번호)
trad_time 필수 int 원거래시각(예:20151231183120)
tr_code 필수 int 발행용도(0:소득공제용, 1:지출증빙용)
amt_tot 필수 int 거래금액
amt_sup 필수 int 공급가액
amt_svc 필수 int 봉사료
amt_tax 필수 int 부가가치세
corp_tax_type 필수 String TG01:과세, TG02:면세
호출 예제)
curl -d "cmd=cashSt" \
-d "userid=[고객사 아이디]" \
-d "good_name=[상품명]" \
-d "buyr_name=[구매자명]" \
-d "id_info=[휴대폰(사업자)번호]" \
-d "trad_time=[원거래시각]" \
-d "tr_code=[발행용도]" \
-d "amt_tot=[거래금액]" \
-d "amt_sup=[공급가액]" \
-d "amt_svc=[봉사료]" \
-d "amt_tax=[부가가치세]" \
-d "corp_tax_type=[과세(면세)]" \
http://api.payapp.kr/oapi/apiLoad.html

응답

파라메터 type Description
state 1 int 성공
0 int 실패
errorMessage String 실패시 오류 문자열
cashstno int 발행번호
cashsturl String 발행url

현금영수증 취소

  • 현금영수증 취소 연동입니다.

호출

파라메터 필수 Type Description
cmd 필수 String 현금영수증 취소 : cashStCn
userid 필수 String 판매자 회원 아이디
cashstno 필수 int 발행번호
  • cashstno : 발행시 저장했던 발행번호

응답

파라메터 Type Description
state 1 int 성공
0 int 실패
errorMessage String 실패시 오류 문자열
현금영수증 연동

현금영수증 발행 연동 예제

  • http://고객사 도메인/payapp_cashst.php
  • 현금영수증을 발행하는 연동입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include("payapp_lib.php");

    // 아래 입력정보를 알맞게 수정하세요.
    $postdata = array(
    'cmd'                  => 'cashSt',         // 현금영수증발행, 필수
    'userid'               => '',               // 판매자 아이디, 필수
    'good_name'            => '',               // 상품명, 필수
    'buyr_name'            => '',               // 구매자명, 필수
    'buyr_tel1'            => '',               // 구매자 휴대폰
    'buyr_mail'            => '',               // 구매자 이메일
    'id_info'              => '',               // 휴대폰번호 또는 사업자번호, 필수
    'trad_time'            => '',               // 원거래시각(예:년월일시분초), 필수
    'tr_code'              => '',               // 발행용도(0=소득공제용, 1=지출증빙용), 필수
    'amt_tot'              => '',               // 거래금액, 필수
    'amt_sup'              => '',               // 공급가액, 필수
    'amt_svc'              => '',               // 봉사료, 필수
    'amt_tax'              => '',               // 부가가치세, 필수
    'corp_tax_type'        => '',               // TG01=과세, TG02=면세, 필수

    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 발행성공
    /*
    $oResData['cashstno'];	// 발행번호
    $oResData['cashsturl'];	// 발행url
    */
    } else {
    // 발행실패
    // 실패메시지($oResData['errorMessage'])를 확인하고, 수정하고 재시도 하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    */
    }
    ?>
                    

현금영수증 취소 연동 예제

  • http://고객사 도메인/payapp_cashstcn.php
  • 현금영수증을 취소하는 연동입니다.
  • 예제파일의 위치는 고객사의 개발환경에 맞추시기 바랍니다.

    <?php    include("payapp_lib.php");

    // 아래 입력정보를 알맞게 수정하세요.
    $postdata = array(
    'cmd'                  => 'cashStCn',       // 현금영수증취소, 필수
    'userid'               => '',               // 판매자 아이디, 필수
    'cashstno'             => '',               // 발행번호, 필수
    );

    $oResData = payapp_oapi_post($postdata);
    if ($oResData['state'] == '1') {
    // 취소성공
    } else {
    // 취소실패
    // 실패메시지($oResData['errorMessage'])를 확인하고, 수정하고 재시도 하셔야 합니다.
    /*
    $oResData['errorMessage'];	// 오류메시지
    */
    }
    ?>
                    
© 2016 UDID Corp.