add payment page

This commit is contained in:
Ruidy 2021-01-28 21:43:53 +01:00
parent 2ad33ca153
commit c778eaf8e2
4 changed files with 93 additions and 0 deletions

View file

@ -0,0 +1,68 @@
{% extends 'rental/base.html' %} {% load static %} {% block content %}
<script src="https://js.stripe.com/v3/"></script>
<section class="intro-single">
<div class="container">
<div class="row">
<div class="col-md-12 col-lg-8">
<div class="title-single-box">
<h1 class="title-single">Merci pour votre réservation</h1>
<span class="color-text-a"
>En cliquant sur le bouton ci-dessous vous serez redirigé vers une page de paiement sécurisé.<br />
</span>
</div>
</div>
<div class="col-md-12 col-lg-4">
<nav
aria-label="breadcrumb"
class="breadcrumb-box d-flex justify-content-lg-end"
>
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="{% url 'rental:index' %}">Accueil</a>
</li>
<li class="breadcrumb-item">
<a href="{% url 'rental:list_place' %}">Hébergements</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Paiement
</li>
</ol>
</nav>
</div>
</div>
<div class="property-summary">
<div class="row">
<div class="col-sm-12">
<div class="col-md-12 mb-1">
<button id="checkout-button">Procéder au paiement</button>
</div>
</div>
</div>
</div>
</div>
</section>
<script type="text/javascript">
const stripe = Stripe('pk_test_dRAhoGxhyiGRjuKRMityEI5r');
const checkoutForm = document.getElementById('checkout-form');
checkoutForm.addEventListener('submit', (e) => {
e.preventDefault();
const form = e.currentTarget;
const formData = new FormData(form);
const plainFormData = Object.fromEntries(formData.entries());
const formDataJsonString = JSON.stringify(plainFormData);
fetch('http://127.0.0.1:8000/paiement', {method: 'POST', body: formDataJsonString})
.then((response) => response.json())
.then((session) => stripe.redirectToCheckout({sessionId: session.id}))
.then(({error}) => {
if (error) {
alert(error.message);
}
})
.catch((error) => console.error('Error:', error));
});
</script>
{% endblock %}

View file

@ -17,6 +17,7 @@ urlpatterns = [
path('contact/', contact.view, name='contact'),
path('reservation/', booking.view, name='reservation'),
path('paiement/', booking.pay, name='payment'),
path('', place.index, name='index'),
path('hebergements/', place.all, name='list_place'),

View file

@ -7,7 +7,30 @@ from rental.forms.booking import BookingForm
from rental.models.booking import Booking
from rental.models.guest import Guest
from rental.models.place import Place
import stripe
def pay(request):
if request.method == 'GET':
return render(request, 'rental/pay.html', {})
session = stripe.checkout.Session.create(
payment_method_types=["card"],
line_items=[
{
"price_data": {
"currency": "eur",
"product_data": {"name": "Nassira Basmaison: Réservation du 28/01/2021 au 8/02/2021"},
"unit_amount": 91300,
},
"quantity": 1,
}
],
mode="payment",
success_url="http://villafleuriegp.com/",
cancel_url="http://villafleuriegp.com/paiement",
)
return {"id": session.id}
def view(request):
"""Return initial booking form."""

View file

@ -32,6 +32,7 @@ rsa==4.0
six==1.14.0
soupsieve==2.0
sqlparse==0.3.1
stripe==2.55.1
uritemplate==3.0.1
urllib3==1.25.8
vine==1.3.0