Razorpay 是印度一款广受欢迎的支付解决方案,企业可以通过其产品套件来接收、处理和发放付款。它让你可以使用信用卡、借记卡和网上银行等支付方式。
集成 Razorpay 客户端结账
Razorpay 支付
集成步骤
在你的代码中引入结账脚本
将以下脚本插入到你的页面中 <script type="text/javascript" src="/assets/js/checkout.min.js"></script>
结账脚本会自动获取 Razorpay 结账脚本,并对其 API 进行封装,提供一些语法糖。
在后端创建订单控制器
def get_razorpay_order(self):
controller = get_payment_gateway_controller("Razorpay")
payment_details = {
"amount": 30000,
...
"reference_doctype": "Conference Participant",
"reference_docname": self.name,
...
"receipt": self.name
}
return controller.create_order(**payment_details)
在客户端使用结账 API 发起支付
function make_payment(ticket) {
var options = {
"name": "<checkout modal title>",
"description": "<checkout modal description>",
"image": "<checkout modal logo>",
"prefill": {
"name": "<customer name>",
"email": "<customer email>",
"contact": "<customer phone>"
},
"theme": {
"color": "<modal color>"
},
"doctype": "<reference doctype>", // Mandatory
"docname": "<reference docname mandatory razorpay="new" frappe.checkout.razorpay razorpay.on_open="()"> {
// SCRIPT TO RUN WHEN MODAL OPENS
}
razorpay.on_success = () => {
// SCRIPT TO RUN ON PAYMENT SUCCESS
}
razorpay.on_fail = () => {
// SCRIPT TO RUN ON PAYMENT FAILURE
}
razorpay.init() // Creates the order and opens the modal
}
</reference></reference></modal></customer></customer></customer></checkout></checkout></checkout>
生命周期
- 在后端创建订单
订单首先在服务器端创建,由 razorpay.init() 触发,为此必须为该文档类型创建一个控制器 get_razorpay_order。服务器方法会设置要收取的金额以及一个唯一的收据 ID,供 Razorpay API 使用。
get_razorpay_order 内部会调用 Razorpay 设置文档类型的 create_order 控制器,然后创建一个集成请求并向 https://api.razorpay.com/v1/orders 发送 POST 请求。
- 在客户端处理结账
订单创建成功后,会返回 order_id,该值会与集成请求中的订单关联存储。这个 order_id 会被传递给客户端,从而触发 Razorpay 弹窗。支付完成后,根据支付状态调用成功或失败的 API 方法,并将支付 ID 传递给它。
- 验证支付
API 方法被调用后,交易详情会保存在集成请求中。如果成功,则会调用 authorize_payment 控制器,该控制器使用支付 ID 从 Razorpay API 检查支付状态。一旦授权通过,集成请求会被标记为已完成,随后会调用 reference_doctype 的支付成功钩子。
你可以在他们的文档中了解更多关于 Razorpay 自定义结账的信息