✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So richten Sie wiederkehrende Zahlungen in Authorize.net ein

25

Wir haben einen Artikel Akzeptieren von Kreditkartenzahlungen mit Authorize.net Payment Gateway geschrieben. In diesem Artikel haben wir besprochen, wie man Kreditkartenzahlungen über Authorize.net erhalten kann. Außerdem konzentriert sich dieser Artikel im Wesentlichen auf die einmalige Zahlung.

Was aber, wenn jemand wiederkehrende Zahlungen in seine Anwendung integrieren möchte? In diesem Artikel zeigen wir Ihnen, wie Sie mit Authorize.net wiederkehrende Zahlungen einrichten .

Was ist wiederkehrende Zahlung?

Wiederkehrende oder Abonnementzahlungsmittel belasten die Kreditkarte automatisch nach einem bestimmten Intervall und für einen bestimmten Zeitraum mit einem festen Betrag.

Angenommen, Sie betreiben Ihre Website auf dem Bluehost- Hosting und haben einen Betrag für das erste Jahr bezahlt. Wenn Ihr Plan abläuft, belastet Bluehost automatisch Ihre Kreditkartenzahlung für das nächste Jahr (wenn Sie die wiederkehrende Zahlungsoption gewählt haben).

Der Vorteil des Abonnements besteht darin, dass Sie sich nicht an das Ablaufdatum des von Ihnen genutzten Dienstes erinnern müssen. Der Dienstleister hält es als automatisiertes System. Sobald Ihr Plan abgelaufen ist, verlängern sie Ihren Service, indem sie im Hintergrund Zahlungen von Ihrer Kreditkarte entgegennehmen.

Sehen wir uns jedoch an, wie Sie mit Authorize.net wiederkehrende Zahlungen einrichten.

Sie sollten zuerst unseren Artikel Akzeptieren von Kreditkartenzahlungen mit Authorize.net Payment Gateway lesen. In diesem Artikel haben wir die Installation und Konfiguration von Authorize.net SDK-Bibliotheken besprochen .

Für unser Tutorial verwenden wir das Sandbox-Konto. Sie sollten also zuerst Ihr Sandbox-Konto erstellen und Ihre API-Schlüssel erhalten. Sie finden Ihre API-Schlüssel unter Konto->API-Anmeldeinformationen & Schlüssel.

Installation

Um zu beginnen, müssen wir die PHP SDK Library installieren. Wir empfehlen Composer für die Installation der Bibliothek.

Erstellen Sie eine composer.jsonDatei in Ihrem Projektstammverzeichnis und fügen Sie den folgenden Code hinzu.

Komponist.json

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

Öffnen Sie das Terminal im Stammverzeichnis Ihres Projekts und führen Sie den composer installBefehl aus. Dieser Befehl lädt die Abhängigkeit einer Bibliothek herunter.

Einrichten der Umgebung

Wir haben die PHP-SDK-Bibliothek installiert. Erstellen Sie nun zwei Dateien namens constants.phpund subscriptionpayment.php. In der Datei constants.php speichern wir unsere API-Schlüssel wie folgt.

konstanten.php

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

Stellen Sie sicher, dass Sie die Platzhalter YOUR_LOGIN_ID und YOUR_TRANSACTION_KEY durch tatsächliche Werte ersetzt haben.

subscriptionpayment.phpist die Datei, in die wir einen Code für Abonnementzahlungen einer Kreditkarte schreiben. Dazu müssen wir zunächst Kerndateien aus der Bibliothek einbinden.

Abonnementzahlung.php

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

Tatsächlicher Code für wiederkehrende Zahlungen in Authorize.net

Authorize.net bietet eine Beispielcodebibliothek als Referenz für Entwickler. Für unser Tutorial verwenden wir die Referenz von RecurringBilling.

Wir modifizieren die createSubscriptionMethode leicht aus dem Referenzcode und schreiben sie wie folgt.

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;
}

Beachten Sie die Zeile $response = $controller->executeWithApiResponse(netauthorizeapiconstantsANetEnvironment::SANDBOX);aus der obigen Methode. Wenn wir zur Produktion wechseln, sollten wir in dieser Linie SANDBOX auf PRODUKTION umstellen. Außerdem müssen wir unsere Login-ID und die Transaktionsschlüssel ändern, damit sie mit unserem Live-Konto übereinstimmen.

Unsere Methode createSubscriptionnimmt einen Array-Parameter, den wir unten einbauen sollten.

$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'
];

Wir verwenden Test-Kreditkartennummern, die im Testing Guide angegeben sind.

Durch die Übergabe des obigen Arrays an die Funktion createSubscriptionwird nach jeweils 7 Tagen bis zu 10 Abrechnungszyklen eine Abonnementzahlung von 1,00 USD erstellt.

Endgültiger Code

abonnierenpaymen.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;
}
?>

Wir hoffen, dass Sie verstehen, wie Sie wiederkehrende Zahlungen in Authorize.net einrichten. Bitte teilen Sie Ihre Gedanken im Kommentarbereich unten mit.

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen