0

저는 제 신청서 중 하나에서 지불 처리를 위해 Paypal을 사용하고 있습니다. 그리고 그것의 일부로 페이팔 IPN을 사용하고 있습니다. 그래서 페이팔 결제가 완료되면 페이팔은 IPN URL (페이팔 사이트에서 구성)로 IPN 메시지를 보냅니다. IPN 메시지가PAYPAL IPN 포스트 백이 INVALID를 반환합니다

mc_gross = 1.00 & protection_eligibility = 대상 & address_status는 = & payer_id = GXZTE5K9VURMU & 세금 = 0.00 & address_street = + 국무부 + + 2050 + 바마코 + 장소 + 워싱턴 %의 2C 확인, 다음과 같다 + DC + 20521-2050 = & PAYMENT_DATE 01% 3A18 3A47 % + 23 % 7월 + 2C + 2016 + PDT PAYMENT_STATUS = & & 완료 캐릭터 윈도우 = 1,252 = 20,521 address_zip & & & FIRST_NAME = 시험 mc_fee = 0.38 = & address_country_code US & address_name = 테스 t + 시험 & notify_version = 3.8 & 사용자 정의 = 3 & payer_status = 확인되지 않은 & 사업 = test.test15 % 40gmail.com & address_country = 연합 + 미국 & address_city = 워싱턴 & 수량 = 1 & verify_sign = ABiBx6LFP1A2IuUu8wF.arqoHdTJA5F1TwzPqOjEd01798Nh2NTTbdU0 & payer_email = testpayer % 40gmail.com txn_id = & & 7AP55204BB503245S PAYMENT_TYPE = 인스턴트 LAST_NAME = & & 테스트 address_state DC = & receiver_email = test.test15 % 40gmail.com payment_fee = & & & receiver_id = T3SDTD8X2SFZW txn_type = web_accept 012 32,249,ITEM_NAME의는 + test.com & mc_currency = EUR & ITEM_NUMBER = & residence_country = 대한 기부 +를 = 미국 & test_ipn = 1 & handling_amount = 0.00 & transaction_subject = & payment_gross = & 운송 = 그래서 0.00 & ipn_track_id = 9f24d51b9d45c

다음 코드를 사용하여 위의 메시지를 Payplal에서 확인하는 동안

<cfset requestData = getHTTPRequestData() /> <!--- getting IPN message ---> 

<cfhttp url="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#URLEncodedFormat(requestData.content)#" resolveurl="false"> 
    <cfhttpparam type="header" name="Host" value="www.sandbox.paypal.com"> 
</cfhttp> 

응답 시간의 90 %는 INVALID로, 나머지 10 %는 응답으로 확인됩니다. 왜 그것이 무효가되는지 확신 할 수 없습니다. 코드에 결함이 없기를 바랍니다. 때때로 VERIFIED를 응답으로 제공하기도합니다. 내가 놓친 게 있니?

또한 IPN 메시지에서 payer_status가 Unverified임을 알 수 있습니다. 이것이 잘못된 응답의 이유입니까 (확실하지 않습니다). 그렇다면 지불 자 상태가 확인되지 않은 이유와이 상태를 확인하는 이유는 무엇입니까?

+0

전체 매개 변수 세트를 한 번에 인코딩하는 것이 올바르지 않습니다. 각각의 이름과 값을 인코딩되지 않은'='로 분리하고 쌍을 인코딩되지 않은'&'로 분리해야합니다. – EJP

+0

예, 확인하겠습니다. 동시에 결제 방법을 확인하는 방법은 무엇입니까? –

답변

1

실제로 콘텐츠가 이미 URL 인코딩되어 있기 때문에 요청을 인코딩하지 않아도됩니다. 요청을 에코하여 IPN을 반복합니다. 문제를 해결하려면 다음을 사용하십시오.

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#requestData.content#