{"id":23801,"date":"2021-05-06T16:24:00","date_gmt":"2021-05-06T13:24:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=23801"},"modified":"2021-10-17T21:15:56","modified_gmt":"2021-10-17T18:15:56","slug":"toistuvien-maksujen-maarittaminen-authorize-net-sivustossa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/toistuvien-maksujen-maarittaminen-authorize-net-sivustossa\/","title":{"rendered":"Toistuvien maksujen m\u00e4\u00e4ritt\u00e4minen Authorize.net-sivustossa"},"content":{"rendered":"<p>Olemme kirjoittaneet artikkelin <a href=\"https:\/\/themewp.inform.click\/fi\/hyvaksy-luottokorttimaksu-kayttamalla-authorize-net-payment-gateway-ohjelmaa-php-ssa\/\" title=\"Hyv\u00e4ksy luottokorttimaksut Authorize.net Payment Gatewayn avulla\" >Hyv\u00e4ksy luottokorttimaksut Authorize.net Payment Gatewayn avulla<\/a>. Tuossa artikkelissa keskustelimme siit\u00e4, miten luottokorttimaksu voidaan vastaanottaa Authorize.net-sivuston kautta. Artikkeli keskittyy my\u00f6s periaatteessa kertamaksuun.<\/p>\n<p>Mutta ent\u00e4 jos joku haluaa integroida toistuvat maksut sovellukseensa? T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka voit m\u00e4\u00e4ritt\u00e4\u00e4 toistuvia maksuja <a href=\"http:\/\/reseller.authorize.net\/application\/103001\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Authorize.net-palvelun avulla<\/a>.<\/p>\n<h3>Mik\u00e4 on toistuva maksu?<\/h3>\n<p>Toistuva tai tilausmaksu tarkoittaa, ett\u00e4 luottokortilta veloitetaan automaattisesti kiinte\u00e4 summa tietyn ajanjakson ja tietyn ajanjakson j\u00e4lkeen.<\/p>\n<p>Oletetaan esimerkiksi, ett\u00e4 k\u00e4yt\u00e4t verkkosivustoasi <a href=\"https:\/\/www.bluehost.com\/track\/artisansweb\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bluehost-<\/a> is\u00e4nn\u00e4ll\u00e4 ja olet maksanut summan ensimm\u00e4iselt\u00e4 vuodelta. Kun suunnitelmasi umpeutuu, Bluehost veloittaa luottokorttimaksusi automaattisesti seuraavaksi vuodeksi (jos olet valinnut toistuvan maksuvaihtoehdon).<\/p>\n<p>Tilaussopimuksen sallimisen etuna on, ett\u00e4 sinun ei tarvitse muistaa k\u00e4ytt\u00e4m\u00e4si palvelun p\u00e4\u00e4ttymisp\u00e4iv\u00e4\u00e4. Palveluntarjoaja pit\u00e4\u00e4 sit\u00e4 automatisoituna j\u00e4rjestelm\u00e4n\u00e4. Kun suunnitelmasi on vanhentunut, he uudistavat palvelusi ottamalla maksut luottokortiltasi taustalla.<\/p>\n<p>T\u00e4m\u00e4n sanotaan, katsotaanpa, kuinka m\u00e4\u00e4ritet\u00e4\u00e4n toistuvat maksut Authorize.net-palvelun avulla.<\/p>\n<p>Sinun tulisi ensin lukea artikkeli <a href=\"https:\/\/themewp.inform.click\/fi\/hyvaksy-luottokorttimaksu-kayttamalla-authorize-net-payment-gateway-ohjelmaa-php-ssa\/\" title=\"Hyv\u00e4ksy luottokorttimaksut Authorize.net-maksuyhdysk\u00e4yt\u00e4v\u00e4n avulla\">Hyv\u00e4ksy luottokorttimaksut Authorize.net-maksuyhdysk\u00e4yt\u00e4v\u00e4n avulla<\/a>. T\u00e4ss\u00e4 artikkelissa olemme keskustelleet <a href=\"https:\/\/github.com\/AuthorizeNet\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Authorize.net SDK -kirjastojen<\/a> asennuksesta ja m\u00e4\u00e4rityksist\u00e4 .<\/p>\n<p>Opetusohjelmassa k\u00e4yt\u00e4mme hiekkalaatikkotili\u00e4. Joten sinun on ensin luotava <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hiekkalaatikkotilisi<\/a> ja hankittava API-avaimet. L\u00f6yd\u00e4t API-avaimesi kohdasta <strong>Tili-&gt; API-<\/strong> tunnukset <strong>ja avaimet<\/strong>.<\/p>\n<h3>Asennus<\/h3>\n<p>Aloittamiseksi meid\u00e4n on asennettava <a href=\"https:\/\/github.com\/AuthorizeNet\/sdk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP SDK -kirjasto<\/a>. Suosittelemme <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composeria<\/a> kirjaston asentamiseen.<\/p>\n<p>Luo <code>composer.json<\/code>tiedosto projektin juurihakemistoon ja lis\u00e4\u00e4 alla oleva koodi siihen.<\/p>\n<p><strong>s\u00e4velt\u00e4j\u00e4.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>Avaa p\u00e4\u00e4te projektin juurihakemistossa ja suorita <code>composer install<\/code>komento. T\u00e4m\u00e4 komento lataa kirjaston riippuvuuden.<\/p>\n<h3>M\u00e4\u00e4rit\u00e4 ymp\u00e4rist\u00f6<\/h3>\n<p>Olemme asentaneet PHP SDK -kirjaston. Nyt luodaan kaksi tiedostoa kutsutaan <code>constants.php<\/code>ja <code>subscriptionpayment.php<\/code>. Tallennamme constants.php-tiedostoon API-avaimet seuraavasti.<\/p>\n<p><strong>vakiot.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>Varmista, ett\u00e4 olet korvannut paikkamerkit YOUR_LOGIN_ID ja YOUR_TRANSACTION_KEY todellisilla arvoilla.<\/p>\n<p><code>subscriptionpayment.php<\/code>on tiedosto, johon kirjoitamme koodin luottokortin tilausmaksuja varten. Voit tehd\u00e4 sen ensin sis\u00e4llytt\u00e4m\u00e4ll\u00e4 kirjaston ydintiedostot.<\/p>\n<p><strong>subscriptionpayment.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>Todellinen koodi toistuville maksuille Authorize.netiss\u00e4<\/h3>\n<p>Authorize.net tarjoaa <a href=\"https:\/\/github.com\/AuthorizeNet\/sample-code-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mallikoodikirjaston<\/a> kehitt\u00e4jille. Opetusohjelmassa k\u00e4yt\u00e4mme viittausta <a href=\"https:\/\/github.com\/AuthorizeNet\/sample-code-php\/blob\/master\/RecurringBilling\/create-subscription.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">RecurringBillingiin<\/a>.<\/p>\n<p>Muutamme <code>createSubscription<\/code>menetelm\u00e4\u00e4 hieman viitekoodista ja kirjoitamme sen seuraavasti.<\/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>Huomaa <code>$response = $controller-&gt;executeWithApiResponse(netauthorizeapiconstantsANetEnvironment::SANDBOX);<\/code>edell\u00e4 olevan menetelm\u00e4n rivi. Kun siirrymme tuotantoon, meid\u00e4n pit\u00e4isi vaihtaa SANDBOX tuotteeksi PRODUCTION t\u00e4ll\u00e4 rivill\u00e4. Lis\u00e4ksi meid\u00e4n on vaihdettava kirjautumistunnuksemme ja tapahtuma-avaimet vastaamaan live-tili\u00e4.<\/p>\n<p>Menetelm\u00e4mme <code>createSubscription<\/code>vie matriisiparametrin, joka meid\u00e4n tulisi rakentaa alla olevalla tavalla.<\/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>K\u00e4yt\u00e4mme testi\u00e4 luottokorttien numeroita tarjotaan <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Testing Guide<\/a>.<\/p>\n<p>V\u00e4litt\u00e4m\u00e4ll\u00e4 taulukon yl\u00e4puolelle funktiolle <code>createSubscription<\/code>se luo 1,00 USD: n tilausmaksun jokaisen 7 p\u00e4iv\u00e4n j\u00e4lkeen 10 laskutusjaksoon saakka.<\/p>\n<h3>Lopullinen koodi<\/h3>\n<p><strong>subscriptionpaymen.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>Toivomme, ett\u00e4 ymm\u00e4rr\u00e4t kuinka m\u00e4\u00e4ritt\u00e4\u00e4 toistuvat maksut Authorize.net-sivustossa. Jaa ajatuksesi alla olevassa kommenttiosassa.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haluatko m\u00e4\u00e4ritt\u00e4\u00e4 toistuvan maksun sovelluksessasi? T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka voit m\u00e4\u00e4ritt\u00e4\u00e4 toistuvia maksuja Authorize.net-palvelun avulla.<\/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":[275],"tags":[843],"class_list":["post-23801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/23801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=23801"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/23801\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20728"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=23801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=23801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=23801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}