
本文旨在指导开发者如何在 Laravel 控制器中,通过 AJAX GET 请求成功后直接更新数据库,避免额外的 AJAX 请求。文章将详细讲解如何配置 Paystack 支付,处理支付回调,并在控制器中使用获取到的数据更新用户表,并提供示例代码和注意事项,帮助开发者快速实现支付成功后的数据更新功能。
前端支付表单与 AJAX 请求
首先,我们需要创建一个包含 email 和 amount 输入框的支付表单,并集成 Paystack 的 JavaScript 库。当用户提交表单并成功支付后,Paystack 会调用 callback 函数,在该函数中使用 AJAX GET 请求将支付 reference 发送到 Laravel 后端。
注意:
- 将 pk_test_YOUR_PUBLIC_KEY 替换为你的 Paystack 公钥。
- 为了安全起见,建议在服务器端生成唯一的 reference,而不是在客户端。
- 添加了 CSRF token,以防止 CSRF 攻击。需要在 标签中添加 。
后端路由配置
在 routes/web.php 文件中,定义一个 GET 路由来处理 Paystack 的支付验证回调:
Route::get('verify-payment/{reference}', 'UsersController@verify_pay')->name('verify-payment');控制器逻辑
在 UsersController.php 文件中,实现 verify_pay 方法来验证支付并更新数据库。
'Bearer ' . $sec,
'Cache-Control' => 'no-cache',
])->get("https://api.paystack.co/transaction/verify/$reference");
$newData = $response->json();
if ($newData['status'] == true) {
$amount = $newData['data']['amount'] / 100;
$u_input = [];
$u_input['donation_sum'] = $amount;
Auth::user()->update($u_input);
return "paid";
} else {
return "something went wrong";
}
}
}关键点:
- 将 sk_test_YOUR_SECRET_KEY 替换为你的 Paystack 密钥。
- 使用 Http Facade 发送 HTTP 请求,简化了 cURL 的使用。
- 直接访问 $newData['data']['amount'],避免了不必要的数组嵌套。
- 使用单引号 'donation_sum' 作为数组键,这是推荐的做法。
- 使用 Auth::user() 获取当前登录用户,并使用 update() 方法更新数据库。
注意事项和总结
- 安全性: 务必保护好你的 Paystack 密钥,不要将其暴露在客户端代码中。
- 错误处理: 在实际项目中,需要添加更完善的错误处理机制,例如记录日志、返回错误信息给用户等。
- 事务: 如果需要更新多个数据表,建议使用数据库事务,以确保数据的一致性。
- 代码风格: 遵循 Laravel 的代码风格规范,提高代码的可读性和可维护性.
通过以上步骤,你就可以在 Laravel 控制器中,使用 AJAX GET 请求成功后获取的数据直接更新数据库,无需额外的 AJAX 请求,简化了流程并提高了效率。 Remember to replace the placeholder keys with your actual Paystack keys.










