...
✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Toistuvien maksujen määrittäminen Authorize.net-sivustossa

21

Olemme kirjoittaneet artikkelin Hyväksy luottokorttimaksut Authorize.net Payment Gatewayn avulla. Tuossa artikkelissa keskustelimme siitä, miten luottokorttimaksu voidaan vastaanottaa Authorize.net-sivuston kautta. Artikkeli keskittyy myös periaatteessa kertamaksuun.

Mutta entä jos joku haluaa integroida toistuvat maksut sovellukseensa? Tässä artikkelissa näytämme, kuinka voit määrittää toistuvia maksuja Authorize.net-palvelun avulla.

Mikä on toistuva maksu?

Toistuva tai tilausmaksu tarkoittaa, että luottokortilta veloitetaan automaattisesti kiinteä summa tietyn ajanjakson ja tietyn ajanjakson jälkeen.

Oletetaan esimerkiksi, että käytät verkkosivustoasi Bluehost- isännällä ja olet maksanut summan ensimmäiseltä vuodelta. Kun suunnitelmasi umpeutuu, Bluehost veloittaa luottokorttimaksusi automaattisesti seuraavaksi vuodeksi (jos olet valinnut toistuvan maksuvaihtoehdon).

Tilaussopimuksen sallimisen etuna on, että sinun ei tarvitse muistaa käyttämäsi palvelun päättymispäivää. Palveluntarjoaja pitää sitä automatisoituna järjestelmänä. Kun suunnitelmasi on vanhentunut, he uudistavat palvelusi ottamalla maksut luottokortiltasi taustalla.

Tämän sanotaan, katsotaanpa, kuinka määritetään toistuvat maksut Authorize.net-palvelun avulla.

Sinun tulisi ensin lukea artikkeli Hyväksy luottokorttimaksut Authorize.net-maksuyhdyskäytävän avulla. Tässä artikkelissa olemme keskustelleet Authorize.net SDK -kirjastojen asennuksesta ja määrityksistä .

Opetusohjelmassa käytämme hiekkalaatikkotiliä. Joten sinun on ensin luotava hiekkalaatikkotilisi ja hankittava API-avaimet. Löydät API-avaimesi kohdasta Tili-> API- tunnukset ja avaimet.

Asennus

Aloittamiseksi meidän on asennettava PHP SDK -kirjasto. Suosittelemme Composeria kirjaston asentamiseen.

Luo composer.jsontiedosto projektin juurihakemistoon ja lisää alla oleva koodi siihen.

säveltäjä.json

{
    "require": {
        "php": ">=5.6",
        "authorizenet/authorizenet": "~1.9.6"
    }
}

Avaa pääte projektin juurihakemistossa ja suorita composer installkomento. Tämä komento lataa kirjaston riippuvuuden.

Määritä ympäristö

Olemme asentaneet PHP SDK -kirjaston. Nyt luodaan kaksi tiedostoa kutsutaan constants.phpja subscriptionpayment.php. Tallennamme constants.php-tiedostoon API-avaimet seuraavasti.

vakiot.php

<?php
define('ANET_LOGIN_ID', 'YOUR_LOGIN_ID');
define('ANET_TRANSACTION_KEY', 'YOUR_TRANSACTION_KEY');
?>

Varmista, että olet korvannut paikkamerkit YOUR_LOGIN_ID ja YOUR_TRANSACTION_KEY todellisilla arvoilla.

subscriptionpayment.phpon tiedosto, johon kirjoitamme koodin luottokortin tilausmaksuja varten. Voit tehdä sen ensin sisällyttämällä kirjaston ydintiedostot.

subscriptionpayment.php

<?php
require_once "vendor/autoload.php";
require_once "constants.php";
 
use netauthorizeapicontractv1 as AnetAPI;
use netauthorizeapicontroller as AnetController;
?>

Todellinen koodi toistuville maksuille Authorize.netissä

Authorize.net tarjoaa mallikoodikirjaston kehittäjille. Opetusohjelmassa käytämme viittausta RecurringBillingiin.

Muutamme createSubscriptionmenetelmää hieman viitekoodista ja kirjoitamme sen seuraavasti.

function createSubscription($arr_data = [])
{
    extract($arr_data);
    /* Create a merchantAuthenticationType object with authentication details
       retrieved from the constants file */
    $merchantAuthentication = new AnetAPIMerchantAuthenticationType();
    $merchantAuthentication->setName(ANET_LOGIN_ID);
    $merchantAuthentication->setTransactionKey(ANET_TRANSACTION_KEY);
     
    // Set the transaction's refId
    $refId = 'ref'. time();
    // Subscription Type Info
    $subscription = new AnetAPIARBSubscriptionType();
    $subscription->setName("Sample Subscription");
    $interval = new AnetAPIPaymentScheduleTypeIntervalAType();
    $interval->setLength($intervalLength);
    $interval->setUnit("days");
    $paymentSchedule = new AnetAPIPaymentScheduleType();
    $paymentSchedule->setInterval($interval);
    $paymentSchedule->setStartDate(new DateTime($start_date));
    $paymentSchedule->setTotalOccurrences($totalcycles);
    //$paymentSchedule->setTrialOccurrences("1");
    $subscription->setPaymentSchedule($paymentSchedule);
    $subscription->setAmount($amount);
    //$subscription->setTrialAmount("0.00");
     
    $creditCard = new AnetAPICreditCardType();
    $creditCard->setCardNumber($card_number);
    $creditCard->setExpirationDate($expiry_date);
    $payment = new AnetAPIPaymentType();
    $payment->setCreditCard($creditCard);
    $subscription->setPayment($payment);
    $order = new AnetAPIOrderType();
    $order->setInvoiceNumber(mt_rand(10000, 99999));   //generate random invoice number     
    $order->setDescription("Daily Subscription For 1 USD"); 
    $subscription->setOrder($order); 
     
    $billTo = new AnetAPINameAndAddressType();
    $billTo->setFirstName($first_name);
    $billTo->setLastName($last_name);
    $subscription->setBillTo($billTo);
    $request = new AnetAPIARBCreateSubscriptionRequest();
    $request->setmerchantAuthentication($merchantAuthentication);
    $request->setRefId($refId);
    $request->setSubscription($subscription);
    $controller = new AnetControllerARBCreateSubscriptionController($request);
    $response = $controller->executeWithApiResponse( netauthorizeapiconstantsANetEnvironment::SANDBOX);
     
    if (($response != null) && ($response->getMessages()->getResultCode() == "Ok"))     {
        echo "SUCCESS: Subscription ID: ". $response->getSubscriptionId(). "n";
     }
    else
    {
        echo "ERROR :  Invalid responsen";
        $errorMessages = $response->getMessages()->getMessage();
        echo "Response: ". $errorMessages[0]->getCode(). "  " .$errorMessages[0]->getText(). "n";
    }
    return $response;
}

Huomaa $response = $controller->executeWithApiResponse(netauthorizeapiconstantsANetEnvironment::SANDBOX);edellä olevan menetelmän rivi. Kun siirrymme tuotantoon, meidän pitäisi vaihtaa SANDBOX tuotteeksi PRODUCTION tällä rivillä. Lisäksi meidän on vaihdettava kirjautumistunnuksemme ja tapahtuma-avaimet vastaamaan live-tiliä.

Menetelmämme createSubscriptionvie matriisiparametrin, joka meidän tulisi rakentaa alla olevalla tavalla.

$arr_subscription = [
    'intervalLength' => 7, // Here 7 means recurring payment occurs after each 7 days
    'start_date' => date('Y-m-d'),
    'totalcycles' => 10, //Billing cycles. Here 10 means 10 transactions
    'amount' => 1.00,
    'card_number' => '4111111111111111',
    'expiry_date' => '2020-12',
    'first_name' => 'John',
    'last_name' => 'Smith'
];

Käytämme testiä luottokorttien numeroita tarjotaan Testing Guide.

Välittämällä taulukon yläpuolelle funktiolle createSubscriptionse luo 1,00 USD: n tilausmaksun jokaisen 7 päivän jälkeen 10 laskutusjaksoon saakka.

Lopullinen koodi

subscriptionpaymen.phpt

<?php
require_once "vendor/autoload.php";
require_once "constants.php";
 
use netauthorizeapicontractv1 as AnetAPI;
use netauthorizeapicontroller as AnetController;
 
$arr_subscription = [
    'intervalLength' => 7,
    'start_date' => date('Y-m-d'),
    'totalcycles' => 10,
    'amount' => 1.00,
    'card_number' => '4111111111111111',
    'expiry_date' => '2020-12',
    'first_name' => 'John',
    'last_name' => 'Smith'
];
 
createSubscription($arr_subscription);
 
function createSubscription($arr_data = [])
{
    extract($arr_data);
    /* Create a merchantAuthenticationType object with authentication details
       retrieved from the constants file */
    $merchantAuthentication = new AnetAPIMerchantAuthenticationType();
    $merchantAuthentication->setName(ANET_LOGIN_ID);
    $merchantAuthentication->setTransactionKey(ANET_TRANSACTION_KEY);
     
    // Set the transaction's refId
    $refId = 'ref'. time();
    // Subscription Type Info
    $subscription = new AnetAPIARBSubscriptionType();
    $subscription->setName("Sample Subscription");
    $interval = new AnetAPIPaymentScheduleTypeIntervalAType();
    $interval->setLength($intervalLength);
    $interval->setUnit("days");
    $paymentSchedule = new AnetAPIPaymentScheduleType();
    $paymentSchedule->setInterval($interval);
    $paymentSchedule->setStartDate(new DateTime($start_date));
    $paymentSchedule->setTotalOccurrences($totalcycles);
    //$paymentSchedule->setTrialOccurrences("1");
    $subscription->setPaymentSchedule($paymentSchedule);
    $subscription->setAmount($amount);
    //$subscription->setTrialAmount("0.00");
     
    $creditCard = new AnetAPICreditCardType();
    $creditCard->setCardNumber($card_number);
    $creditCard->setExpirationDate($expiry_date);
    $payment = new AnetAPIPaymentType();
    $payment->setCreditCard($creditCard);
    $subscription->setPayment($payment);
    $order = new AnetAPIOrderType();
    $order->setInvoiceNumber(mt_rand(10000, 99999));   //generate random invoice number     
    $order->setDescription("Daily Subscription For 1 USD"); 
    $subscription->setOrder($order); 
     
    $billTo = new AnetAPINameAndAddressType();
    $billTo->setFirstName($first_name);
    $billTo->setLastName($last_name);
    $subscription->setBillTo($billTo);
    $request = new AnetAPIARBCreateSubscriptionRequest();
    $request->setmerchantAuthentication($merchantAuthentication);
    $request->setRefId($refId);
    $request->setSubscription($subscription);
    $controller = new AnetControllerARBCreateSubscriptionController($request);
    $response = $controller->executeWithApiResponse( netauthorizeapiconstantsANetEnvironment::SANDBOX);
     
    if (($response != null) && ($response->getMessages()->getResultCode() == "Ok"))     {
        echo "SUCCESS: Subscription ID: ". $response->getSubscriptionId(). "n";
     }
    else
    {
        echo "ERROR :  Invalid responsen";
        $errorMessages = $response->getMessages()->getMessage();
        echo "Response: ". $errorMessages[0]->getCode(). "  " .$errorMessages[0]->getText(). "n";
    }
    return $response;
}
?>

Toivomme, että ymmärrät kuinka määrittää toistuvat maksut Authorize.net-sivustossa. Jaa ajatuksesi alla olevassa kommenttiosassa.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja