database update after paypal payment

282 views
Skip to first unread message

agoulou...@gmail.com

unread,
Mar 1, 2017, 12:13:40 AM3/1/17
to Django users
hello! I am trying to update my database after paypal has received  the payment from customer. The problem is that I don't really know to do it. This is what I am doing now

here is my model

class SubmitDoc(models.Model):
    Student = 'stu'
    Professional = 'Pro'
    
    Status_CHOICES = (
        (Student, 'Stu'),
        (Professional, 'Pro'),
       
    )
    
    firstName = models.CharField(max_length =100)
    lastName = models.CharField(max_length =100)
    email = models.EmailField()
    Stud_status = models.CharField(
        max_length=3,
        choices=Status_CHOICES,
        default=Student,
    )
    uploadDoc = models.FileField(upload_to='documents/%Y/%m/%d/')   
    comment = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True, editable=False)
    paid = models.BooleanField(default=False)
    finished_read = models.BooleanField(default=False)
    read_by = models.CharField(max_length = 100, default="none")

This is my view function to handle the forms that are submitted

def newSubmit(request):
    save= False
    form = SubmitDocForm(request.POST, request.FILES)
    com =0
    compteur=0
    message ="bon"
    solution = ""
    counted=0
    stud = False
    amount_stu = 0.02
    amount_pro = 0.03
    
   
    if form.is_valid():
        submitDoc = SubmitDoc()
        submitDoc.firstName = form.cleaned_data['firstName'] 
        submitDoc.lastName = form.cleaned_data['lastName']
        submitDoc.email = form.cleaned_data['email']
        submitDoc.Stud_status = form.cleaned_data['Stud_status']
        submitDoc.uploadDoc = form.cleaned_data['uploadDoc'] 
#         submitDoc.like = form.cleaned_data["like"]  
        submitDoc.comment = form.cleaned_data['comment']
        submitDoc.save()
        save = True
#         data = request.FILES["uploadDoc"]
        pathy = submitDoc.uploadDoc.path
        solution= get_docx_text(pathy)
        counted = len(solution.split())
        type_of_doc =  form.cleaned_data['Stud_status']
        
        if  form.cleaned_data['Stud_status'] == "on":
            stud = True
            totals = round(counted*0.02, 2)
        else:
            stud = False
            totals = round(counted *0.03, 2)
        
    else:
        form = SubmitDocForm()
         
    return render(request, 'francais/saved.html', locals())

My problem is that I would like to update the database, the "   paid = models.BooleanField(default=False)"  field to true after the payment is received from paypal.

Here is how I redirect the user to paypal for payment:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="francais...@gmail.com">
<input type="hidden" name="item_name" value="Proofreading">
<input type="hidden" name="currency_code" value="CAD">
<input type="hidden" name="amount" value={{totals}}>
<input type="hidden" name="custom" value="paid">
<input id="id_cancel_return" name="cancel_return" type="hidden" value="http://www.example.com/order/21/">
<input id="id_return_url" name="return" type="hidden" value="http://www.example.com/thank-you">
<input type="submit" class="w3-btn w3-white w3-border w3-border-red w3-round-large" value ="Pay with Paypal" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>

 
    
Please help me to change the paid field to "True".

Melvyn Sopacua

unread,
Mar 1, 2017, 7:11:10 AM3/1/17
to django...@googlegroups.com

On Tuesday 28 February 2017 21:13:39 agoulou...@gmail.com wrote:

> hello! I am trying to update my database after paypal has received

> the payment from customer. The problem is that I don't really know to

> do it. This is what I am doing now

 

This code is all irrelevant. This is the important URL:

> <input id="id_return_url"

> name="return" type="hidden" value="http://www.example.com/thank-you">

 

Wouldn't name it "thank-you" either. That would be the final page, but the flow is:

 

- Submit to PayPal

- At above return_url, receive data from PayPal:

- Check for success / failure

- If success:

set paid to True, redirect to /thank-you

- else:

display error and cart

 

--

Melvyn Sopacua

Mario Gudelj

unread,
Mar 1, 2017, 12:16:38 PM3/1/17
to django...@googlegroups.com
You should use Django-PayPal app. It has views for IPN and PDT, stores transaction details in DB, does TX verification and it fires of a signal when when a successful transaction comes in to your webhook. 

All you have to do is specify some URLs and settings. It'll even render that front end form for you using a Django form. It really is a bomb. 

Cheers,

M



--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/3452662.H3dCPjKHmD%40devstation.
For more options, visit https://groups.google.com/d/optout.

Agoulou Zegouna

unread,
Mar 1, 2017, 9:11:08 PM3/1/17
to django...@googlegroups.com
Thanks all ! I tried to Use django-paypal. can you please give me a concrete example after from step 5 to 6? I have no idea of what to do?


To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/3452662.H3dCPjKHmD%40devstation.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/ZUBd-vcyjrs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

Michael Goytia

unread,
Mar 22, 2017, 10:32:51 PM3/22/17
to Django users
Hello, 

If you still need help please email me and I can assist you. also look at this page

Michael Goytia
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/3452662.H3dCPjKHmD%40devstation.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/ZUBd-vcyjrs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

mab.mo...@gmail.com

unread,
Apr 25, 2018, 2:36:00 PM4/25/18
to Django users
Hello Michael, 

I am having the same problem. I have no problems submitting the data from my website to paypal. I am using Django 2.0.x and just need the django IPN-listener code in an easy to understand way. I want to receive data back from paypal IPN and be able to store it in my database ie customer name, product_id, transaction_date etc. 

I have read http://django-paypal.readthedocs.io but it is difficult to follow and incomplete when it comes to returning the IPN completion. 

Thanks

Marc
Reply all
Reply to author
Forward
0 new messages