{"id":27277,"date":"2021-05-06T17:15:00","date_gmt":"2021-05-06T14:15:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27277"},"modified":"2021-10-18T03:49:40","modified_gmt":"2021-10-18T00:49:40","slug":"jak-skonfigurowac-platnosci-cykliczne-w-authorize-net","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-skonfigurowac-platnosci-cykliczne-w-authorize-net\/","title":{"rendered":"Jak skonfigurowa\u0107 p\u0142atno\u015bci cykliczne w Authorize.net"},"content":{"rendered":"<p>Napisali\u015bmy artyku\u0142 <a href=\"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-bramki-platnosci-authorize-net-w-php\/\" title=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.net\">Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.net<\/a>. W tym artykule om\u00f3wili\u015bmy, w jaki spos\u00f3b mo\u017cna otrzyma\u0107 p\u0142atno\u015b\u0107 kart\u0105 kredytow\u0105 za po\u015brednictwem Authorize.net. Ponadto ten artyku\u0142 zasadniczo dotyczy jednorazowej p\u0142atno\u015bci.<\/p>\n<p>A co, je\u015bli kto\u015b chce zintegrowa\u0107 p\u0142atno\u015bci cykliczne w swojej aplikacji? W tym artykule pokazujemy, jak skonfigurowa\u0107 p\u0142atno\u015bci cykliczne za pomoc\u0105 <a href=\"http:\/\/reseller.authorize.net\/application\/103001\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Authorize.net<\/a>.<\/p>\n<h3>Co to jest p\u0142atno\u015b\u0107 cykliczna?<\/h3>\n<p>P\u0142atno\u015b\u0107 cykliczna lub abonamentowa oznacza automatyczne obci\u0105\u017canie karty kredytowej sta\u0142\u0105 kwot\u0105 po okre\u015blonym czasie i przez okre\u015blony czas.<\/p>\n<p>Za\u0142\u00f3\u017cmy na przyk\u0142ad, \u017ce prowadzisz swoj\u0105 witryn\u0119 na hostingu <a href=\"https:\/\/www.bluehost.com\/track\/artisansweb\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bluehost<\/a> i zap\u0142aci\u0142e\u015b kwot\u0119 za pierwszy rok. Kiedy Tw\u00f3j plan wyga\u015bnie, Bluehost automatycznie obci\u0105\u017cy Twoj\u0105 kart\u0119 kredytow\u0105 za nast\u0119pny rok (je\u015bli wybra\u0142e\u015b opcj\u0119 p\u0142atno\u015bci cyklicznych).<\/p>\n<p>Zalet\u0105 zezwolenia na abonament jest to, \u017ce nie musisz pami\u0119ta\u0107 daty wyga\u015bni\u0119cia us\u0142ugi, z kt\u00f3rej korzystasz. Us\u0142ugodawca utrzymuje to jako zautomatyzowany system. Gdy Tw\u00f3j plan wyga\u015bnie, odnawiaj\u0105 Twoj\u0105 us\u0142ug\u0119, pobieraj\u0105c p\u0142atno\u015bci z Twojej karty kredytowej w tle.<\/p>\n<p>Powiedziawszy to, zobaczmy, jak skonfigurowa\u0107 p\u0142atno\u015bci cykliczne za pomoc\u0105 Authorize.net.<\/p>\n<p>Powiniene\u015b najpierw przeczyta\u0107 nasz artyku\u0142 <a href=\"https:\/\/themewp.inform.click\/pl\/akceptuj-platnosci-karta-kredytowa-za-pomoca-bramki-platnosci-authorize-net-w-php\/\" title=\"Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.net\">Akceptuj p\u0142atno\u015bci kart\u0105 kredytow\u0105 za pomoc\u0105 bramki p\u0142atno\u015bci Authorize.net<\/a>. W tym artykule om\u00f3wili\u015bmy instalacj\u0119 i konfiguracj\u0119 <a href=\"https:\/\/github.com\/AuthorizeNet\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bibliotek Authorize.net SDK<\/a>.<\/p>\n<p>W naszym samouczku u\u017cywamy konta piaskownicy. Dlatego powiniene\u015b najpierw utworzy\u0107 <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">konto Sandbox<\/a> i zdoby\u0107 klucze API. Mo\u017cesz znale\u017a\u0107 swoje klucze API w <strong>Konto-&gt;Po\u015bwiadczenia i klucze API<\/strong>.<\/p>\n<h3>Instalacja<\/h3>\n<p>Aby rozpocz\u0105\u0107, musimy zainstalowa\u0107 <a href=\"https:\/\/github.com\/AuthorizeNet\/sdk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bibliotek\u0119 PHP SDK<\/a>. Do instalacji biblioteki zalecamy <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>.<\/p>\n<p>Utw\u00f3rz <code>composer.json<\/code>plik w katalogu g\u0142\u00f3wnym projektu i dodaj do niego poni\u017cszy kod.<\/p>\n<p><strong>kompozytor.json<\/strong><\/p>\n<pre><code>{\n\u00a0\u00a0\u00a0\u00a0\"require\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"php\": \"&gt;=5.6\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"authorizenet\/authorizenet\": \"~1.9.6\"\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Otw\u00f3rz terminal w katalogu g\u0142\u00f3wnym projektu i uruchom <code>composer install<\/code>polecenie. To polecenie pobierze zale\u017cno\u015b\u0107 biblioteki.<\/p>\n<h3>Skonfiguruj \u015brodowisko<\/h3>\n<p>Zainstalowali\u015bmy bibliotek\u0119 PHP SDK. Teraz utw\u00f3rz dwa pliki o nazwie <code>constants.php<\/code>i <code>subscriptionpayment.php<\/code>. W pliku constants.php przechowujemy nasze klucze API w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<p><strong>sta\u0142e.php<\/strong><\/p>\n<pre><code>&lt;?php\ndefine('ANET_LOGIN_ID', 'YOUR_LOGIN_ID');\ndefine('ANET_TRANSACTION_KEY', 'YOUR_TRANSACTION_KEY');\n?&gt;<\/code><\/pre>\n<p>Upewnij si\u0119, \u017ce zast\u0105pi\u0142e\u015b symbole zast\u0119pcze YOUR_LOGIN_ID i YOUR_TRANSACTION_KEY rzeczywistymi warto\u015bciami.<\/p>\n<p><code>subscriptionpayment.php<\/code>to plik, w kt\u00f3rym napiszemy kod do p\u0142atno\u015bci abonamentowych kart\u0105 kredytow\u0105. Aby to zrobi\u0107 najpierw musimy do\u0142\u0105czy\u0107 podstawowe pliki z biblioteki.<\/p>\n<p><strong>subskrypcjapayment.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"constants.php\";\n\u00a0\nuse netauthorizeapicontractv1 as AnetAPI;\nuse netauthorizeapicontroller as AnetController;\n?&gt;<\/code><\/pre>\n<h3>Rzeczywisty kod p\u0142atno\u015bci cyklicznych w Authorize.net<\/h3>\n<p>Authorize.net udost\u0119pnia <a href=\"https:\/\/github.com\/AuthorizeNet\/sample-code-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przyk\u0142adow\u0105 bibliotek\u0119 kodu<\/a> do odniesienia dla programist\u00f3w. W naszym samouczku u\u017cywamy odwo\u0142ania <a href=\"https:\/\/github.com\/AuthorizeNet\/sample-code-php\/blob\/master\/RecurringBilling\/create-subscription.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">RecurringBilling<\/a>.<\/p>\n<p>Lekko modyfikujemy <code>createSubscription<\/code>metod\u0119 z kodu referencyjnego i piszemy j\u0105 w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>function createSubscription($arr_data = [])\n{\n\u00a0\u00a0\u00a0\u00a0extract($arr_data);\n\u00a0\u00a0\u00a0\u00a0\/* Create a merchantAuthenticationType object with authentication details\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0retrieved from the constants file *\/\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication = new AnetAPIMerchantAuthenticationType();\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication-&gt;setName(ANET_LOGIN_ID);\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication-&gt;setTransactionKey(ANET_TRANSACTION_KEY);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Set the transaction's refId\n\u00a0\u00a0\u00a0\u00a0$refId = 'ref'. time();\n\u00a0\u00a0\u00a0\u00a0\/\/ Subscription Type Info\n\u00a0\u00a0\u00a0\u00a0$subscription = new AnetAPIARBSubscriptionType();\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setName(\"Sample Subscription\");\n\u00a0\u00a0\u00a0\u00a0$interval = new AnetAPIPaymentScheduleTypeIntervalAType();\n\u00a0\u00a0\u00a0\u00a0$interval-&gt;setLength($intervalLength);\n\u00a0\u00a0\u00a0\u00a0$interval-&gt;setUnit(\"days\");\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule = new AnetAPIPaymentScheduleType();\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setInterval($interval);\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setStartDate(new DateTime($start_date));\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setTotalOccurrences($totalcycles);\n\u00a0\u00a0\u00a0\u00a0\/\/$paymentSchedule-&gt;setTrialOccurrences(\"1\");\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setPaymentSchedule($paymentSchedule);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setAmount($amount);\n\u00a0\u00a0\u00a0\u00a0\/\/$subscription-&gt;setTrialAmount(\"0.00\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$creditCard = new AnetAPICreditCardType();\n\u00a0\u00a0\u00a0\u00a0$creditCard-&gt;setCardNumber($card_number);\n\u00a0\u00a0\u00a0\u00a0$creditCard-&gt;setExpirationDate($expiry_date);\n\u00a0\u00a0\u00a0\u00a0$payment = new AnetAPIPaymentType();\n\u00a0\u00a0\u00a0\u00a0$payment-&gt;setCreditCard($creditCard);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setPayment($payment);\n\u00a0\u00a0\u00a0\u00a0$order = new AnetAPIOrderType();\n\u00a0\u00a0\u00a0\u00a0$order-&gt;setInvoiceNumber(mt_rand(10000, 99999));\u00a0\u00a0 \/\/generate random invoice number\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0$order-&gt;setDescription(\"Daily Subscription For 1 USD\"); \n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setOrder($order); \n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$billTo = new AnetAPINameAndAddressType();\n\u00a0\u00a0\u00a0\u00a0$billTo-&gt;setFirstName($first_name);\n\u00a0\u00a0\u00a0\u00a0$billTo-&gt;setLastName($last_name);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setBillTo($billTo);\n\u00a0\u00a0\u00a0\u00a0$request = new AnetAPIARBCreateSubscriptionRequest();\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setmerchantAuthentication($merchantAuthentication);\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setRefId($refId);\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setSubscription($subscription);\n\u00a0\u00a0\u00a0\u00a0$controller = new AnetControllerARBCreateSubscriptionController($request);\n\u00a0\u00a0\u00a0\u00a0$response = $controller-&gt;executeWithApiResponse( netauthorizeapiconstantsANetEnvironment::SANDBOX);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (($response != null) &amp;&amp; ($response-&gt;getMessages()-&gt;getResultCode() == \"Ok\")) \u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"SUCCESS: Subscription ID: \". $response-&gt;getSubscriptionId(). \"n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0else\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"ERROR :\u00a0 Invalid responsen\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$errorMessages = $response-&gt;getMessages()-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Response: \". $errorMessages[0]-&gt;getCode(). \"\u00a0 \" .$errorMessages[0]-&gt;getText(). \"n\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0return $response;\n}<\/code><\/pre>\n<p>Zwr\u00f3\u0107 uwag\u0119 na lini\u0119 <code>$response = $controller-&gt;executeWithApiResponse(netauthorizeapiconstantsANetEnvironment::SANDBOX);<\/code>z powy\u017cszej metody. Kiedy przechodzimy do produkcji, w tej linii nale\u017cy zmieni\u0107 PIASKOWNIC\u0118 na PRODUKCJ\u0118. Musimy r\u00f3wnie\u017c zmieni\u0107 nasz identyfikator logowania i klucze transakcyjne, aby pasowa\u0142y do \u200b\u200bnaszego rachunku rzeczywistego.<\/p>\n<p>Nasza metoda <code>createSubscription<\/code>pobiera parametr tablicowy, kt\u00f3ry powinni\u015bmy zbudowa\u0107 poni\u017cej.<\/p>\n<pre><code>$arr_subscription = [\n\u00a0\u00a0\u00a0\u00a0'intervalLength' =&gt; 7, \/\/ Here 7 means recurring payment occurs after each 7 days\n\u00a0\u00a0\u00a0\u00a0'start_date' =&gt; date('Y-m-d'),\n\u00a0\u00a0\u00a0\u00a0'totalcycles' =&gt; 10, \/\/Billing cycles. Here 10 means 10 transactions\n\u00a0\u00a0\u00a0\u00a0'amount' =&gt; 1.00,\n\u00a0\u00a0\u00a0\u00a0'card_number' =&gt; '4111111111111111',\n\u00a0\u00a0\u00a0\u00a0'expiry_date' =&gt; '2020-12',\n\u00a0\u00a0\u00a0\u00a0'first_name' =&gt; 'John',\n\u00a0\u00a0\u00a0\u00a0'last_name' =&gt; 'Smith'\n];<\/code><\/pre>\n<p>U\u017cywamy testowych numer\u00f3w kart kredytowych podanych w <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Przewodniku testowania<\/a>.<\/p>\n<p>Przekazuj\u0105c powy\u017csz\u0105 tablic\u0119 do funkcji <code>createSubscription<\/code>utworzy op\u0142at\u0119 abonamentow\u0105 w wysoko\u015bci 1,00 USD po ka\u017cdych 7 dniach do 10 cykli rozliczeniowych.<\/p>\n<h3>Kod ko\u0144cowy<\/h3>\n<p><strong>subskrypcjapaymen.phpt<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"constants.php\";\n\u00a0\nuse netauthorizeapicontractv1 as AnetAPI;\nuse netauthorizeapicontroller as AnetController;\n\u00a0\n$arr_subscription = [\n\u00a0\u00a0\u00a0\u00a0'intervalLength' =&gt; 7,\n\u00a0\u00a0\u00a0\u00a0'start_date' =&gt; date('Y-m-d'),\n\u00a0\u00a0\u00a0\u00a0'totalcycles' =&gt; 10,\n\u00a0\u00a0\u00a0\u00a0'amount' =&gt; 1.00,\n\u00a0\u00a0\u00a0\u00a0'card_number' =&gt; '4111111111111111',\n\u00a0\u00a0\u00a0\u00a0'expiry_date' =&gt; '2020-12',\n\u00a0\u00a0\u00a0\u00a0'first_name' =&gt; 'John',\n\u00a0\u00a0\u00a0\u00a0'last_name' =&gt; 'Smith'\n];\n\u00a0\ncreateSubscription($arr_subscription);\n\u00a0\nfunction createSubscription($arr_data = [])\n{\n\u00a0\u00a0\u00a0\u00a0extract($arr_data);\n\u00a0\u00a0\u00a0\u00a0\/* Create a merchantAuthenticationType object with authentication details\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0retrieved from the constants file *\/\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication = new AnetAPIMerchantAuthenticationType();\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication-&gt;setName(ANET_LOGIN_ID);\n\u00a0\u00a0\u00a0\u00a0$merchantAuthentication-&gt;setTransactionKey(ANET_TRANSACTION_KEY);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Set the transaction's refId\n\u00a0\u00a0\u00a0\u00a0$refId = 'ref'. time();\n\u00a0\u00a0\u00a0\u00a0\/\/ Subscription Type Info\n\u00a0\u00a0\u00a0\u00a0$subscription = new AnetAPIARBSubscriptionType();\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setName(\"Sample Subscription\");\n\u00a0\u00a0\u00a0\u00a0$interval = new AnetAPIPaymentScheduleTypeIntervalAType();\n\u00a0\u00a0\u00a0\u00a0$interval-&gt;setLength($intervalLength);\n\u00a0\u00a0\u00a0\u00a0$interval-&gt;setUnit(\"days\");\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule = new AnetAPIPaymentScheduleType();\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setInterval($interval);\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setStartDate(new DateTime($start_date));\n\u00a0\u00a0\u00a0\u00a0$paymentSchedule-&gt;setTotalOccurrences($totalcycles);\n\u00a0\u00a0\u00a0\u00a0\/\/$paymentSchedule-&gt;setTrialOccurrences(\"1\");\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setPaymentSchedule($paymentSchedule);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setAmount($amount);\n\u00a0\u00a0\u00a0\u00a0\/\/$subscription-&gt;setTrialAmount(\"0.00\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$creditCard = new AnetAPICreditCardType();\n\u00a0\u00a0\u00a0\u00a0$creditCard-&gt;setCardNumber($card_number);\n\u00a0\u00a0\u00a0\u00a0$creditCard-&gt;setExpirationDate($expiry_date);\n\u00a0\u00a0\u00a0\u00a0$payment = new AnetAPIPaymentType();\n\u00a0\u00a0\u00a0\u00a0$payment-&gt;setCreditCard($creditCard);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setPayment($payment);\n\u00a0\u00a0\u00a0\u00a0$order = new AnetAPIOrderType();\n\u00a0\u00a0\u00a0\u00a0$order-&gt;setInvoiceNumber(mt_rand(10000, 99999));\u00a0\u00a0 \/\/generate random invoice number\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0$order-&gt;setDescription(\"Daily Subscription For 1 USD\"); \n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setOrder($order); \n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$billTo = new AnetAPINameAndAddressType();\n\u00a0\u00a0\u00a0\u00a0$billTo-&gt;setFirstName($first_name);\n\u00a0\u00a0\u00a0\u00a0$billTo-&gt;setLastName($last_name);\n\u00a0\u00a0\u00a0\u00a0$subscription-&gt;setBillTo($billTo);\n\u00a0\u00a0\u00a0\u00a0$request = new AnetAPIARBCreateSubscriptionRequest();\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setmerchantAuthentication($merchantAuthentication);\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setRefId($refId);\n\u00a0\u00a0\u00a0\u00a0$request-&gt;setSubscription($subscription);\n\u00a0\u00a0\u00a0\u00a0$controller = new AnetControllerARBCreateSubscriptionController($request);\n\u00a0\u00a0\u00a0\u00a0$response = $controller-&gt;executeWithApiResponse( netauthorizeapiconstantsANetEnvironment::SANDBOX);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (($response != null) &amp;&amp; ($response-&gt;getMessages()-&gt;getResultCode() == \"Ok\")) \u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"SUCCESS: Subscription ID: \". $response-&gt;getSubscriptionId(). \"n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0else\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"ERROR :\u00a0 Invalid responsen\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$errorMessages = $response-&gt;getMessages()-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Response: \". $errorMessages[0]-&gt;getCode(). \"\u00a0 \" .$errorMessages[0]-&gt;getText(). \"n\";\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0return $response;\n}\n?&gt;<\/code><\/pre>\n<p>Mamy nadziej\u0119, \u017ce rozumiesz, jak skonfigurowa\u0107 p\u0142atno\u015bci cykliczne w Authorize.net. Podziel si\u0119 swoimi przemy\u015bleniami 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>Chcesz ustawi\u0107 p\u0142atno\u015b\u0107 cykliczn\u0105 w swojej aplikacji? W tym artykule pokazujemy, jak skonfigurowa\u0107 p\u0142atno\u015bci cykliczne za pomoc\u0105 Authorize.net.<\/p>\n","protected":false},"author":1,"featured_media":20728,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[277],"tags":[847],"class_list":["post-27277","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27277","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=27277"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27277\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20728"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}