Guten Morgen liebes Forum,
ich habe gestern stundenlang an einer kleinen PHP-Anwedung gebastelt die auf die Instant Notifications (IPN) von PayPal reagieren soll. Das ist ein Service von PayPal der bei jeder eingehenden Transakation ein Script auf der Webseite ausführt. Soweit so gut. Über den IPN Simulator kann man in der Sandbox Umgebung eine eingehende Transaktion simulieren. In meinem Script lasse ich mir die Daten, bei einem verifizierten Kauf, in einer externen Datei
loggen. Das Script funktioniert soweit. Außer dem Logging möchte ich jetzt aber ein weiteres Script ausführen, welches die E-Mail Adresse des Käufers über eine weitere Schnittstelle "Acuity Scheduling API" - unser Programm für Terminverwaltungen - in die Datenbank des Anbieters einfügt und automatisch ein Paket hinterlegt. Wenn ich das API-Script gesondert ausführe wird funktioniert alles, sobald ich aber das API-Script in meinem IPN Programm ausführen lassen, erscheinen keine neuen E-Mail Adressen in meinem Acuity Scheduling Dashboard.
Links:
Code:
- PayPal IPN führt dieses Script nach einer eingehenden Transaktion aus. Die Datei
liegt bei mir auf dem Server und kommt direkt von PayPal's Github.
- Die Datei
lädt das Acuity Scheduling PHP SDK und fügt meine API Zugangsdaten ein.
Wie gesagt, das Logging funktioniert, PayPal erkennt also das Script und führt es aus, jedoch funktioniert das Hinzufügen einer 10er-Karte im Acuity Scheduling Backend nicht.
Ich hoffe mir kann jemand helfen.
Beste Grüße,
dmnktoe
ich habe gestern stundenlang an einer kleinen PHP-Anwedung gebastelt die auf die Instant Notifications (IPN) von PayPal reagieren soll. Das ist ein Service von PayPal der bei jeder eingehenden Transakation ein Script auf der Webseite ausführt. Soweit so gut. Über den IPN Simulator kann man in der Sandbox Umgebung eine eingehende Transaktion simulieren. In meinem Script lasse ich mir die Daten, bei einem verifizierten Kauf, in einer externen Datei
Code:
ipn_errors.log
Links:
- https://developer.paypal.com/docs/cl...-notification/,
- https://github.com/paypal/ipn-code-samples
- https://developers.acuityscheduling.com/docs
Code:
- PayPal IPN führt dieses Script nach einer eingehenden Transaktion aus. Die Datei
Code:
IpnListener.php
PHP-Code:
<?php
/*
* This script verifies and logs to a file all received IPN requests.
* You can use it with PayPal IPN Simulator, just upload it to your server
* and specify its path as IPN handler URL:
* https://developer.paypal.com/developer/ipnSimulator/
*
* Make sure that your web server has write access to the folder with this script,
* otherwise you won't see any logs being created.
*/
include(dirname(dirname(__FILE__)).'/src/IpnListener.php');
use dezlov\PayPal\IpnListener;
$listener = new IpnListener();
$listener->use_sandbox = true;
$error = null;
$verified = $listener->tryProcessIpn(null, $error);
$report = $listener->getTextReport();
ipn_log($verified, $report, $error);
function ipn_log($verified, $report, $error)
{
// Kauf wurde verifiziert, führe Script aus
if ($verified)
{
$filename = 'ipn_verified.log';
$content = $report;
// Hole die E-Mail des Käufers
$payer_email = $_POST['payer_email'];
// Lade 10er-Karten Script
include(dirname(dirname(__FILE__)).'/controller/healformCard.php');
// Füge dem Käufer eine neue 10er-Karte (product) hinzu
$appointment = $acuity->request('/certificates', array(
'method' => 'POST',
'data' => array(
'productID' => 425193,
'email' => $payer_email
)
));
}
else
{
$filename = 'ipn_errors.log';
$content = 'ERROR: '.$error.PHP_EOL.$report;
}
file_put_contents($filename, $content, FILE_APPEND | LOCK_EX);
}
Code:
healformCard.php
PHP-Code:
<?php
// Lade das Acuity Scheduling SDK
include(dirname(dirname(__FILE__)).'/src/AcuityScheduling.php');
// Setze API Zugangsdaten
$userId = 'x';
$apiKey = 'x';
$acuity = new AcuityScheduling(array(
'userId' => $userId,
'apiKey' => $apiKey
));
Ich hoffe mir kann jemand helfen.
Beste Grüße,
dmnktoe
Kommentar