파라미터 위변조방지를 위하여 클라이언트와 서버 상호간에 해쉬값을 검증합니다.
업무별로 요청 파라미터가 상이하므로 업무별 해쉬생성 로직을 참고하여 생성합니다.

일반결제(통합결제창, 다이렉트호출) 요청 시 해쉬값 생성을 위한 NodeJS 코드입니다.

 const crypto = require('crypto');
 const { URLSearchParams } = require('url');
  
 function GenerateSignature(requestObj, secretKey) {
	 const params = new URLSearchParams();
	 
	 params.append('amount', requestObj.Amount);
	 params.append('currency', requestObj.Currency);
	 params.append('failure_url', requestObj.FailureUrl);
	 params.append('merchant_order_id', requestObj.MerchantOrderId);
	 params.append('client_key', requestObj.ClientKey);
	 params.append('success_url', requestObj.SuccessUrl);
	 params.sort();
	 
	 const message = params.toString();
	 const hashValue = crypto.createHmac('sha256', secretKey).update(message).digest('base64');
	 return hashValue;
 }
일반결제요청에 대한 signature_hash는 Generate signature hash API를 통해서도 생성 하실 수 있습니다.
파라미터는 알파벳순으로 정렬하여 생성하여야 합니다.
다른 개발언어에 대한 샘플코드를 참조하시려면 영문버젼의 문서를 방문해 주세요.

정기결제를 위한 플랜생성, 빌링키발급, 비인결제결제 요청 시 해쉬값 생성을 위한 NodeJS 코드입니다.

 const crypto = require('crypto');
 const { URLSearchParams } = require('url');
  
 //ONDEMAN 타입의 플랜생성 시
 function GeneratePlanSignature(requestObj, secretKey) {
	 const params = new URLSearchParams();
	 
	 params.append('currency', requestObj.Currency);
	 params.append('merchant_order_ref', requestObj.MerchantOrderRef);
	 params.append('client_key', requestObj.ClientKey);
	 params.sort();
	 
	 const message = params.toString();
	 const hashValue = crypto.createHmac('sha256', secretKey).update(message).digest('base64');
	 return hashValue;
 }

 //ONDEMAND 타입의 빌링키발급 요청 시
 function GenerateSubscribeSignature(requestObj, secretKey) {
	 const params = new URLSearchParams();
	 
	 params.append('currency', requestObj.Currency);
	 params.append('merchant_order_ref', requestObj.MerchantOrderRef);
	 params.append('client_key', requestObj.ClientKey);
	 params.append('success_url', requestObj.SuccessUrl);
	 params.append('failure_url', requestObj.FailureUrl);
	 params.sort();
	 
	 const message = params.toString();
	 const hashValue = crypto.createHmac('sha256', secretKey).update(message).digest('base64');
	 return hashValue;
 }

 //ONDEMAND 타입의 비인증결제 요청 시
 function GenerateDeductionSignature(requestObj, secretKey) {
	 const params = new URLSearchParams();
	 
	 params.append('amount', requestObj.Amount);
	 params.append('client_key', requestObj.ClientKey);
	 params.append('currency', requestObj.Currency);
	 params.append('merchant_order_ref', requestObj.MerchantOrderRef);
	 params.append('subscription_order_ref', requestObj.SubscriptionOrderRef);
	 params.sort();
	 
	 const message = params.toString();
	 const hashValue = crypto.createHmac('sha256', secretKey).update(message).digest('base64');
	 return hashValue;
 }
REGULAR 타입은 해쉬생성을 위한 파라미터가 상이합니다.
파라미터는 알파벳순으로 정렬하여 생성하여야 합니다.