2014-10-30 4 views
1

입니다. 페이팔 가입, 표준 웹 사이트 버튼을 사용하고 있습니다. 따라서이 질문에 대해서는 새로운 사용자의 사용자 계정을 생성하기 위해 payment_type이 subscr_signup입니다. 내 HTML 버튼 형태는 누군가가 지불을 완료하면, S/그는 우리의 감사로 리디렉션됩니다이 2Paypal IPN return_url의 인증은 유효하지 않지만 notify_url의 인증은

로 설정 http://domain.com/billing/ipn로 설정 "notify_url", "반환"http://domain.com/billing/thankyou로 설정하고, "RM"의 값을 가지고 POST에서 IPN 데이터와 함께 페이지를 표시합니다. 알았어. 하지만 페이팔로 확인하면 무효 응답이 있습니다. 이제 이상한 점이 있습니다. IPN notify_url로 데이터를 가져와야합니다. 맞습니까? 그리고 우리는했지만, 이번에는 Paypal에 확인하는 것으로 VERIFIED를 반환합니다.

전송되는 데이터에 약간의 차이가 있음을 확인했습니다. RETURN에 대한

데이터는 감사 페이지 - (JSON-ified하게) INVALID을 NOTIFY_URL에 대한

{ 
"txn_type": "subscr_signup", 
"subscr_id": "I-HHTJ0ANUHKRU", 
"last_name": "Ismail", 
"residence_country": "CA", 
"mc_currency": "USD", 
"item_name": "Individual eStudio Plan", 
"business": "[email protected]", 
"amount3": "99.00", 
"recurring": "1", 
"address_street": "1 Maire-Victorin", 
"payer_status": "verified", 
"payer_email": "[email protected]", 
"address_status": "confirmed", 
"first_name": "Iszuddin", 
"receiver_email": "[email protected]", 
"address_country_code": "CA", 
"payer_id": "LYRHTKFEH45M8", 
"address_city": "Toronto", 
"reattempt": "1", 
"item_number": "IND", 
"address_state": "Ontario", 
"subscr_date": "22:52:19 Oct 29, 2014 PDT", 
"address_zip": "M5A 1E1", 
"charset": "windows-1252", 
"period3": "1 Y", 
"address_country": "Canada", 
"mc_amount3": "99.00", 
"address_name": "Iszuddin Ismail", 
"auth": "AUjfQ4uRNLr22YfSNPGR1YLm5w81cYyFjf9PEu7mVGSLTp2cFD67opAIXJ-Dtsnw4KEXlF0Y268Ks9VmrwpDRrg", 
"form_charset": "UTF-8" 
} 

데이터가 백엔드 IPN 데이터 - (JSON-ified하게) 확인 됨이

{ 
"txn_type": "subscr_signup", 
"subscr_id": "I-HHTJ0ANUHKRU", 
"last_name": "Ismail", 
"residence_country": "CA", 
"mc_currency": "USD", 
"item_name": "Individual eStudio Plan", 
"business": "[email protected]", 
"amount3": "99.00", 
"recurring": "1", 
"address_street": "1 Maire-Victorin", 
"verify_sign": "Ajiy6YmBz00sV0oT2S-obuaQ3kehAQO0-T8GJFKpiQnaRzRv7.oJ5Eqy", 
"payer_status": "verified", 
"test_ipn": "1", 
"payer_email": "[email protected]", 
"address_status": "confirmed", 
"first_name": "Iszuddin", 
"receiver_email": "[email protected]", 
"address_country_code": "CA", 
"payer_id": "LYRHTKFEH45M8", 
"address_city": "Toronto", 
"reattempt": "1", 
"item_number": "IND", 
"address_state": "Ontario", 
"subscr_date": "22:52:19 Oct 29, 2014 PDT", 
"address_zip": "M5A 1E1", 
"charset": "windows-1252", 
"notify_version": "3.8", 
"period3": "1 Y", 
"address_country": "Canada", 
"mc_amount3": "99.00", 
"address_name": "Iszuddin Ismail", 
"ipn_track_id": "698ae88a36ef9" 
} 

내가 기대합니까 때문에 응답 (확인 됨 또는 잘못됨)으로 인해 Paypal IPN에 대한 인증 코드가 맞다고 생각합니다. 하지만 경우에 따라 여기 내 HTML 버튼 코드가 ​​있습니다.

  <form action="<?php echo $this->url?>" method="post" name="ppform"> 
     <input type="hidden" name="cmd" value="_xclick-subscriptions"> 
     <input type="hidden" name="business" value="<?php echo $this->paypal_email; ?>"> 
     <input type="hidden" name="item_name" value="<?php echo $selected_plan['name'] ?>"> 
     <input type="hidden" name="item_number" value="<?php echo $selected_plan['code'] ?>"> 
     <input type="hidden" name="a3" value="<?php echo $selected_plan['price']; ?>"> <!-- subscription price --> 
     <input type="hidden" name="p3" value="1"> <!-- rebill every x value --> 
     <input type="hidden" name="t3" value="<?php echo $selected_plan['recurring_period'] ?>"> <!-- interval M=month/W=week/Y=year --> 
     <input type="hidden" name="src" value="1"> <!-- Is this recurring 1=yes/0=no --> 
     <input type="hidden" name="currency_code" value="<?php echo $selected_plan['currency'] ?>"> 
     <!-- <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> --> 
     <input type="hidden" name="rm" value="2"> 
     <input type="hidden" name="notify_url" value="<?php echo site_url('billing/ipn') ?>"> 
     <input type="hidden" name="return" value="<?php echo site_url('billing/thankyou') ?>"> 

     </form>  
+0

질문이 불완전하거나 불분명하다고 생각합니다. 아래 의견에 아래 PDT를 사용 했으므로이 정보로 질문을 업데이트해야합니다. [here] (https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNPDTAnAlternativetoIPN/)에서 설명한대로 IPN과 PDT를 모두 구현할 수 있습니다. 사용중인 프로그래밍 언어 (PHP 일 가능성이 무엇입니까?)를 지정하고 응답을 얻을 확률이 높아 지므로 태그를 추가하십시오. 테스트를 위해 Sandbox를 사용하고 있습니까? – bg17aw

+0

일부 코드도 게시하십시오. IPN [here] (https://github.com/paypal/ipn-code-samples) 구현을위한 예제 코드 (PHP, .Net, Coldfusion 등), PDT 구현을위한 예제 코드 [here] (https : // github. co.kr/paypal/pdt-code-samples) – bg17aw

답변

1

return_url는 지불/IPN 정보를받을하지 않습니다. 일반적으로 "고맙습니다, 다시 방문하십시오"라는 정적 페이지 여야합니다.

notify_url으로 IPN 메시지를 확인해야합니다. 수신 된 것과 동일한 방식으로 수신 된 지급 데이터 을 정확히으로 보내야합니다. 좋은 요청에 대해 INVALID 오류가 발생하면 요청을 받고 PHP에 저장하고 다시 전송하는 인코딩을 다시 확인해야합니다. 결제 코드에 PayPal PHP SDK을 사용하여 확인할 수 있습니다.

IPN이 구독 사용자 등록, 지불 처리 등에 관한 메시지를 전송합니다.

+0

도움을 주셔서 감사합니다. 포럼에서, 나는 돌아 오는 트래픽을 처리하기 위해 PDT를 사용하도록 권고 받았다. 그래서 내가 그랬다. 내 시스템은 여전히 ​​IPN 데이터를 백엔드에 기록하고 subscr_signup 및 subscr_payment 트랜잭션 유형을 수신합니다. 그러나 지불이 완료된 후 사용자를 처리하기 위해 필자는 PDT 데이터를 사용합니다. Paypal 계정에서 약간의 설정 업데이트가 필요합니다. 그런 다음 GET tx 매개 변수와 비밀 PDT 토큰을 기반으로 트랜잭션의 전체 데이터를 요청할 수 있습니다. https://developer.paypal.com/docs/classic/products/payment-data-transfer/ –

+0

return_url은 PDT를 사용하는 경우 결제 정보를받을 수 있습니다. – bg17aw