3x1io / laravel-paytm-wallet
使用此包轻松集成 Paytm 钱包。此包使用官方的 Paytm PHP SDK。
This package is auto-updated.
Last update: 2024-09-04 14:08:53 UTC
README
对于 Laravel 5.0 使用版本 ^1.0.0
对于 Laravel 6.0 使用版本 ^1.0.0
对于 Laravel 7.0 使用版本 ^1.0.0
对于 Laravel 8.0 使用版本 ^2.0.0
介绍
使用此包,您可以轻松地将 Paytm 钱包集成到您的 Laravel 应用程序中。此包使用官方的 Paytm PHP SDK。
许可证
Laravel Paytm Wallet 是 MIT 许可下开源的软件 MIT 许可证
入门
要开始使用,请使用以下命令将此包添加到您的 composer.json
文件中。
composer require anandsiddharth/laravel-paytm-wallet
配置
注意:对于 Laravel 5.5 及以上版本,自动发现会处理以下配置。
当 Composer 成功安装 Laravel Paytm Wallet 库后,请在您的 config/app.php
配置文件中注册 Anand\LaravelPaytmWallet\PaytmWalletServiceProvider
。
'providers' => [ // Other service providers... Anand\LaravelPaytmWallet\PaytmWalletServiceProvider::class, ],
同时,在您的 app
配置文件中将 PaytmWallet
门面添加到 aliases
数组中。
'aliases' => [ // Other aliases 'PaytmWallet' => Anand\LaravelPaytmWallet\Facades\PaytmWallet::class, ],
将 Paytm 凭证添加到 .env
文件中
PAYTM_ENVIRONMENT=local PAYTM_MERCHANT_ID=YOUR_MERCHANT_ID_HERE PAYTM_MERCHANT_KEY=YOUR_SECRET_KEY_HERE PAYTM_MERCHANT_WEBSITE=YOUR_MERCHANT_WEBSITE PAYTM_CHANNEL=YOUR_CHANNEL_HERE PAYTM_INDUSTRY_TYPE=YOUR_INDUSTRY_TYPE_HERE
再走一步...
在您的 config/services.php
中添加以下配置
'paytm-wallet' => [ 'env' => env('PAYTM_ENVIRONMENT'), // values : (local | production) 'merchant_id' => env('PAYTM_MERCHANT_ID'), 'merchant_key' => env('PAYTM_MERCHANT_KEY'), 'merchant_website' => env('PAYTM_MERCHANT_WEBSITE'), 'channel' => env('PAYTM_CHANNEL'), 'industry_type' => env('PAYTM_INDUSTRY_TYPE'), ],
注意:以下所有凭据均由 Paytm 在商户注册后提供。
Laravel 7 变更
我们的包与 Laravel 7 兼容,但默认 Laravel 安装中已更改 same_site
设置,请确保在 config/session.php
中将 same_site
更改为 null
,否则回调将不会包含 cookies,并且在完成支付时您将被注销。
<?php use Illuminate\Support\Str; return [ /... 'same_site' => null, ];
用法
进行交易
<?php namespace App\Http\Controllers; use PaytmWallet; class OrderController extends Controller { /** * Redirect the user to the Payment Gateway. * * @return Response */ public function order() { $payment = PaytmWallet::with('receive'); $payment->prepare([ 'order' => $order->id, 'user' => $user->id, 'mobile_number' => $user->phonenumber, 'email' => $user->email, 'amount' => $order->amount, 'callback_url' => 'http://example.com/payment/status' ]); return $payment->receive(); } /** * Obtain the payment information. * * @return Object */ public function paymentCallback() { $transaction = PaytmWallet::with('receive'); $response = $transaction->response(); // To get raw response as array //Check out response parameters sent by paytm here -> http://paywithpaytm.com/developer/paytm_api_doc?target=interpreting-response-sent-by-paytm if($transaction->isSuccessful()){ //Transaction Successful }else if($transaction->isFailed()){ //Transaction Failed }else if($transaction->isOpen()){ //Transaction Open/Processing } $transaction->getResponseMessage(); //Get Response Message If Available //get important parameters via public methods $transaction->getOrderId(); // Get order id $transaction->getTransactionId(); // Get transaction id } }
请确保您在接收付款时提到的 callback_url
在您的 routes.php
文件中为 post
,以下是一个示例
Route::post('/payment/status', [App\Http\Controllers\PaytmController::class,'paymentCallback'])->name('status');
重要:callback_url
必须不进行 CSRF 保护 在此处查看如何进行操作
使用订单 ID 获取交易状态/信息
<?php namespace App\Http\Controllers; use PaytmWallet; class OrderController extends Controller { /** * Obtain the transaction status/information. * * @return Object */ public function statusCheck(){ $status = PaytmWallet::with('status'); $status->prepare(['order' => $order->id]); $status->check(); $response = $status->response(); // To get raw response as array //Check out response parameters sent by paytm here -> http://paywithpaytm.com/developer/paytm_api_doc?target=txn-status-api-description if($status->isSuccessful()){ //Transaction Successful }else if($status->isFailed()){ //Transaction Failed }else if($status->isOpen()){ //Transaction Open/Processing } $status->getResponseMessage(); //Get Response Message If Available //get important parameters via public methods $status->getOrderId(); // Get order id $status->getTransactionId(); // Get transaction id } }
启动退款
<?php namespace App\Http\Controllers; use PaytmWallet; class OrderController extends Controller { /** * Initiate refund. * * @return Object */ public function refund(){ $refund = PaytmWallet::with('refund'); $refund->prepare([ 'order' => $order->id, 'reference' => "refund-order-4", // provide refund reference for your future reference (should be unique for each order) 'amount' => 300, // refund amount 'transaction' => $order->transaction_id // provide paytm transaction id referring to this order ]); $refund->initiate(); $response = $refund->response(); // To get raw response as array if($refund->isSuccessful()){ //Refund Successful }else if($refund->isFailed()){ //Refund Failed }else if($refund->isOpen()){ //Refund Open/Processing }else if($refund->isPending()){ //Refund Pending } } }
检查退款状态
<?php namespace App\Http\Controllers; use PaytmWallet; class OrderController extends Controller { /** * Initiate refund. * * @return Object */ public function refund(){ $refundStatus = PaytmWallet::with('refund_status'); $refundStatus->prepare([ 'order' => $order->id, 'reference' => "refund-order-4", // provide reference number (the same which you have entered for initiating refund) ]); $refundStatus->check(); $response = $refundStatus->response(); // To get raw response as array if($refundStatus->isSuccessful()){ //Refund Successful }else if($refundStatus->isFailed()){ //Refund Failed }else if($refundStatus->isOpen()){ //Refund Open/Processing }else if($refundStatus->isPending()){ //Refund Pending } } }
自定义交易处理页面
考虑到现代应用程序的用户界面,此包附带默认的“交易处理页面”过于单调。如果您想修改它,您有这个选项。以下是方法:您只需更改 OrderController
代码中的一行。
<?php namespace App\Http\Controllers; use PaytmWallet; class OrderController extends Controller { /** * Redirect the user to the Payment Gateway. * * @return Response */ public function order() { $payment = PaytmWallet::with('receive'); $payment->prepare([ 'order' => $order->id, 'user' => $user->id, 'mobile_number' => $user->phonenumber, 'email' => $user->email, 'amount' => $order->amount, 'callback_url' => 'http://example.com/payment/status' ]); return $payment->view('your_custom_view')->receive(); }
在这里,$payment->receive()
被替换为 $payment->view('your_custom_view')->receive()
。将 your_custom_view
替换为您位于 resources/views/your_custom_view.blade.php
的视图名称。
并在您的视图文件中确保在 </body>
之前添加以下行代码(即在关闭 body 标签之前),该代码将重定向到支付网关。
@yield('payment_redirect')
以下是一个自定义视图示例
<html> <head> </head> <body> <h1>Custom payment message</h1> @yield('payment_redirect') </body> </html>
这就完了!
你还在这里吗?
我正在开发一个名为 yoheim 的酷炫项目。它是一个集管理和共享 SSH 服务器于一体的协作平台。现在就免费下载并开始使用吧 www.yoheim.com www.yoheim.com