PC에서 ActiveX 설치 없이 여러 지불수단을 이용하여 결제할 수 있도록 지원하는 인터넷 전자지불 서비스입니다.
제공된 샘플은 API 구동을 위한 최소한의 샘플링이오니 참고부탁드립니다.
결제요청JS : https://stdpay.inicis.com/stdjs/INIStdPay.js
HTTP Method : POST
Accept-charset : UTF-8
<html>
<head>
<title>WebStandard example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script language="javascript" type="text/javascript" src="https://stdpay.inicis.com/stdjs/INIStdPay.js" charset="UTF-8"></script>
</head>
<body>
<form id="SendPayForm_id" name="" method="POST" >
<input type="text" name="goodname" value="테스트" >
<input type="text" name="buyername" value="홍길동" >
<input type="text" name="buyertel" value="010-1234-5678" >
<input type="text" name="buyeremail" value="test@inicis.com" >
<input type="text" name="price" value="1000" >
<input type="hidden" name="mid" value="INIpayTest" ><!-- 에스크로테스트 : iniescrow0, 빌링(정기과금)테스트 : INIBillTst -->
<input type="hidden" name="gopaymethod" value="Card" >
<input type="hidden" name="mKey" value="3a9503069192f207491d4b19bd743fc249a761ed94246c8c42fed06c3cd15a33" >
<input type="hidden" name="signature" value="58a5e0be41312e6f92e2cbc6356700b6f5f731c1eafe20ef5f0adf27d3fa4594" >
<input type="hidden" name="oid" value="INIpayTest_1653767003754" >
<input type="hidden" name="timestamp" value="1653767003754" >
<input type="hidden" name="version" value="1.0" >
<input type="hidden" name="currency" value="WON" >
<input type="hidden" name="acceptmethod" value="below1000" ><!-- 에스크로옵션 : useescrow, 빌링(정기과금)옵션 : BILLAUTH(Card) -->
<input type="hidden" name="returnUrl" value="http://localhost/stdpay/INIStdPayReturn_simple.asp" >
<input type="hidden" name="closeUrl" value="http://localhost/stdpay/close.asp" >
</form>
<button onclick="INIStdPay.pay('SendPayForm_id')" style="padding:10px; margin-left:10%">결제요청</button>
</body>
</html>
<?php
header("Content-Type: text/html; charset=utf-8");
require_once('../libs/INIStdPayUtil.php');
require_once('../libs/HttpClient.php');
require_once('../libs/sha256.inc.php');
require_once('../libs/json_lib.php');
$util = new INIStdPayUtil();
//#######################################
// 인증결과 파라미터 일괄 수신, 인증이 성공일 경우만
//#######################################
if (strcmp("0000", $_REQUEST["resultCode"]) == 0) {
echo "####인증성공 승인데이터 만들기####"."<br/>";
//echo print_r($_POST); //인증 데이터 확인
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.inicis.std.util.ParseUtil"%>
<%@ page import="com.inicis.std.util.SignatureUtil"%>
<%@ page import="com.inicis.std.util.HttpUtil"%>
<%@ page import="java.util.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body ><% try{//#############################// 인증결과 파라미터 일괄 수신//#############################request.setCharacterEncoding
("UTF-8");Map<String,String> paramMap = new Hashtable<String,String>();Enumeration elems = request.getParameterNames();
String temp = "";
while(elems.hasMoreElements())
{
temp = (String) elems.nextElement();
paramMap.put(temp, request.getParameter(temp));
}
System.out.println("paramMap : "+ paramMap.toString());
<% @Language="VBScript" CODEPAGE="949" %>
<%
Response.CharSet="euc-kr"
Session.codepage="949"
Response.codepage="949"
Response.ContentType="text/html;charset=euc-kr"
%>
<!--#include virtual="/INIStdweb_ASP/include/function.asp"-->
<!--#include virtual="/INIStdweb_ASP/include/signature.asp"-->
<!--#include virtual="/INIStdweb_ASP/include/aspJSON1.17.asp"-->
<%
'#############################
' 인증결과 파라미터 일괄 수신
'#############################
Set oJSON = New aspJSON
승인요청URL : 인증결과수신 시 authUrl
통신방식 : http-Client
HTTP Method : POST
// STEP2 에 이어 인증결과가 성공일 경우 STEP2 에서 받은 인증결과로 아래 승인요청 진행
//############################################
// 1.전문 필드 값 설정(***가맹점 개발수정***)
//############################################
$mid = $_REQUEST["mid"]; // 가맹점 ID 수신 받은 데이터로 설정
$timestamp = $util->getTimestamp(); // util에 의해서 자동생성
$charset = "UTF-8"; // 리턴형식[UTF-8,EUC-KR](가맹점 수정후 고정)
$format = "JSON"; // 리턴형식[XML,JSON,NVP](가맹점 수정후 고정)
$authToken = $_REQUEST["authToken"]; // 취소 요청 tid에 따라서 유동적(가맹점 수정후 고정)
$authUrl = $_REQUEST["authUrl"]; // 승인요청 API url(수신 받은 값으로 설정, 임의 세팅 금지)
$mKey = hash("sha256", $signKey); // 가맹점 확인을 위한 signKey를 해시값으로 변경 (SHA-256방식 사용)
//#####################
// 2.signature 생성
//#####################
$signParam["authToken"] = $authToken; // 필수
$signParam["timestamp"] = $timestamp; // 필수
// signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash)
$signature = $util->makeSignature($signParam);
//#####################
// 3.API 요청 전문 생성
//#####################
$authMap["mid"] = $mid; // 필수
$authMap["authToken"] = $authToken; // 필수
$authMap["signature"] = $signature; // 필수
$authMap["timestamp"] = $timestamp; // 필수
$authMap["charset"] = $charset; // default=UTF-8
$authMap["format"] = $format; // default=XML
$httpUtil = new HttpClient();
//#####################
// 4.API 통신 시작
//#####################
$authResultString = "";
if ($httpUtil->processHTTP($authUrl, $authMap)) {
$authResultString = $httpUtil->body;
$result = str_replace (",", "<br/>", $authResultString);
//PRINT DATA
//############################################################
//5.API 통신결과 처리(***가맹점 개발수정***)
//############################################################
echo "<p><b>승인결과 내용 :</b> $result</p>";
}
}
?>
// STEP2 에 이어 인증결과가 성공일 경우 STEP2 에서 받은 인증결과로 아래 승인요청 진행
//#####################// 인증이 성공일 경우만//#####################if("0000".equals(paramMap.get("resultCode"))){
out.println("## 인증데이터 일괄수신 ##");
out.println("<p>"+paramMap.toString()+"</p>");
String mid = paramMap.get("mid"); // 가맹점 ID 수신 받은 데이터로 설정
String timestamp= SignatureUtil.getTimestamp(); // util에 의해서 자동생성
String charset = "UTF-8"; // 리턴형식[UTF-8,EUC-KR](가맹점 수정후 고정)
String format = "JSON"; // 리턴형식[XML,JSON,NVP](가맹점 수정후 고정)
String authToken= paramMap.get("authToken"); // 취소 요청 tid에 따라서 유동적(가맹점 수정후 고정)
String authUrl= paramMap.get("authUrl"); // 승인요청 API url(수신 받은 값으로 설정, 임의 세팅 금지)
String netCancel= paramMap.get("netCancelUrl"); // 망취소 API url(수신 받은 값으로 설정, 임의 세팅 금지)
//#####################// 2.signature 생성
//#####################
Map<String, String> signParam = new HashMap<String, String>();
signParam.put("authToken",authToken);// 필수
signParam.put("timestamp",timestamp);// 필수
// signature 데이터 생성 (모듈에서 자동으로 signParam을 알파벳 순으로 정렬후 NVP 방식으로 나열해 hash)String signature = SignatureUtil.makeSignature(signParam);
//#####################// 3.API 요청 전문 생성//#####################Map<String, String> authMap = new Hashtable<String, String>();authMap.put("mid" ,mid); // 필수
authMap.put("authToken",authToken); // 필수
authMap.put("signature",signature); // 필수
authMap.put("timestamp",timestamp); // 필수
authMap.put("charset" ,charset); // default=UTF-8
authMap.put("format" ,format); // default=XML
System.out.println("##승인요청 API 요청##");
HttpUtil httpUtil = new HttpUtil();//#####################// 4.API 통신 시작//#####################String authResultString = "";authResultString = httpUtil.processHTTP(authMap, authUrl);
//############################################################//5.API 통신결과 처리(***가맹점 개발수정***)//############################################################out.println("## 승인 API 결과 ##");
String test = authResultString.replace(",", "&").replace(":", "=").replace("\"", "").replace(" ","").replace("\n", "").replace("}", "").replace("{", "");
out.println("<pre>"+authResultString.replaceAll("<", "<").replaceAll(">", ">")+"</pre>");
}else{
//#############
// 인증 실패시
//#############
out.println("<br/>");
out.println("####인증실패####");
out.println("<p>"+paramMap.toString()+"</p>");
}
}catch(Exception e){
System.out.println(e);
}
%>
'STEP2 에 이어 인증결과가 성공일 경우 STEP2 에서 받은 인증결과로 아래 승인요청 진행
'#####################
' 인증이 성공일 경우만
'#####################
if ("0000"=request("resultCode")) then
response.write ("<br/><br/><br/>")
response.write ("####인증성공/승인요청####")
response.write ("<br/><br/><br/>")
'############################################
' 1.전문 필드 값 설정(***가맹점 개발수정***)
'############################################
maid = request("mid") ' 가맹점 ID 수신 받은 데이터로 설정
correct = "09" ' 표준시와의 차이를 2자리 숫자로 입력 (예: 대한민국은 표준시와 9시간 차이이므로 09)
timestamp= time_stamp(correct)
charset = "EUC-KR" ' 리턴형식[UTF-8,EUC-KR](가맹점 수정후 고정)
format = "JSON" ' 리턴형식[XML,JSON,NVP](가맹점 수정후 고정)
authToken= request("authToken") ' 취소 요청 tid에 따라서 유동적(가맹점 수정후 고정)
authUrl= request("authUrl") ' 승인요청 API url(수신 받은 값으로 설정, 임의 세팅 금지)
'#####################
' 2.signature 생성
'#####################
signParam = "authToken=" & replace(authToken," ", "+")
signParam = signParam & "×tamp=" & timestamp
' signature 데이터 생성 (signParam을 알파벳 순으로 hash)
signature = MakeSignature(signParam)
'#####################
' 3.API 요청 전문 생성
'#####################
dim xmlHttp, postdat
Set xmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
'Set xmlHttp = CreateObject("Msxml2.XMLHTTP")
'Set xmlHttp = CreateObject("Msxml3.XMLHTTP")
' 환경에 맞는 dll 사용가능
send_text = "mid="&maid
send_text = send_text & "×tamp="×tamp
send_text = send_text & "&signature="&signature
send_text = send_text & "&authToken="&Server.URLEncode(authToken)
send_text = send_text & "&&charset="&charset
send_text = send_text & "&format="&format
'#####################
' 4.API 통신 시작
'#####################
response.write("##승인요청 API 요청##<br>")
xmlHttp.Open "POST", authUrl, False
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; text/html; charset=euc-kr"
xmlHttp.Send send_text
result= xmlHttp.responseText
Set oJSON = New aspJSON
oJSON.loadJSON(result)
response.write("##승인 처리 완료##</br></br></br>")
authResultString = ""
'############################################################
'5.API 통신결과 처리(***가맹점 개발수정***)
'############################################################
response.write ("## 승인 API 결과 ##")
response.write("<pre>")
response.write (result)
End IF
%>
모든 결제 프로세스 종료 후 최종적으로 전달되는 응답파라미터에 대하여 안내합니다.