이번 프로젝트에 이니시스 결재 모듈을 추가하는 작업을 진행했습니다.
이니시스 결재시 페이지로 파라미터 값(상품명)을 보낼 때 한글이 나오지 않는 부분이 있었습니다.
열심히 테스트헤보니 iOS (UFT-8) -> 이니시스 결재 처리 웹 (EUC-KR) -> 이니시스 결재 페이지 (UTF-8) 이런식으로 처리되는 것 같은데..
iOS(UTF-8) 에서 EUC-KR로 처리시 UTF-8에 있는 한글 코드가 EUK-KR 코드에 없기 때문에 누락되는 것을 확인했습니다.
그래서 저는 UTF-8를 EUC-KR로 바꿔서 전달했더니 이니시스 결재 페이지에 이상한 글자가 나타는 것이었습니다.
UTF8 -> EUC-KR 변환 코드
func stringToEuckrString(stringValue: String) -> String {
let encoding:UInt = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(
CFStringEncodings.EUC_KR.rawValue))
let encodedData = stringValue.data(using: String.Encoding(rawValue: encoding))!
let attributedString = try? NSAttributedString(data: encodedData, options:[:], documentAttributes: nil)
if let _ = attributedString {
return attributedString!.string
} else {
return ""
}
}
여러 삽질을 하다가 UFT8 -> EUC-KR로는 변환이 가능하나, EUC-KR -> UFT8은 변환이 불가능 하다는 것을 알게 되었습니다.
이니시스에 문의를 하니 그쪽에서도 딱히 답변을 받지 못했고, iOS경우 예제 소스도 없어 구현에 어려움을 겪었습니다.
그래서 아이폰 개발자 오픈 채팅방에 문의를 하니 인코딩 문제로 고생하신 분들이 많더라군요.
결국 가장 많이 추천하는 방법은 아엠포트라는 서비스를 이용하는 것이었습니다.
하나의 PG사를 사용할 경우 무료이고, 많은 분들이 사용하고 있어 안정성에도 문제가 없어보였습니다.
만약 결재모듈을 추가하고자 할 때는 아엠포트를 적용하는 것을 고려해보는 것이 어떨까 합니다.
아엠포트에 있는 iOS 예제 역시 조금 부족한 부분이 있는데, 구현이 끝나면 예제를 포스팅 해보겠습니다.
+ 내용추가 2016.12.02
이니시스를 직접 붙히고 싶다면, 일단 웹뷰로 상품 결재 페이지를 만들어주고, 웹뷰안에서 이니시스 결재창으로 이동시키면 인코딩 문제를 해결할수 있습니다.
'Programer > iOS' 카테고리의 다른 글
[Swift] Label안에 Image넣기 (0) | 2017.09.05 |
---|---|
[Swift] 클로저 (Closure) (0) | 2017.02.28 |
[Swift] iOS앱 개발 전 반드시 알아야할 3가지 라이브러리 (0) | 2016.11.11 |
[Auyolayout] 오토레이아웃 유용한 팁 모음 (0) | 2016.10.24 |
[Swift] 옵셔널(Optional) 정리 (0) | 2016.10.24 |