📅  最后修改于: 2023-12-03 15:14:43.737000             🧑  作者: Mango
Razorpay 是一家印度的支付处理公司,提供了一种在线支付解决方案。 Django 中的 Razorpay 集成可以帮助开发人员为他们的 Django 应用程序添加 Razorpay 支付网关。
在开始集成 Razorpay 前,您需要:
在 Django 项目目录中的虚拟环境中安装 Razorpay Python SDK:
pip install razorpay
在 settings.py 文件中添加以下字段:
RAZORPAY_KEY_ID = "YOUR_KEY_ID"
RAZORPAY_KEY_SECRET = "YOUR_KEY_SECRET"
请确保将上述变量替换为您的 Razorpay 密钥 ID 和密钥 SECRET。
创建一个 views.py 文件,并添加以下代码:
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
import razorpay
@csrf_exempt
def create_order(request):
if request.method == 'POST':
amount = int(request.POST['amount'])
client = razorpay.Client(auth=(settings.RAZORPAY_KEY_ID, settings.RAZORPAY_KEY_SECRET))
payment = client.order.create(dict(amount=amount, currency='INR'))
return render(request, "create_order.html", {'payment': payment})
else:
return HttpResponse("Invalid request")
此代码将从 POST 请求中获取订单金额,然后创建一个订单并将其返回到模板中供用户支付。
创建一个 webhook.py 文件,并添加以下代码:
from django.http import HttpResponse
import razorpay
import json
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
client = razorpay.Client(auth=(settings.RAZORPAY_KEY_ID, settings.RAZORPAY_KEY_SECRET))
@csrf_exempt
def handle_payment(request):
if request.method == 'POST':
data = request.body.decode('utf-8')
data_dict = json.loads(data)
order_id = data_dict['payload']['payment']['entity']['order_id']
payment_id = data_dict['payload']['payment']['entity']['id']
payment_amount = data_dict['payload']['payment']['entity']['amount']
payment_capture = client.payment.capture(payment_id, payment_amount)
return HttpResponse("success")
else:
return HttpResponse("Invalid request")
此代码将从 Razorpay webhook 获取付款 ID,然后捕获付款金额。
要使用这些视图,您需要将它们添加到 Django 应用程序的 urls.py 文件中:
from django.contrib import admin
from django.urls import path
from .views import create_order
from .webhook import handle_payment
urlpatterns = [
path('admin/', admin.site.urls),
path('create_order/', create_order),
path('handle_payment/', handle_payment),
]
此代码将创建订单视图“create_order”添加到 /create_order/
的 URL,并将支付处理视图“handle_payment”添加到 /handle_payment/
的 URL。
在 templates 文件夹中,创建一个名为“create_order.html”的模板,并添加以下内容:
{% extends 'base.html' %}
{% block content %}
<h3>付款</h3>
<form action="https://api.razorpay.com/v1/checkout/embedded" method="POST">
<input type="hidden" name="key_id" value="{{ payment.key }}">
<input type="hidden" name="order_id" value="{{ payment.id }}">
<input type="hidden" name="name" value="测试付款">
<input type="hidden" name="description" value="测试">
<input type="hidden" name="image" value="https://via.placeholder.com/50x50.png">
<input type="hidden" name="prefill[name]" value="测试姓名">
<input type="hidden" name="prefill[email]" value="test@example.com">
<input type="hidden" name="prefill[contact]" value="9876543210">
<input type="hidden" name="callback_url" value="{% url 'handle_payment' %}">
<button type="submit" class="btn btn-primary">付款</button>
</form>
{% endblock %}
此模板将通过将表单提交给 Razorpay API 来生成付款表单,从而使用户能够提交付款。
运行 Django 服务器,访问 http://localhost:8000/create_order/
,并输入测试金额。然后单击“付款”按钮。
如果 Razorpay 返回一个成功的响应,则您已成功集成 Razorpay。您可以访问 Razorpay 仪表板以查看任何实际付款。