{"id":27769,"date":"2021-05-15T11:46:00","date_gmt":"2021-05-15T08:46:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27769"},"modified":"2021-10-18T03:47:02","modified_gmt":"2021-10-18T00:47:02","slug":"integracja-paykun-payment-gateway-w-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/integracja-paykun-payment-gateway-w-laravel\/","title":{"rendered":"Integracja PayKun Payment Gateway w Laravel"},"content":{"rendered":"<p>Prowadzisz sklep internetowy w Indiach? Zapewne poszukujesz bramki p\u0142atniczej, przez kt\u00f3r\u0105 Tw\u00f3j klient mo\u017ce p\u0142aci\u0107 online.<\/p>\n<p><a href=\"https:\/\/paykun.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayKun<\/a> to indyjska bramka p\u0142atnicza, kt\u00f3ra akceptuje p\u0142atno\u015bci online za pomoc\u0105 karty kredytowej, Net Banking, Wallet i UPI. Zapewniaj\u0105 2 rodzaje plan\u00f3w dla handlowc\u00f3w \u2013 Standards i Enterprise. Mo\u017cesz sprawdzi\u0107 ich plan na stronie <a href=\"https:\/\/paykun.com\/pricing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cennika<\/a>. W tym artykule dowiemy si\u0119, jak zintegrowa\u0107 bramk\u0119 p\u0142atno\u015bci PayKun w 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=\"Integracja PayKun Payment Gateway w Laravel\" ><\/a><\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Aby rozpocz\u0105\u0107 integracj\u0119 PayKun w Laravel, musisz najpierw utworzy\u0107 konto na <a href=\"https:\/\/dashboard.paykun.com\/register\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PayKun<\/a>. Po utworzeniu konta wygeneruj klucze API w <strong>Ustawienia-&gt;Zabezpieczenia-&gt;Klucz API<\/strong>.<\/p>\n<p>Zalecamy najpierw spr\u00f3bowa\u0107 integracji z piaskownic\u0105, a je\u015bli wszystko dzia\u0142a zgodnie z oczekiwaniami, przejd\u017a do produkcji. Klucze API sandbox mo\u017cna generowa\u0107 dla \u015brodowiska sandbox w taki sam spos\u00f3b, jak w \u015brodowisku produkcyjnym. Aby wej\u015b\u0107 do pulpitu piaskownicy, kliknij ikon\u0119 w prawym g\u00f3rnym rogu, a nast\u0119pnie \u201eTryb testowy&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=\"Integracja PayKun Payment Gateway w Laravel\" ><\/a><\/p>\n<p>Nast\u0119pnie uzyskaj sw\u00f3j identyfikator sprzedawcy z <strong>Moje konta-&gt;Profil<\/strong>.<\/p>\n<h3>Podstawowa konfiguracja w Laravel do przyjmowania p\u0142atno\u015bci za pomoc\u0105 PayKun<\/h3>\n<p>Aby przetworzy\u0107 p\u0142atno\u015b\u0107 za pomoc\u0105 PayKun, wymagany jest identyfikator sprzedawcy i klucze API. Dodaj wi\u0119c te warto\u015bci do <code>.env<\/code>pliku.<\/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>Kiedy Twoi u\u017cytkownicy dokonuj\u0105 p\u0142atno\u015bci, musisz przechowywa\u0107 ich szczeg\u00f3\u0142y transakcji w bazie danych do p\u00f3\u017aniejszego wykorzystania. Stw\u00f3rzmy wi\u0119c migracj\u0119 za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan make:migration create_payments_table<\/code><\/pre>\n<p>Otw\u00f3rz ten plik migracji i dodaj poni\u017cszy kod w metodzie 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>Uruchom t\u0119 migracj\u0119 za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Ta migracja utworzy w Twojej bazie danych tabel\u0119 \u201ep\u0142atno\u015bci&#8221;. Poniewa\u017c musimy przechowywa\u0107 transakcje w tej tabeli, utw\u00f3rz model 'P\u0142atno\u015b\u0107&#8217; odpowiadaj\u0105cy tabeli 'p\u0142atno\u015bci&#8217;.<\/p>\n<pre><code>php artisan make:model Payment<\/code><\/pre>\n<p>Wszyscy przygotowali\u015bmy podstawow\u0105 konfiguracj\u0119 i mo\u017cemy przyst\u0105pi\u0107 do integracji biblioteki PayKun w naszym projekcie Laravel.<\/p>\n<h3>Integracja PayKun Payment Gateway w Laravel<\/h3>\n<p>PayKun udost\u0119pnia pakiety SDK dla PHP, .NET, Java, Python itp. B\u0119dziemy korzysta\u0107 z ich <a href=\"https:\/\/github.com\/paykun-code\/paykun-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioteki GitHub<\/a> stworzonej dla aplikacji PHP.<\/p>\n<p>Zainstaluj bibliotek\u0119 PayKun w swoim projekcie Laravel za pomoc\u0105 nast\u0119puj\u0105cego polecenia kompozytora:<\/p>\n<pre><code>composer require paykun\/checkout<\/code><\/pre>\n<p>Je\u015bli czytasz na ich stronie GitHub, mo\u017cesz doda\u0107 dowoln\u0105 liczb\u0119 p\u00f3l, takich jak dane klienta, rozliczenia i wysy\u0142ki. Ale na potrzeby samouczka zajmiemy si\u0119 tylko polem kwoty. U\u017cytkownicy mog\u0105 rozszerzy\u0107 formularz zgodnie ze swoimi wymaganiami.<\/p>\n<p><strong>p\u0142atno\u015b\u0107.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>Przekazali\u015bmy adres URL dzia\u0142ania do trasy \u201eop\u0142ata&#8221;. B\u0119dziesz potrzebowa\u0107 kilku tras, takich jak adres URL sukcesu, adres URL nieudany, op\u0142ata itp. Zdefiniujmy to w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<p><strong>trasy\/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>Nast\u0119pn\u0105 rzecz\u0105 do zrobienia jest utworzenie pliku kontrolera, kt\u00f3ry pobierze kwot\u0119, wy\u015ble \u200b\u200bu\u017cytkownika do serwisu PayKun w celu przetworzenia p\u0142atno\u015bci, a nast\u0119pnie wstawi szczeg\u00f3\u0142y transakcji do bazy danych.<\/p>\n<pre><code>php artisan make:controller PaymentController<\/code><\/pre>\n<p>Dodaj poni\u017cszy kod w tym pliku kontrolera, kt\u00f3ry b\u0119dzie obs\u0142ugiwa\u0142 wszystkie rzeczy zwi\u0105zane z p\u0142atno\u015bciami.<\/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>Je\u015bli spojrzysz na kod konstruktora, przekazali\u015bmy ostatni parametr jako \u201efalse&#8221; (warto\u015b\u0107 logiczna). Wchodz\u0105c na \u017cywo, nie musisz przekazywa\u0107 tego parametru. R\u00f3wnie\u017c w trybie produkcyjnym usu\u0144 lub skomentuj poni\u017csz\u0105 lini\u0119 w metodzie \u201eop\u0142aty&#8221;.<\/p>\n<pre><code>$this-&gt;gateway-&gt;setCustomFields(array('udf_1' =&gt; 'test'));<\/code><\/pre>\n<p>Podczas testowania p\u0142atno\u015bci w piaskownicy musisz poda\u0107 fa\u0142szywe numery kart kredytowych, kt\u00f3re otrzymasz <a href=\"https:\/\/devzone.paylane.com\/integration-testing\/test-card-numbers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tutaj<\/a>.<\/p>\n<p>Ot\u00f3\u017c \u200b\u200bto! Mamy nadziej\u0119, \u017ce rozumiesz integracj\u0119 bramki p\u0142atno\u015bci PayKun w Laravel. Chcieliby\u015bmy pozna\u0107 Twoje przemy\u015blenia w sekcji komentarzy poni\u017cej.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule przyjrzymy si\u0119 integracji bramki p\u0142atno\u015bci PayKun w Laravel. PayKun to indyjska bramka p\u0142atnicza, kt\u00f3ra akceptuje p\u0142atno\u015bci kart\u0105 kredytow\u0105, 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":[209,501],"tags":[847],"class_list":["post-27769","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-8","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27769"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27769\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20608"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}