{"id":49154,"date":"2025-04-25T05:40:41","date_gmt":"2025-04-25T05:40:41","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49154"},"modified":"2025-04-25T05:40:41","modified_gmt":"2025-04-25T05:40:41","slug":"full-working-example-paytm-integration-in-laravel","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/full-working-example-paytm-integration-in-laravel\/","title":{"rendered":"Full Working Example \u2014 Paytm Integration in Laravel"},"content":{"rendered":"\n<p>I&#8217;ll give you a <strong>full working Paytm Payment Gateway integration example<\/strong> in <strong>Laravel<\/strong> \u2014 <strong>step-by-step<\/strong>, including <strong>payment page<\/strong>, <strong>initiate payment<\/strong>, <strong>callback handling<\/strong>, and <strong>success\/failure handling<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\ude80 Full Working Example \u2014 Paytm Integration in Laravel (Latest)<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1. Install Laravel Paytm Package<\/h2>\n\n\n\n<p>First, install a Paytm SDK\/library.<br>I recommend using <code>\"anandsiddharth\/laravel-paytm-wallet\"<\/code> (easy and popular):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">composer <span class=\"hljs-built_in\">require<\/span> anandsiddharth\/laravel-paytm-wallet\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Configure Paytm Keys in <code>.env<\/code><\/h2>\n\n\n\n<p>Add your <strong>Paytm credentials<\/strong> in your <code>.env<\/code> file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">PAYTM_MERCHANT_ID=YourMerchantID\nPAYTM_MERCHANT_KEY=YourMerchantKey\nPAYTM_ENVIRONMENT=local  <span class=\"hljs-comment\"># use 'production' for live<\/span>\nPAYTM_MERCHANT_WEBSITE=WEBSTAGING\nPAYTM_CHANNEL=WEB\nPAYTM_INDUSTRY_TYPE=Retail\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Create Paytm Configuration File<\/h2>\n\n\n\n<p>Publish the config if needed:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">php artisan vendor:publish --provider=<span class=\"hljs-string\">\"Anand\\LaravelPaytmWallet\\PaytmWalletServiceProvider\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>It will create a <code>config\/paytm-wallet.php<\/code> file.<\/p>\n\n\n\n<p>Check it and ensure environment variables are correctly mapped.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Create Paytm Controller<\/h2>\n\n\n\n<p>Now, create a controller to handle payment:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">make<\/span><span class=\"hljs-selector-pseudo\">:controller<\/span> <span class=\"hljs-selector-tag\">PaytmPaymentController<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now edit <code>app\/Http\/Controllers\/PaytmPaymentController.php<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Http<\/span>\\<span class=\"hljs-title\">Controllers<\/span>;\n\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Http<\/span>\\<span class=\"hljs-title\">Request<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Anand<\/span>\\<span class=\"hljs-title\">LaravelPaytmWallet<\/span>\\<span class=\"hljs-title\">Facades<\/span>\\<span class=\"hljs-title\">PaytmWallet<\/span>;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">PaytmPaymentController<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Controller<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">initiatePayment<\/span><span class=\"hljs-params\">()<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> view(<span class=\"hljs-string\">'paytm-payment'<\/span>);\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">pay<\/span><span class=\"hljs-params\">(Request $request)<\/span>\n    <\/span>{\n        $payment = PaytmWallet::with(<span class=\"hljs-string\">'receive'<\/span>);\n\n        $payment-&gt;prepare(&#91;\n            <span class=\"hljs-string\">'order'<\/span> =&gt; <span class=\"hljs-string\">'ORDER_'<\/span> . uniqid(),\n            <span class=\"hljs-string\">'user'<\/span> =&gt; auth()-&gt;id() ?? <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-comment\">\/\/ or your user id<\/span>\n            <span class=\"hljs-string\">'mobile_number'<\/span> =&gt; <span class=\"hljs-string\">'7777777777'<\/span>, <span class=\"hljs-comment\">\/\/ dummy or real<\/span>\n            <span class=\"hljs-string\">'email'<\/span> =&gt; <span class=\"hljs-string\">'test@example.com'<\/span>, <span class=\"hljs-comment\">\/\/ dummy or real<\/span>\n            <span class=\"hljs-string\">'amount'<\/span> =&gt; $request-&gt;amount, <span class=\"hljs-comment\">\/\/ dynamic<\/span>\n            <span class=\"hljs-string\">'callback_url'<\/span> =&gt; route(<span class=\"hljs-string\">'paytm.callback'<\/span>)\n        ]);\n\n        <span class=\"hljs-keyword\">return<\/span> $payment-&gt;receive(); <span class=\"hljs-comment\">\/\/ Redirect to Paytm payment page<\/span>\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">callback<\/span><span class=\"hljs-params\">()<\/span>\n    <\/span>{\n        $transaction = PaytmWallet::with(<span class=\"hljs-string\">'receive'<\/span>);\n        $response = $transaction-&gt;response(); <span class=\"hljs-comment\">\/\/ Response from Paytm<\/span>\n\n        <span class=\"hljs-keyword\">if<\/span> ($transaction-&gt;isSuccessful()) {\n            <span class=\"hljs-comment\">\/\/ Payment Successful<\/span>\n            <span class=\"hljs-keyword\">return<\/span> redirect()-&gt;route(<span class=\"hljs-string\">'payment.success'<\/span>)-&gt;with(<span class=\"hljs-string\">'message'<\/span>, <span class=\"hljs-string\">'Payment Successful'<\/span>);\n        } <span class=\"hljs-keyword\">elseif<\/span> ($transaction-&gt;isFailed()) {\n            <span class=\"hljs-comment\">\/\/ Payment Failed<\/span>\n            <span class=\"hljs-keyword\">return<\/span> redirect()-&gt;route(<span class=\"hljs-string\">'payment.failed'<\/span>)-&gt;with(<span class=\"hljs-string\">'message'<\/span>, <span class=\"hljs-string\">'Payment Failed'<\/span>);\n        }\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">success<\/span><span class=\"hljs-params\">()<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> view(<span class=\"hljs-string\">'payment-success'<\/span>);\n    }\n\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">failed<\/span><span class=\"hljs-params\">()<\/span>\n    <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> view(<span class=\"hljs-string\">'payment-failed'<\/span>);\n    }\n}\n<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Create Routes in <code>web.php<\/code><\/h2>\n\n\n\n<p>Add these routes:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">App<\/span>\\<span class=\"hljs-title\">Http<\/span>\\<span class=\"hljs-title\">Controllers<\/span>\\<span class=\"hljs-title\">PaytmPaymentController<\/span>;\n\nRoute::get(<span class=\"hljs-string\">'\/paytm-payment'<\/span>, &#91;PaytmPaymentController::class, <span class=\"hljs-string\">'initiatePayment'<\/span>])-&gt;name(<span class=\"hljs-string\">'paytm.initiate'<\/span>);\nRoute::post(<span class=\"hljs-string\">'\/paytm-payment'<\/span>, &#91;PaytmPaymentController::class, <span class=\"hljs-string\">'pay'<\/span>])-&gt;name(<span class=\"hljs-string\">'paytm.pay'<\/span>);\nRoute::post(<span class=\"hljs-string\">'\/paytm-callback'<\/span>, &#91;PaytmPaymentController::class, <span class=\"hljs-string\">'callback'<\/span>])-&gt;name(<span class=\"hljs-string\">'paytm.callback'<\/span>);\n\nRoute::get(<span class=\"hljs-string\">'\/payment-success'<\/span>, &#91;PaytmPaymentController::class, <span class=\"hljs-string\">'success'<\/span>])-&gt;name(<span class=\"hljs-string\">'payment.success'<\/span>);\nRoute::get(<span class=\"hljs-string\">'\/payment-failed'<\/span>, &#91;PaytmPaymentController::class, <span class=\"hljs-string\">'failed'<\/span>])-&gt;name(<span class=\"hljs-string\">'payment.failed'<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Exclude Callback from CSRF (Important!)<\/h2>\n\n\n\n<p>In <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>, add:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">protected<\/span> $except = &#91;\n    <span class=\"hljs-string\">'\/paytm-callback'<\/span>,\n];\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>\u2705 This fixes the <strong>419 error<\/strong> you were facing.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Create Blade View for Payment Page<\/h2>\n\n\n\n<p>Create a blade file: <code>resources\/views\/paytm-payment.blade.php<\/code><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-meta\">&lt;!DOCTYPE <span class=\"hljs-meta-keyword\">html<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span>Paytm Payment Gateway<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">title<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h2<\/span>&gt;<\/span>Paytm Payment<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h2<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">form<\/span> <span class=\"hljs-attr\">method<\/span>=<span class=\"hljs-string\">\"POST\"<\/span> <span class=\"hljs-attr\">action<\/span>=<span class=\"hljs-string\">\"{{ route('paytm.pay') }}\"<\/span>&gt;<\/span>\n    @csrf\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">label<\/span>&gt;<\/span>Amount:<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">label<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"text\"<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"amount\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"100\"<\/span> <span class=\"hljs-attr\">required<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">br<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">br<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">button<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"submit\"<\/span>&gt;<\/span>Pay Now<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">button<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">form<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Create Success and Failure Pages<\/h2>\n\n\n\n<p><strong>resources\/views\/payment-success.blade.php<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span>Payment Successful!<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>{{ session('message') }}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>resources\/views\/payment-failed.blade.php<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span>Payment Failed!<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p<\/span>&gt;<\/span>{{ session('message') }}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">p<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udccb Full Flow<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Step<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>\/paytm-payment<\/code><\/td><td>User visits payment page and enters amount.<\/td><\/tr><tr><td><code>\/paytm-payment<\/code> (POST)<\/td><td>User submits, redirected to Paytm payment page.<\/td><\/tr><tr><td>Paytm Payment Page<\/td><td>User makes payment (success\/failure).<\/td><\/tr><tr><td><code>\/paytm-callback<\/code> (POST)<\/td><td>Paytm server sends callback after payment.<\/td><\/tr><tr><td>Success or Failure page<\/td><td>User redirected accordingly.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udfaf Summary<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Item<\/th><th>Status<\/th><\/tr><\/thead><tbody><tr><td>Paytm credentials loaded from <code>.env<\/code> \u2705<\/td><td><\/td><\/tr><tr><td>Laravel Paytm package installed \u2705<\/td><td><\/td><\/tr><tr><td>CSRF excluded for callback \u2705<\/td><td><\/td><\/tr><tr><td>Payment form, controller, routes done \u2705<\/td><td><\/td><\/tr><tr><td>User sees success\/failure after payment \u2705<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udccc Bonus Tips<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Always <strong>log the Paytm callback response<\/strong> for debugging.<\/li>\n\n\n\n<li>Validate Paytm signature (<code>CHECKSUMHASH<\/code>) if needed (package does internally).<\/li>\n\n\n\n<li>Use <strong>unique order IDs<\/strong> every time.<\/li>\n\n\n\n<li>Move Paytm keys into a secure vault if in production.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83c\udfaf Quick Commands for Copying<\/h1>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">composer <span class=\"hljs-built_in\">require<\/span> anandsiddharth\/laravel-paytm-wallet\nphp artisan make:controller PaytmPaymentController\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ll give you a full working Paytm Payment Gateway integration example in Laravel \u2014 step-by-step, including payment page, initiate payment, callback handling, and success\/failure handling. \ud83d\ude80 Full Working Example \u2014&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49154","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49154"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49154\/revisions"}],"predecessor-version":[{"id":49155,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49154\/revisions\/49155"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}