2014-11-19 2 views
0

내 전자 상거래 사이트에 django paypal을 사용하고 있으며 지불이 모두 올바르게 작동하지만 결제가 완료되면 내 site.Am이 내 localhost.is에서 페이팔 IPN을 사용하여 다시 리디렉션되지 않습니다. 내 로컬 컴퓨터에서 실행, 다음은 페이팔로 데이터를 보내는 코드입니다.Django 페이팔과 함께

데프 paypalipn (요청, item_check_callable = 없음) :보기에 따라

def checkout(request,name): 
    product=Products.objects.get(name=name) 
    print "producttttttttttttttttttttt",product 
    # What you want the button to do. 
    paypal_dict = { 
     "business": settings.PAYPAL_RECEIVER_EMAIL, 
     "amount": product.price, 
     "item_name": product.name, 
     "invoice": "unique-invoice-id", 
     "notify_url": "192.168.5.108:8000" + reverse('paypalipn'), 
     "return_url": "192.168.5.108:8000/payment-complete/", 
     "cancel_return": "192.168.5.108:8000", 

    } 
    form = PayPalPaymentsForm(initial=paypal_dict) 
    context = {"form": form} 
    return render_to_response("payment.html", context) 

페이팔 IPN에서 데이터를 얻기위한 는 IPN를 저장하는 장고 페이팔보기를 '' '. 알림 URL은이보기를 제외합니다. 트랜잭션을 확인하는 두 프로 페이팔 지불 및 지불 표준에서 사용 인쇄 "haaaaaaaaaaaaaaaaaaaaaaaaaaiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" "" " 페이팔 IPN 엔드 포인트 (notify_url). 을 '' '. http://tinyurl.com/d9vu9d

PayPal IPN Simulator: 
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session 
""" 
#TODO: Clean up code so that we don't need to set None here and have a lot 
#  of if checks just to determine if flag is set. 
flag = None 
ipn_obj = None 

# Clean up the data as PayPal sends some weird values such as "N/A" 
# Also, need to cope with custom encoding, which is stored in the body (!). 
# Assuming the tolerate parsing of QueryDict and an ASCII-like encoding, 
# such as windows-1252, latin1 or UTF8, the following will work: 

encoding = request.POST.get('charset', None) 

if encoding is None: 
    flag = "Invalid form - no charset passed, can't decode" 
    data = None 
else: 
    try: 
     data = QueryDict(request.body, encoding=encoding) 
    except LookupError: 
     data = None 
     flag = "Invalid form - invalid charset" 

if data is not None: 
    date_fields = ('time_created', 'payment_date', 'next_payment_date', 
        'subscr_date', 'subscr_effective') 
    for date_field in date_fields: 
     if data.get(date_field) == 'N/A': 
      del data[date_field] 

    form = PayPalIPNForm(data) 
    if form.is_valid(): 
     try: 
      #When commit = False, object is returned without saving to DB. 
      ipn_obj = form.save(commit=False) 
     except Exception, e: 
      flag = "Exception while processing. (%s)" % e 
    else: 
     flag = "Invalid form. (%s)" % form.errors 

if ipn_obj is None: 
    ipn_obj = PayPalIPN() 

#Set query params and sender's IP address 
ipn_obj.initialize(request) 

if flag is not None: 
    #We save errors in the flag field 
    ipn_obj.set_flag(flag) 
else: 
    # Secrets should only be used over SSL. 
    if request.is_secure() and 'secret' in request.GET: 
     ipn_obj.verify_secret(form, request.GET['secret']) 
    else: 
     ipn_obj.verify(item_check_callable) 
ipn_obj.save() 
return HttpResponse("OKAY") 

Plese 도움말 ???

답변

0

로컬 호스트에서 작업 중이므로 개발 서버로 이동했을 때 문제가 발생했습니다. 사이트가 내 사이트로 리디렉션되었습니다.

관련 문제