네이버 페이 리뷰 API
네이버 측에 문의 하면 sandbox용 인증키를 받습니다.
AccessLicense, SecretKey
그리고 받은 파일의 4. WSDL을 열어 주시고 Naver_Pay_API_MallService41_WSDL(sandbox)_20140925파일 압축 풀어주세요
그럼 파일이 BaseType.xsd, CheckoutAPI.wsdl, MallServiceMessage.xsd 세개의 파일이 나옵니다.
네이버페이 리뷰 리스트 가져오는 메소드는 getPurchaseReviewList입니다.
BaseType.xsd를 켜신 후 MallID로 검색하면 <xs:complexType name="purchaseReview"> 안쪽의 MallID밑에
<xs:element minOccurs="0" name="PurchaseReviewClassType" type="xs:string"/>
추가해주세요 포토 리뷰를 가져오는 파라미터 값을 보내기 위해서 입니다.
<xs:element minOccurs="0" name="Content" type="xs:string"/>
이값도 필요합니다 이미지 경로를 가져오기 위해서 입니다.
<xs:complexType name="purchaseReview">
<xs:sequence>
<xs:element minOccurs="0" name="CreateYmdt" type="xs:dateTime"/>
<xs:element minOccurs="0" name="MallID" type="xs:string"/>
<xs:element minOccurs="0" name="PurchaseReviewClassType" type="xs:string"/>
<xs:element minOccurs="0" name="ModifyYmdt" type="xs:dateTime"/>
<xs:element minOccurs="0" name="ProductID" type="xs:string"/>
<xs:element minOccurs="0" name="ProductName" type="xs:string"/>
<xs:element minOccurs="0" name="ProductOption" type="xs:string"/>
<xs:element minOccurs="0" name="ProductOrderID" type="xs:string"/>
<xs:element minOccurs="0" name="PurchaseReviewId" type="xs:long"/>
<xs:element minOccurs="0" name="PurchaseReviewScore" type="xs:int"/>
<xs:element minOccurs="0" name="Title" type="xs:string"/>
<xs:element minOccurs="0" name="WriterId" type="xs:string"/>
<xs:element minOccurs="0" name="Content" type="xs:string"/>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getPurchaseReviewListRequest">
<xs:complexContent>
<xs:extension base="bs:ListRequestType">
<xs:sequence>
<xs:element minOccurs="0" name="MallID" type="xs:string" />
<xs:element minOccurs="0" name="PurchaseReviewClassType" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
이제 추가할 내용은 끝이고 wsdl를 java파일로 만들겠습니다.
인텔리제이 File -> new -> Project 화면에서 밑으로 내리면 WebServices Client가 있습니다. 버전은 Apache Axis로 변경 해주시고 Next
저장할곳 저장해줍니다.
지정하면 프로젝트가 열리고 Generate Java Code From Wsdl이 뜹니다.
Web service WSDL URL에 wsdl파일을 연결 시키면 됩니다. 그후 ok
이제 기본 파라미터 값같은게 세팅이 되었고 네이버 암호화 툴을 추가해줍니다.네이버에서 제공한 폴더의 3.SampleCode -> java -> SimpleCryptLib(Java)_091105안의 SimpleCryptLib-1.1.0.jar, bcprov-jdk16-138.jar파일을 프로젝트 라이브러리에 넣어서 인식 시킵니다.(Add as Library)
main 패키지 만들고 메인 클래스를 만든후
public class Naverpay {
public static void main(String[] args) throws ServiceException, RemoteException, InterruptedException {
String accessLicense = "첨에 받은 라이센스 키";
String secretKey = "첨에 받은 시크릿키";
String timeStamp;
String serviceName = "MallService41";
String operationName = "GetPurchaseReviewList";
String signature = "";
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
timeStamp = SimpleCryptLib.getTimestamp();
String data = timeStamp + serviceName + operationName;
try {
signature = SimpleCryptLib.generateSign(data, secretKey);
} catch (SignatureException e) {
//서명정보 실패
System.out.println(e.getMessage());
}
AccessCredentialsType accessCredentialsType = new AccessCredentialsType();
accessCredentialsType.setAccessLicense(accessLicense);
accessCredentialsType.setTimestamp(timeStamp);
accessCredentialsType.setSignature(signature);
GetPurchaseReviewListRequest reviewListRequest = new GetPurchaseReviewListRequest();
reviewListRequest.setAccessCredentials(accessCredentialsType);
Calendar from = Calendar.getInstance();
from.add(Calendar.DATE, -1);
int fromYear = from.get(Calendar.YEAR);
int fromMonth = from.get(Calendar.MONTH);
int fromDate = from.get(Calendar.DATE);
Calendar to = Calendar.getInstance();
int toYear = to.get(Calendar.YEAR);
int toMonth = to.get(Calendar.MONTH);
int toDate = to.get(Calendar.DATE);
from.set(fromYear, fromMonth, fromDate, 0, 0, 0);
to.set(toYear, toMonth, toDate, 0, 0, 0);
reviewListRequest.setInquiryTimeFrom(from);
reviewListRequest.setInquiryTimeTo(to);
reviewListRequest.setVersion("4.1");
reviewListRequest.setMallID("계약한 ID");
reviewListRequest.setPurchaseReviewClassType("GENERAL");
GetPurchaseReviewListResponse response = new MallServiceLocator().getMallServiceSOAP11Port().getPurchaseReviewList(reviewListRequest);
System.out.println(response.getResponseType());
//PurchaseReview[] result = response.getPurchaseReviewList();
Thread.sleep(5000);
reviewListRequest.setPurchaseReviewClassType("PREMIUM");
GetPurchaseReviewListResponse response1 = new MallServiceLocator().getMallServiceSOAP11Port().getPurchaseReviewList(reviewListRequest);
System.out.println(response1.getResponseType());
//PurchaseReview[] result1 = response1.getPurchaseReviewList();
//Arrays.asList(result).stream().forEach(r -> System.out.println(r));
}
}
샌드박스 테스트가 끝나면 프로덕션 테스트를 하고 싶다고 네이버 측에 요청하면 라이센스키와 인증키를 새로 보내줍니다.
샌드박스 테스트에서 라이센스와 인증키만 바꾸고 저 코드대로라면 11코드를 사용하니까 MallServiceLocator에서 MallServiceSOAP11Port_address에서 주소만 변경 하면 됩니다.
http://sandbox.api.naver.com/Checkout/MallService41 -> http://ec.api.naver.com/Checkout/MallService41
그러면 실서버로 테스트 완료~!!
댓글
댓글 쓰기