자바스크립트

 

 

demo.js

 

 

https://www.iamport.kr/demo

https://www.iamport.kr/assets/js/controllers/demo.js

 

KG이니시스 웹표준결제

 

 신용카드
 실시간계좌이체
 가상계좌
 휴대폰소액결제
 삼성페이
 KPay
 문화상품권
 스마트문상
 해피머니

 

 

angular.module('impwww')

.controller('demoCtrl', function($scope, $http, $timeout, $window) {

    function init() {
        $scope.use_escrow = false;
        $scope.in_app = false;
        $scope.is_response = false;

        $scope.pg = $scope.pgProviders[0];
        $scope.payMethod = $scope.pg.payMethod[0];

        $scope.name = "결제테스트";
        $scope.merchant_uid = 'merchant_' + new Date().getTime();
        $scope.amount = 1004;
        $scope.buyer_email = "iamport@siot.do"; 
        $scope.buyer_name = "구매자"; 
        $scope.buyer_tel = "010-1234-5678";
        $scope.buyer_addr = "서울특별시 강남구 삼성동";
        $scope.buyer_postcode = "123-456";
        $scope.vbank_due = moment().add(2, 'day').format('YYYYMMDD');
    };

    $scope.$watch('pg', function(newPg, oldPg) {
        if ( newPg != oldPg ) {
            $scope.payMethod = newPg.payMethod[0];
        }
    });
    
    $scope.pgProviders = [
        {
            id : "kakaopay",
            name : "카카오페이",
            userCode : 'imp10391932',
            payMethod : [{ value : "card", name:"신용카드"}]
        },
        {
            id : "kakaopay_billing",
            name : "카카오페이(정기결제)",
            userCode : 'imp10391932',
            pgId : 'TCSUBSCRIP',
            payMethod : [{ value : "card", name:"신용카드"}]
        },
        {
            id : "naverco",
            name : "네이버페이",
            userCode : 'imp41073887',
            payMethod : [
                            { value : "card", name:"신용카드"}
                        ]
        },
        {
            id : "payco",
            name : "PAYCO",
            userCode : 'imp09215616',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "html5_inicis",
            name : "KG이니시스(웹표준결제)",
            userCode : 'imp68124833',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"},
                            { value : "samsung", name :"삼성페이"},
                            { value : "kpay", name :"KPay"},
                            { value : "cultureland", name :"문화상품권"},
                            { value : "smartculture", name :"스마트문상"},
                            { value : "happymoney", name :"해피머니"}
                        ]
        },
        {
            id : "kcp",
            name : "NHN KCP",
            userCode : 'imp33886024',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "samsung", name:"삼성페이"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "nice",
            name : "나이스정보통신",
            userCode : 'imp84043725',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "jtnet",
            name : "JTNet",
            userCode : 'imp57843720',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "danal",
            name : "다날-휴대폰소액결제전용",
            userCode : 'imp00357859',
            payMethod : [{ value : "phone", name:"휴대폰소액결제"}]
        },
        {
            id : "danal_tpay",
            name : "다날-다날일반결제",
            userCode : 'imp00807605',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"}
                        ]
        },
        {
            id : "mobilians",
            name : "모빌리언스-휴대폰소액결제",
            userCode : 'imp60029475',
            payMethod : [{ value : "phone", name:"휴대폰소액결제"}]
        },
        {
            id : "uplus",
            name : "LGU+",
            userCode : 'imp46648599',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "kicc",
            name : "KICC",
            userCode : 'imp53939833',
            payMethod : [
                            { value : "card", name:"신용카드"},
                            { value : "trans", name:"실시간계좌이체"},
                            { value : "vbank", name:"가상계좌"},
                            { value : "phone", name:"휴대폰소액결제"}
                        ]
        },
        {
            id : "paypal",
            name : "페이팔",
            userCode : 'imp09350031',
            payMethod : [{ value : "card", name:"신용카드"}]
        },
        {
            id : "html5_inicis_billing",
            name : "KG이니시스(빌링결제)",
            userCode : 'imp86058634',
            payMethod : [
                            { value : "card", name:"신용카드"}
                        ]
        },
        {
            id : "jtnet_billing",
            name : "JTNet(빌링결제)",
            userCode : 'imp17732827',
            pgId : 'tpaytest2m',
            payMethod : [
                            { value : "card", name:"신용카드"}
                        ]
        }
    ];

    $scope.getHelpText = function(pg){
        var helpText = "실제 승인이 이루어진 테스트 결제건은 자정에 이니시스에서 자동 취소처리합니다.";

        switch(pg) {
            case 'uplus' :
                helpText = '실제 승인이 이루어지 않기 때문에 청구되지 않습니다.';
                break;

            case 'danal' :
            case 'danal_tpay':
            case 'kakaopay' :
                helpText = '실제 승인이 이루어진 테스트 결제건은 약 30분 후 자동 취소처리됩니다.';
                break;

            default:
                helpText = '실제 승인이 이루어진 테스트 결제건은 매일 자정(23:00~23:50분 사이)에 자동 취소처리합니다.';
                break;
        }

        return helpText;
    }

    $scope.payRequest = function() {
        var IMP = window.IMP;
        var userCode = $scope.pg.userCode || 'iamport';

        IMP.init(userCode);

        var param = {
            pay_method : $scope.payMethod.value,
            escrow : $scope.use_escrow,
            merchant_uid : $scope.merchant_uid,
            name:$scope.name, 
            amount:$scope.amount, 
            buyer_email:$scope.buyer_email, 
            buyer_name:$scope.buyer_name, 
            buyer_tel:$scope.buyer_tel, 
            buyer_addr:$scope.buyer_addr,
            buyer_postcode:$scope.buyer_postcode,
            vbank_due:$scope.vbank_due,
            m_redirect_url:'https://www.iamport.kr/demo',
            kcpProducts : [
                {
                    "orderNumber" : "xxxx",
                    "name" : "상품A",
                    "quantity" : 3,
                    "amount" : 1000
                },
                {
                    "orderNumber" : "yyyy",
                    "name" : "상품B",
                    "quantity" : 2,
                    "amount" : 3000
                }
            ],
            naverProducts : [
                {
                    id : "singleProduct",
                    name : "네이버페이 상품1",
                    basePrice : 1000,
                    taxType : 'FREE', //TAX or FREE
                    quantity : 2,
                    infoUrl : "http://www.naver.com",
                    imageUrl : "http://www.naver.com",
                    shipping : {
                        groupId : "",
                        method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
                        baseFee : 0,
                        feeType : "FREE", //FREE(무료), CHARGE(유료), CONDITIONAL_FREE(조건부 무료), CHARGE_BY_QUANTITY(수량별 부과)
                        feePayType : "FREE" //FREE(무료), PREPAYED(선불), CASH_ON_DELIVERY(착불)
                    }
                },
                {
                    id : "optionProduct",
                    name : "네이버페이 상품2",
                    basePrice : 1000,
                    taxType : 'FREE', //TAX or FREE
                    quantity : 2,
                    infoUrl : "http://www.naver.com",
                    imageUrl : "http://www.naver.com",
                    option : {
                        optionPrice : 200,
                        selectionCode : "R_L",
                        selections : [
                            {
                                code : "RED",
                                label : "색상",
                                value : "빨강"
                            },
                            {
                                code : "180",
                                label : "사이즈",
                                value : "180"
                            }
                        ]
                    },
                    shipping : {
                        groupId : "",
                        method : "DELIVERY", //DELIVERY(택배·소포·등기), QUICK_SVC(퀵 서비스), DIRECT_DELIVERY(직접 전달), VISIT_RECEIPT(방문 수령), NOTHING(배송 없음)
                        baseFee : 0,
                        feeType : "FREE", //FREE(무료), CHARGE(유료), CONDITIONAL_FREE(조건부 무료), CHARGE_BY_QUANTITY(수량별 부과)
                        feePayType : "FREE" //FREE(무료), PREPAYED(선불), CASH_ON_DELIVERY(착불)
                    }
                }
            ]
        };

        if ( $scope.in_app ) param.app_scheme = 'iamporttest';
        if ( $scope.pg.pgId ) param.pg = $scope.pg.pgId;

        if ( $scope.pg.id === 'html5_inicis_billing' ) {
            param.customer_uid = 'iamport_billing_test';
        }

        if ( $scope.pg.id === 'jtnet_billing' ) {
            param.pg = "jtnet." + $scope.pg.pgId;
            param.customer_uid = 'iamport_billing_test';
        }

        if ( $scope.pg.id === 'kakaopay_billing' ) {
            param.pg = "kakaopay." + $scope.pg.pgId;
            param.customer_uid = 'iamport_billing_test';
        }

        if ( $scope.pg.id === 'naverco' )               param.amount = 4400;
        if ( $scope.pg.id === 'danal_tpay' ) {
            if ( $scope.payMethod.value === 'trans' ) {
                param.pg = "danal_tpay.A010002002";
            } else if ( $scope.payMethod.value === 'vbank' ) {
                alert('가상계좌는 테스트가 진행되지 않습니다. 계약 후 이용부탁드립니다.');
                return false;
            }
        }
        if ( $scope.pg.id === 'kcp' ) {
            if ( $scope.use_escrow && $scope.payMethod.value != 'trans' && $scope.payMethod.value != 'vbank' )   return alert('에스크로 결제는 계좌이체, 가상계좌인 경우에만 적용됩니다.');
        }
        if ( $scope.pg.id === 'paypal' ) {
            param.popup = "redirect";
        }


        IMP.request_pay(param, function(rsp) {
            if ( rsp.success ) {
                var msg = '결제가 완료되었습니다.\n';
                msg += '고유ID : ' + rsp.imp_uid + '\n';
                msg += '상점 거래ID : ' + rsp.merchant_uid + '\n';
                msg += '결제 금액 : ' + rsp.paid_amount + '\n';

                if ( rsp.pay_method === 'card' ) {
                    msg += '카드 승인번호 : ' + rsp.apply_num + '\n';
                } else if ( rsp.pay_method === 'vbank' ) {
                    msg += '가상계좌 번호 : ' + rsp.vbank_num + '\n';
                    msg += '가상계좌 은행 : ' + rsp.vbank_name + '\n';
                    msg += '가상계좌 예금주 : ' + rsp.vbank_holder + '\n';
                    msg += '가상계좌 입금기한 : ' + rsp.vbank_date + '\n';
                }
            } else {
                var msg = '결제에 실패하였습니다.' + '\n';
                msg += '에러내용 : ' + rsp.error_msg + '\n';
            }

            $scope.$apply(function() {
                $scope.is_response = true;
                $scope.response = msg;
            });

            $timeout(function(){
                $scope.is_response = false;
                $window.location.reload();
            }, 10000, true);
        });
        return false;
    }
    
    init();
});

 

 

about author

PHRASE

Level 60  라이트

상상력을 안 가진 정신은 망원경을 안 가진 천문대 같다. -헨리 포드 피처

댓글 ( 4)

댓글 남기기

작성

자바스크립트 목록    more