영수증 미리보기
모듈 연동
| 구분 | IP | 비고 |
|---|---|---|
| 테스트 | 211.193.35.11 | STG |
| 운영 - 결제 | 211.193.35.20 | |
| 운영 - 재통보 | 211.193.35.216 211.193.35.217 |
재통보 서비스 사용시 |
상세 파라미터
| 파라미터 | 항목명 | 길이(char) | 필수여부 | 설명 |
|---|---|---|---|---|
| PayMethod | 지불수단 | 10 | 필수 | OTPOINT |
| PointType | 결제타입 | 10 | 필수 | CELLPHONE : 통신사포인트 |
| PointTypeValue | 포인트 조회 수단 설정값 | 3 | 필수 | KTF : KT, SKT : SK, LGT : LG |
| ProductCode | 통신사 제휴코드 | 8 | 필수 | 통신사 정의값 |
| Notice | Notice | 100 | 필수 | 결제창 내 표기될 문구(ex : 포인트 차감) |
| EdiDate | 전문생성일시 | 14 | 필수 | YYYYMMDDHHmmss(형식) |
| GoodsCnt | 결제상품 품목 개수 | 2 | 필수 | 기본값: 1 |
| GoodsName | 거래 상품명 | 40 | 필수 | |
| Amt | 거래 금액 | 12 | 필수 | 숫자만 가능, 문장부호 제외 |
| UsePoint | 사용 포인트 | 12 | 필수 | 숫자만 가능, 문장부호 제외 |
| Moid | 상품주문번호 | 40 | 필수 | 특수문자 포함 불가 |
| Mid | 상점아이디 | 10 | 필수 | |
| ReturnUrl | 결제결과전송URL | 100 | 필수 | Http 프로토콜 포함 전체 Url 설정 |
| MallUserId | 회원사 고객 ID | 20 | 필수 | |
| BuyerName | 구매자명 | 30 | 필수 | |
| BuyerTel | 구매자연락처 | 40 | 필수 | 숫자만 입력 ( 문자 입력 시 승인 오류가 발생할 수 있습니다. ) |
| BuyerEmail | 구매자메일주소 | 60 | 필수 | |
| EncryptData | 암호화데이타 | 가변 | 필수 | |
| TransType | 결제타입 | 1 | 필수 | 0: 일반 |
| MallIp | 상점 IP | 20 | 선택 | 상점서버 IP |
| UserIp | 고객 IP | 20 | 선택 | 고객 IP |
| 파라미터 | 항목명 | 길이(char) | 설명 |
|---|---|---|---|
| PayMethod | 지불수단 | 10 | OTPOINT: 포인트 |
| Tid | 거래번호 | 30 | |
| AuthDate | 승인일자 | 12 | YYMMDDHHMMSS(형식) |
| AuthCode | 승인번호 | 30 | |
| ResultCode | 결과코드 | 4 | |
| ResultMsg | 결과메시지 | 100 | |
| PointTypeValue | 포인트 조회 수단 설정값 | 3 | KTF: KT, SKT: SK, LGT: LG |
| Mid | 상점아이디 | 10 | |
| Amt | 거래 금액 | 12 | |
| BuyerName | 구매자명 | 30 | |
| GoodsName | 거래 상품명 | 40 | |
| Moid | 상품주문번호 | 40 | |
| MallUserId | 회원사 고객 ID | 20 | |
| CardNum | 카드번호 | 16 | Masking 처리된 카드번호 |
| UsePoint | 사용포인트 | 9 | |
| BalancePoint | 잔여포인트 | 9 |
String Mid = ""; // 발급받은 테스트 Mid 설정(Real 전환 시 운영 Mid 설정)
String MerchantKey = ""; // 발급받은 테스트 상점키 설정(Real 전환 시 운영 상점키 설정)
String EdiDate = getyyyyMMddHHmmss();
String Amt = "1004";
String EncryptData = encodeSHA256Base64(EdiDate + Mid + Amt + MerchantKey);
String today = getyyyyMMddHHmm(); // 현재일자. 캐시방지용으로 사용
/* SHA256 암호화 */
public static final String encodeSHA256Base64(String strPW) {
String passACL = null;
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-256");
} catch (Exception e) {
e.printStackTrace();
}
md.update(strPW.getBytes());
byte[] raw = md.digest();
byte[] encodedBytes = Base64.encodeBase64(raw);
passACL = new String(encodedBytes);
return passACL;
}
/* 현재일자 */
public static final String getyyyyMMddHHmmss() {
SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss");
return yyyyMMddHHmmss.format(new Date());
}
/* 현재일자 */
public static final String getyyyyMMddHHmm() {
SimpleDateFormat yyyyMMddHHmm = new SimpleDateFormat("yyyyMMddHHmm");
return yyyyMMddHHmm.format(new Date());
}
SmartroPAY 연동가이드
String url = "https://tapproval.smartropay.co.kr/payment/approval/urlCallApproval.do"; // 테스트
//String url = "https://approval.smartropay.co.kr/payment/approval/urlCallApproval.do"; // 운영
String Tid = request.getParameter("Tid")==null?"":request.getParameter("Tid");
String TrAuthKey = request.getParameter("TrAuthKey")==null?"":request.getParameter("TrAuthKey");
HashMap<String, Object> result = callApi(TrAuthKey , Tid, url);
public HashMap<String, Object> callApi(String TrAuthKey, String Tid, String callUrl) {
StringBuilder responseBody = null;
HashMap<String, Object> result = new HashMap<>();
// http urlCall 승인 요청 및 TrAuthKey 유효성 검증
int connectTimeout = 1000;
int readTimeout = 20000; // 원천사 별로 최대 응답 시간이 상이하므로 가맹점 환경에 맞게 Timeout 설정
URL url = null;
HttpsURLConnection connection = null;
try {
SSLContext sslCtx = SSLContext.getInstance("TLSv1.2");
sslCtx.init(null, null, new SecureRandom());
url = new URL(callUrl);
System.out.println(" url " + url.toString());
connection = (HttpsURLConnection)url.openConnection();
connection.setSSLSocketFactory(sslCtx.getSocketFactory());
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setConnectTimeout(connectTimeout);
connection.setReadTimeout(readTimeout);
OutputStreamWriter osw = new OutputStreamWriter(new BufferedOutputStream(connection.getOutputStream()) , "utf-8" );
JSONObject body = new JSONObject();
body.put("Tid" ,Tid);
body.put("TrAuthKey" ,TrAuthKey);
char[] bytes = body.toString().toCharArray();
osw.write(bytes,0,bytes.length);
osw.flush();
osw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
String line = null;
responseBody = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(" response " + line);
responseBody.append(line);
}
br.close();
// 결제결과
result = new ObjectMapper().readValue(responseBody.toString(), HashMap.class);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}