{"id":24387,"date":"2021-05-15T12:26:00","date_gmt":"2021-05-15T09:26:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24387"},"modified":"2021-10-18T03:15:35","modified_gmt":"2021-10-18T00:15:35","slug":"integrazione-del-gateway-di-pagamento-paykun-in-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/integrazione-del-gateway-di-pagamento-paykun-in-laravel\/","title":{"rendered":"Integrazione del gateway di pagamento PayKun in Laravel"},"content":{"rendered":"<p>Gestisci un negozio online in India? Allora probabilmente stai cercando un gateway di pagamento attraverso il quale il tuo cliente possa pagare online.<\/p>\n<p><a href=\"https:\/\/paykun.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayKun<\/a> \u00e8 un gateway di pagamento indiano che accetta pagamenti online utilizzando una carta di credito, Net Banking, Wallet e UPI. Forniscono 2 tipi di piani per i commercianti: Standard ed Enterprise. Puoi controllare il loro piano nella pagina dei <a href=\"https:\/\/paykun.com\/pricing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prezzi<\/a>. In questo articolo, studiamo come integrare il gateway di pagamento PayKun in Laravel.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20607-60820dd485eb9.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20607-60820dd485eb9.jpg\" alt=\"Integrazione del gateway di pagamento PayKun in Laravel\" ><\/a><\/p>\n<h3>Iniziare<\/h3>\n<p>Per iniziare con l&#8217;integrazione di PayKun in Laravel, devi prima creare un account su <a href=\"https:\/\/dashboard.paykun.com\/register\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayKun<\/a>. Al momento della creazione dell&#8217;account, generare le chiavi API da <strong>Impostazioni-&gt;Sicurezza-&gt;Chiave API<\/strong>.<\/p>\n<p>Si consiglia innanzitutto di provare l&#8217;integrazione con sandbox e se tutto funziona come previsto, passare alla produzione. Puoi generare chiavi API sandbox per un ambiente sandbox allo stesso modo della produzione. Per accedere alla dashboard sandbox, fai clic sull&#8217;icona nell&#8217;angolo in alto a destra e quindi su &quot;Modalit\u00e0 test&quot;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20607-60820dd4e751e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20607-60820dd4e751e.png\" alt=\"Integrazione del gateway di pagamento PayKun in Laravel\" ><\/a><\/p>\n<p>Quindi, ottieni il tuo ID commerciante da I <strong>miei account-&gt;Profilo<\/strong>.<\/p>\n<h3>Configurazione di base in Laravel per accettare pagamenti utilizzando PayKun<\/h3>\n<p>Per elaborare il pagamento utilizzando PayKun, sono richiesti l&#8217;ID commerciante e le chiavi API. Quindi aggiungi questi valori nel <code>.env<\/code>file.<\/p>\n<pre><code>PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE\nPAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE\nPAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE<\/code><\/pre>\n<p>Quando i tuoi utenti effettuano un pagamento, devi memorizzare i dettagli della loro transazione nel database per un uso successivo. Quindi, creiamo la migrazione usando il comando:<\/p>\n<pre><code>php artisan make:migration create_payments_table<\/code><\/pre>\n<p>Apri questo file di migrazione e aggiungi il codice di seguito nel metodo up.<\/p>\n<pre><code>&lt;?php\n...\n...\n\u00a0\npublic function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('payments', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;bigIncrements('id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payment_id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payer_email');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payer_mobile');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;float('amount', 10, 2);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('payment_status');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Esegui questa migrazione tramite il comando:<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Questa migrazione creer\u00e0 una tabella &quot;pagamenti&quot; nel tuo database. Poich\u00e9 \u00e8 necessario memorizzare le transazioni in questa tabella, creare un modello &quot;Pagamento&quot; corrispondente alla tabella &quot;pagamenti&quot;.<\/p>\n<pre><code>php artisan make:model Payment<\/code><\/pre>\n<p>Abbiamo impostato tutto con la configurazione di base e possiamo procedere con l&#8217;integrazione della libreria PayKun nel nostro progetto Laravel.<\/p>\n<h3>Integrazione del gateway di pagamento PayKun in Laravel<\/h3>\n<p>PayKun fornisce SDK per PHP, .NET, Java, Python, ecc. Useremo la loro <a href=\"https:\/\/github.com\/paykun-code\/paykun-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">libreria GitHub<\/a> creata per le applicazioni PHP.<\/p>\n<p>Installa la libreria PayKun nel tuo progetto Laravel usando il seguente comando composer:<\/p>\n<pre><code>composer require paykun\/checkout<\/code><\/pre>\n<p>Se leggi sulla loro pagina GitHub puoi aggiungere tanti campi come i dettagli del cliente, della fatturazione e della spedizione. Ma per il tutorial, prenderemo solo il campo dell&#8217;importo. Gli utenti possono estendere il modulo secondo le loro esigenze.<\/p>\n<p><strong>payment.blade.php<\/strong><\/p>\n<pre><code>&lt;form action=\"{{ url('charge') }}\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Pay Now\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Abbiamo passato l&#8217;URL dell&#8217;azione al percorso &quot;addebito&quot;. Avrai bisogno di alcuni percorsi come URL di successo, URL non riuscito, addebito, ecc. Definiamolo come segue.<\/p>\n<p><strong>route\/web.php<\/strong><\/p>\n<pre><code>Route::get('payment', 'PaymentController@index');\nRoute::post('charge', 'PaymentController@charge');\nRoute::get('paymentsuccess', 'PaymentController@payment_success');\nRoute::get('paymenterror', 'PaymentController@payment_error');<\/code><\/pre>\n<p>La prossima cosa che deve fare \u00e8 creare un file controller che raccoglier\u00e0 l&#8217;importo, invier\u00e0 un utente al sito Web PayKun per l&#8217;elaborazione del pagamento e infine inserir\u00e0 i dettagli della transazione nel database.<\/p>\n<pre><code>php artisan make:controller PaymentController<\/code><\/pre>\n<p>Aggiungi il codice di seguito in questo file del controller che gestir\u00e0 tutte le cose relative ai pagamenti.<\/p>\n<p><strong>PaymentController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse PaykunCheckoutPayment;\nuse AppPayment as PaymentModel;\n\u00a0\nclass PaymentController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public $gateway;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway = new Payment(env('PAYKUN_MERCHANT_ID'), env('PAYKUN_ACCESS_TOKEN'), env('PAYKUN_KEY_SECRET'), false); \/\/ here we pass last parameter as false to enable sandbox mode.\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('payment');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function charge(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($request-&gt;input('submit'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;setCustomFields(array('udf_1' =&gt; 'test')); \/\/remove or comment this line when go live\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;initOrder('ORD'.uniqid(), 'My Product Name', $request-&gt;input('amount'), url('paymentsuccess'), url('paymenterror'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Add Customer\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;addCustomer('', '', '');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Add Shipping address\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;addShippingAddress('', '', '', '', '');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Add Billing Address\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;gateway-&gt;addBillingAddress('', '', '', '', '');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $this-&gt;gateway-&gt;submit();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function payment_success(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($request-&gt;input('payment-id'))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionData = $this-&gt;gateway-&gt;getTransactionInfo($request-&gt;input('payment-id'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($transactionData['status'])\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_transaction = $transactionData['data']['transaction'];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Check if payment_id already exists in the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$isPaymentExist = PaymentModel::where('payment_id', $arr_transaction['payment_id'])-&gt;first();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!$isPaymentExist)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment = new PaymentModel;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payment_id = $arr_transaction['payment_id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payer_email = $arr_transaction['customer']['email_id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payer_mobile = $arr_transaction['customer']['mobile_no'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;amount = $arr_transaction['order']['gross_amount'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;payment_status = $arr_transaction['status'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment-&gt;save();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return \"Payment is successful. Your transaction id is: \". $arr_transaction['payment_id'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function payment_error(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return \"Something went wrong. Try again later.\";\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Se guardi il codice del costruttore, abbiamo passato l&#8217;ultimo parametro come &#8216;false&#8217; (valore booleano). Quando vai in diretta, non \u00e8 necessario passare questo parametro. Anche sulla modalit\u00e0 di produzione, rimuovere o commentare la riga sottostante nel metodo &quot;addebito&quot;.<\/p>\n<pre><code>$this-&gt;gateway-&gt;setCustomFields(array('udf_1' =&gt; 'test'));<\/code><\/pre>\n<p>Mentre stai testando il pagamento sandbox, devi inserire numeri fittizi di carta di credito che otterrai <a href=\"https:\/\/devzone.paylane.com\/integration-testing\/test-card-numbers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">qui<\/a>.<\/p>\n<p>Questo \u00e8 tutto! Ci auguriamo che tu capisca l&#8217;integrazione del gateway di pagamento PayKun in Laravel. Ci piacerebbe sentire i tuoi pensieri nella sezione commenti qui sotto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo, studiamo l&#8217;integrazione del gateway di pagamento PayKun in Laravel. PayKun \u00e8 un gateway di pagamento indiano che accetta pagamenti con carta di credito, UPI,<\/p>\n","protected":false},"author":1,"featured_media":20608,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[208,500],"tags":[846],"class_list":["post-24387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-7","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/24387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=24387"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/24387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/20608"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=24387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=24387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=24387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}