2013-06-27 4 views
2

paypal IPN을 사용하여 지불을 확인할 때 문제가 발생합니다.Paypal IPN INVALID (_notify-validate 및 payer_status가 확인되지 않음)

PayPal은 payer_status를 사용하여 원래 거래를 시작한 Python/Django 사이트로 미확인으로 반환합니다. 이 사이트는 모든 게시 매개 변수와 함께 'https://www.paypal.com/cgi-bin/webscr'으로 다시 게시되고 'cmd'매개 변수는 '_notify-validate'로 설정되어 지불을 확인합니다. PayPal IPN이 INVALID로 반환됩니다.

이것이 맞습니까? 아니면 놓친 것입니까?

요청 파이썬 HTTP 라이브러리를 사용합니다. 나는 대부분의 거래가 그 코드를 ok로 확인했다고 생각하지 않는다.

def paypalIPN(request): 
    post_content = dict(request.POST.copy()) 
    return_data = {'cmd':'_notify-validate'} 

    if not post_content.keys(): 
     raise Http404("Post not found") 

    for key in post_content.keys(): 
     return_data[key]=post_content[key][0] 

    paypal_url = "https://www.paypal.com/cgi-bin/webscr" 

    response = requests.post(paypal_url, data=return_data) 
+0

나는 그것이 이론에서 정확하다고 생각한다. 코드를 게시 할 수 있습니까? –

답변

2

나는 당신이 post_content DICT 반복에 의해 return_datacmd 키/값을 덮어 쓰는 것 같아요. 네가 그럴 필요가 있다고 생각하지 않아. 그냥 POST 매개 변수의 복사본을 다음 cmd 값을 변경합니다 내가 요청 라이브러리를 사용하고 있지 않다하더라도

parameters = dict(request.POST.copy()) 
parameters['cmd'] = '_notify-validate' 
paypal_url = "https://www.paypal.com/cgi-bin/webscr" 
response = requests.post(paypal_url, data=parameters) 

이것은 본질적으로 내 응용 프로그램에서 할 것입니다.