2016-07-08 2 views
-1

IPN 테스트에 상당히 좌절했습니다. 결국 단계별 유효성 검사 필드에서 문제를 지적 할 수 있었지만 시간 스탬프에 + 기호를 처리하는 방법에 대한 도움이 필요합니다.타임 스탬프에서 페이팔 디코드 인코딩 문제 +

내가 디코딩하고 인코딩 할 때 알아 차린 페이팔 요청의 공간은 + 부호가되었습니다. 그래서 % + 20을 + 대신 사용했습니다. 이것은 괜찮아요. 그러나 지불 일 안에 시간대 정보가 있으면 문제가됩니다.

예. 금 2016년 7월 8일 그리니치 표준시 10시 22분 1초 + 0800

매개 변수로 온 (말레이 반도 표준 시간) : 금 % 20Jul %의 2천8% 202,016퍼센트 2,010% 3A22 % 3A01 % 20GMT + 0800 % 20 % 28Malay % 20Peninsula % 20Standard % 20Time % 디코딩 후 29

: 금 2016년 7월 8일 그리니치 표준시 10시 22분 1초 0800 (말레이 반도 표준 시간) < ===== 더하기 기호가없는 .. ...

다시 인코딩 : 금 + 7 월 +08 +2016 + 10 % 3A22 % 3A01 + GMT + 0800 + % 28Malay + Peninsula + Standard + Time % 29

내가 한 행동은 일부 임시 자리 표시자를 사용하여 디코딩하기 전에 + 기호를 재생하는 것입니다. 그런 다음 디코딩/인코딩 한 후에 교체를 되돌립니다.

어떻게 이것을 페이팔로 확인할 수 없었는지.

답변

0

좋아요, 작동하고 있어요 ... 최선의 방법인지는 확실하지 않지만 지금은 작동합니다.

기본적으로 입력 매개 변수 값을 +를 자리 표시 자로 바꾸어 패치합니다.

patchedValue = value.replace("+", "TEMPXXX"); 

.... 

결국 인코딩 후에는 자리 표시자를 % 2B (+ 기호)로 바꿉니다.

.... 
URLEncoder.encode(decodedValue, encoding).replace("+", "%20").replace("TEMPXXX", "%2B")