[KCP] [PHP] UTF-8 웹페이지에 사용하기 > 기술자료 | 해피정닷컴

[KCP] [PHP] UTF-8 웹페이지에 사용하기 > 기술자료

본문 바로가기

사이트 내 전체검색

[KCP] [PHP] UTF-8 웹페이지에 사용하기 > 기술자료

전자결제 [KCP] [PHP] UTF-8 웹페이지에 사용하기

페이지 정보


본문

KCP 결제방식이 2016년도에 웹표준 결제창이 도입되면서 UTF-8 일때의 처리내용이 변경되었습니다.
본 강좌는 KCP에서 공식 배포하는 샘플을 기준으로 작성하였습니다.

KCP
  ├  bin
  │  ├  pp_cli   ... FTP 업로드시 binary mode 로 업로드
  │  ├  pp_cli__linux_32__2_14.tar.gz
  │  └  pp_cli__linux_64__2_14.tar.gz
  │
  ├  cfg
  │  └  site_conf_inc.php   ... 사이트코드, bin 경로 등 변경
  │
  ├  mobile_sample   ... Mobile 관련 결제가 진행됩니다.
  │    ├  css
  │    │  ├  btn_receipt.png
  │    │  ├  btn_vcn.png
  │    │  ├  style.css   ... utf-8 변경
  │    │  └  style_mobile.css   ... utf-8 변경
  │    ├  js
  │    │  ├  approval_key.js   ... utf-8 변경
  │    │  └  KCPComLibrary.php   ... utf-8 변경
  │    ├  app.zip
  │    ├  KCPPaymentService.wsdl
  │    ├  order_approval.php   ... utf-8 변경
  │    ├  order_mobile.php   ... utf-8 변경  /  setlocale 추가  /  form에 accept-charset 추가
  │    ├  pp_cli_hub.php   ... utf-8 변경  /  setlocale 추가  /  iconv 적용
  │    ├  pp_cli_hub_lib.php   ... utf-8 변경
  │    ├  real_KCPPaymentService.wsdl
  │    └  result.php   ... utf-8 변경
  │
  ├  sample  ... PC 관련 결제가 진행됩니다.
  │    ├  css
  │    │  ├  index.css   ... utf-8 변경
  │    │  ├  sample.css   ... utf-8 변경
  │    │  └  style.css   ... utf-8 변경
  │    ├  img
  │    │  └  ...
  │    ├  common_return.php
  │    ├  order.php   ... utf-8 변경  /  setlocale 추가  /  form에 accept-charset 추가
  │    ├  pp_cli_hub.php   ... utf-8 변경  /  setlocale 추가  /  iconv 적용
  │    ├  pp_cli_hub_lib.php   ... utf-8 변경
  │    └  result.php   ... utf-8 변경  /  setlocale 추가
  │
  └  index.html




Ⅰ. 공통

1. bin 폴더에 pp_cli 업로드 ( 꼭 Binary 모드로 전송 )
32bit 서버는 pp_cli__linux_32__2_14.tar.gz  압축푼 pp_cli  업로드
64bit 서버는 pp_cli__linux_64__2_14.tar.gz  압축푼 pp_cli  업로드



2. cfg / site_conf_inc.php  중요 변경사항
utf-8 로 변경
BIN 절대경로 입력 (bin전까지)
g_conf_site_cd, g_conf_site_key 설정
사이트명 설정(한글 불가) : 반드시 영문자로 설정




Ⅱ. PC 모드 KCP 결제

결제후 결과값의 한글이 깨진 모습


UTF-8 처리후 한글이 정상적으로 보이는 화면



1. utf-8 로 변경
sample / order.php
sample / pp_cli_hub.php
sample / pp_cli_hub_lib.php
sample / result.php
smaple / css / index.css , sample.css , style.css


2. sample / order.php , pp_cli_hub.php , result.php   1~2줄   setlocale 코드 추가
<?

를 아래와 같이 변경

<?php
// locale ko_KR.euc-kr 로 설정
setlocale(LC_CTYPE, 'ko_KR.euc-kr');



3. sample / order.php   142줄   
<form name="order_info" method="post">

를 아래와 같이 변경

<form name="order_info" method="post" accept-charset="euc-kr">



4. sample / order.php  408~409줄   고객 아이디 설정
    /* 가맹점에서 관리하는 고객 아이디 설정을 해야 합니다. 상품권 결제 시 반드시 입력하시기 바랍니다.
        <input type="hidden" name="shop_user_id"    value=""/> */

를 아래와 같이 변경해서 쇼핑몰의 shop_user_id 가 노출되도록 수정

    /* 가맹점에서 관리하는 고객 아이디 설정을 해야 합니다. 상품권 결제 시 반드시 입력하시기 바랍니다. */
        <input type="hidden" name="shop_user_id"    value="<?php //echo $member['mb_id']; // ex.그누보드 ?>"/>



5. sample / pp_cli_hub.php   132~133줄
            /* 1 원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */
            $c_PayPlus->mf_set_ordr_data( "ordr_mony",  "1" );  
 
를 아래와 같이 변경합니다.

            /* 1 원은 실제로 업체에서 결제하셔야 될 원 금액을 넣어주셔야 합니다. 결제금액 유효성 검증 */
            $c_PayPlus->mf_set_ordr_data( "ordr_mony",  $_POST['good_mny'] );  



6. sample / pp_cli_hub.php   338줄

    $bSucc = ""; // DB 작업 실패 또는 금액 불일치의 경우 "false" 로 세팅

를 아래와 같이 내용 추가

    $bSucc = ""; // DB 작업 실패 또는 금액 불일치의 경우 "false" 로 세팅

    $res_msg   = iconv("EUC-KR", "UTF-8", $res_msg);
    $card_name = iconv("EUC-KR", "UTF-8", $card_name);
    $good_name = iconv("EUC-KR", "UTF-8", $good_name);
    $buyr_name = iconv("EUC-KR", "UTF-8", $buyr_name);
    
    // 주문결과를 디비에 저장하기 Start
    include_once "../../common.php"; // 그누보드5 설정
    include_once "../../data/dbconfig.php";
    $dbconn = mysqli_connect(G5_MYSQL_HOST,G5_MYSQL_USER,G5_MYSQL_PASSWORD,G5_MYSQL_DB);
    
    $shop_order_table = "order_table"; // DB 주문 테이블
    $shop_price_field = "price_filed"; // DB 주문가격 필드
    $shop_order_field = "order_filed"; // DB 주문번호 필드
    $shop_auth_code   = "auth_code"; // DB 주문번호 필드
    
    $query = " select {$shop_price_field} from {$shop_order_table} where {$shop_order_field} = '{$ordr_idxx}' ";
    $result = mysqli_query($dbconn,$query);
    $data = mysqli_fetch_array($result);
    $check_price = $data[0];
    
    if ($check_price) {
        if ($amount==$check_price) {
            if ( $req_tx == "pay" && $res_cd == "0000" ) {
                $query = " update {$shop_order_table} set {$shop_auth_code}='{$tno}' where {$shop_order_field} = '{$ordr_idxx}' ";
                $result = mysqli_query($dbconn,$query);
            }
        } else {
            $bSucc = "false";
            
            $query = " update {$shop_order_table} set {$shop_auth_code}='결제오류' where orderNumber = '{$ordr_idxx}' ";
            $result = mysqli_query($dbconn,$query);
        }
    }
    // 주문결과를 디비에 저장하기 End




Ⅱ. Mobile 모드 KCP 결제


1. utf-8 로 변경
mobile_sample / js / approval_key.js
mobile_sample / js / KCPComLibrary.php
mobile_sample / order_approval.php
mobile_sample / order_mobile.php
mobile_sample / pp_cli_hub.php
mobile_sample / pp_cli_hub_lib.php
mobile_sample / result.php
mobile_sample / css / style.css , style_mobile.css



2. mobile_sample / order_mobile.php , pp_cli_hub.php , result.php 의 2줄에  setlocale 코드 추가
<?

를 아래와 같이 변경

<?php
// locale ko_KR.euc-kr 로 설정
setlocale(LC_CTYPE, 'ko_KR.euc-kr');



3. order_approval.php 에서 charSetType 변경
    // 쇼핑몰 페이지에 맞는 문자셋을 지정해 주세요.
    $charSetType      = "euc-kr";             // UTF-8인 경우 "utf-8"로 설정

를 아래와 같이 변경

    // 쇼핑몰 페이지에 맞는 문자셋을 지정해 주세요.
    $charSetType      = "utf-8";             // UTF-8인 경우 "utf-8"로 설정



4. order_mobile.php   228줄
<form name="order_info" method="post">

를 아래와 같이 변경

<form name="order_info" method="post" accept-charset="euc-kr">



5. order_mobile.php   228줄
<form name="pay_form" method="post" action="pp_cli_hub.php">

를 아래와 같이 변경

<form name="pay_form" method="post" action="pp_cli_hub.php" accept-charset="euc-kr">



6. order_mobile.php 의 script 변경
    v_frm.action = PayUrl;

를 아래와 같이 변경

    //v_frm.action = PayUrl;
    // utf-8 인코딩 방식에 따른 변경 -- Start
    if(v_frm.encoding_trans == undefined) {
        v_frm.action = PayUrl;
    } else {
        if(v_frm.encoding_trans.value == "UTF-8") {
            v_frm.action = PayUrl.substring(0,PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
            v_frm.PayUrl.value = PayUrl;
        } else {
            v_frm.action = PayUrl;
        }
    }
    // utf-8 인코딩 방식에 따른 변경 -- End



7. order_mobile.php 에 php 5.4 / 5.5 / 7.x 대응 코드 추가
Notice: Undefined index: req_tx in /home/happyjung/www/kcp_test/mobile_sample.php on line 32



7-1. php.ini 설정을 변경해서 오류를 안보이게 하는 방법
추천하고 싶지 않지만 6-2 방법이 없으면 이렇게라도 해야 정상 이용이 가능합니다.


7-2. 찾는중입니다.


8. order_mobile.php 파일의 위치가 다른 폴더에 존재하는 경우


위와 같은 오류화면이 보이면 아래의 사항을 확인하세요

mobile_sample / js / approval_key.js 와
mobile_sample / order_approval.php 는
반드시 order_mobile.php 와 동일 폴더에 위치를 해야 합니다.

mobile_order.php 가 실행될때 kcp의 결제요청을 approval_key.js 에서 ajax 로 호출하는데 이때 order_approval.php 를 사용합니다.

올바르게 설정된 경우 아래와 같은 화면이 나타납니다.
성공적으로 거래가 등록 되었습니다.






참고자료
https://ncube.net/8841
http://faultnote.tistory.com/343
https://m.blog.naver.com/aramjo/120178428858

댓글목록

등록된 댓글이 없습니다.


Total 2,641건 99 페이지
  • RSS
기술자료 목록
681
그누보드   21753  2009-04-14 21:43 ~ 2018-06-26 23:51  
680
일반   14014  2009-04-10 20:43 ~ 2009-05-12 00:00  
679
일반   14108  2009-04-10 01:25  
678
그누보드   16204  2009-04-04 16:20  
677
HTML   14569  2009-04-03 20:08  
676
HTML   32494  2009-04-03 20:05  
675
전자결제   11638  2009-04-01 19:03  
674
SQL   26314  2009-03-31 16:59  
673
WindowsServer   17489  2009-03-25 21:27  
672
제로보드   14738  2009-03-24 19:31 ~ 2018-06-14 18:53  
671
Linux   14734  2009-03-24 18:08  
670
그누보드   13591  2009-03-24 17:47  
열람
전자결제   31112  2009-03-23 19:46 ~ 2019-01-14 05:25  
668
MySQL   15199  2009-03-21 19:48  
667
ClassicASP   18003  2009-03-19 10:33 ~ 2009-03-19 00:00  
666
MySQL   24458  2009-03-13 19:25 ~ 2019-10-08 22:59  
665
JavaScript   19239  2009-03-12 23:40 ~ 2009-03-13 00:00  
664
HTML   19174  2009-03-12 09:16 ~ 2015-10-13 00:00  
663
MySQL   12781  2009-03-11 22:28  
662
그누보드   10473  2009-03-11 00:23 ~ 2010-03-12 00:00  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.