Как настроить Google Pay для моего сайта электронной коммерции django?

У меня есть веб-сайт электронной коммерции, где пользователь может обмениваться изображениями друг с другом. Я пытаюсь достичь следующего: продавец просит покупателя дать ему деньги, покупатель нажимает на прием платежа, а затем настраивает платеж с помощью своего Google. Pay-аккаунт, наконец, продавец будет списан с его аккаунта Google Pay.

Как я могу это сделать? Я использую Django 3.1

Вот моя торговая модель

class Trade(models.Model):
    seller = models.ForeignKey(
        User, related_name='seller', on_delete=models.CASCADE)
    buyer = models.ForeignKey(
        User, related_name='buyer', on_delete=models.CASCADE)
    price = models.IntegerField()
    date = models.DateTimeField(auto_now_add=True)

Вот представление Accept_trade

def accept_trade(request, pk):
    trade = get_object_or_404(Trade, pk=pk)
    if request.method == 'GET':
        return render(request, 'trade/accept_trade.html', {'trade': trade})
    else:
        # PAY
        payment = Payment.objects.create(
            variant='default',
            description= 'A trade',
            total=Decimal(trade.price),
            tax=Decimal(0),
            currency='USD',
            delivery=Decimal(0),
            billing_first_name=trade.buyer.first_name,
            billing_last_name=trade.buyer.last_name,
            customer_ip_address='127.0.0.1'
        )
        payment.save()
        payment.capture()
        payment.release()
        return redirect('home')

мой accept_trade.html

{% extends 'users/base.html' %}

{% block title %}Accept trade | {% endblock title %}


{% block content %}
<div class="shadow-lg p-3 mb-5 col-md-5 bg-white rounded float-right m-4 p-4">
    <p>Seller: {{ trade.seller.username }}</p>
    <p style="color: #2ecc71;">Price: ${{ trade.price }}</p>
</div>
<form action="{% url 'trade:accept_trade' trade.id %}" method="post" class="m-4">
    {% csrf_token%}
    <button type="submit" class="btn btn-success btn-lg" style="padding:10px 30px; border-radius: 200px; margin: 30px; letter-spacing: 1px; word-spacing: 4px;">Pay and get product</button>
</form>
{% endblock content %}

person Community    schedule 26.09.2020    source источник


Ответы (1)


Вы можете использовать https://django-payments.readthedocs.io/en/latest/ сделать это. Так, например, вы можете:

from decimal import Decimal

from payments import get_payment_model

Payment = get_payment_model()
payment = Payment.objects.create(
    variant='default',  # this is the variant from PAYMENT_VARIANTS
    description='Book purchase',
    total=Decimal(120),
    tax=Decimal(20),
    currency='USD',
    delivery=Decimal(10),
    billing_first_name='Sherlock',
    billing_last_name='Holmes',
    billing_address_1='221B Baker Street',
    billing_address_2='',
    billing_city='London',
    billing_postcode='NW1 6XE',
    billing_country_code='UK',
    billing_country_area='Greater London',
    customer_ip_address='127.0.0.1')

# https://django-payments.readthedocs.io/en/latest/usage.html#making-a-payment
person Abhigyan Jaiswal    schedule 26.09.2020
comment
Я следил за документацией, и теперь она говорит мне, что могут быть зафиксированы только платежи со статусом preauth. Что я должен делать? - person ; 26.09.2020
comment
@INeedHelpPlease Check financial-dictionary.thefreedictionary.com/. - person Abhigyan Jaiswal; 26.09.2020
comment
Я не уверен, но думаю, что это работает, у меня мало вопросов, нужно ли перенаправлять пользователя на форму payment_details при совершении платежа? а теперь, когда пользователь платит, как я могу заставить продавца получить его деньги? - person ; 26.09.2020
comment
@INeedHelpPlease, я не уверен, как ваше приложение, поэтому я не могу на это ответить. - person Abhigyan Jaiswal; 26.09.2020