问题描述
我有一个在线电子商务网站,用户可以在其中相互交换图像 我要达到的目的是:卖方要求买方给他钱,买方单击“接受付款”,然后使用其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)
这是“接受交易”视图
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 %}
解决方法
您可以使用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