3require_once dirname(__DIR__) .
'/include/dbxShopPayPal.class.php';
4require_once dirname(__DIR__) .
'/include/dbxShopAmazonPay.class.php';
9$fail =
static function (
string $message,
int $code): void {
10 fwrite(STDERR,
"FAIL: $message\n");
16 'order_no' =>
'S-SECURITY-1',
17 'total_gross' => 119.90,
22 'id' =>
'PAYPAL-ORDER-1',
23 'status' =>
'COMPLETED',
24 'purchase_units' => array(array(
25 'reference_id' =>
'S-SECURITY-1',
26 'invoice_id' =>
'S-SECURITY-1',
27 'payments' => array(
'captures' => array(array(
29 'status' =>
'COMPLETED',
30 'amount' => array(
'value' =>
'119.90',
'currency_code' =>
'EUR'),
38}
catch (Throwable $e) {
39 $fail(
'Gueltiger PayPal-Capture wurde abgelehnt: ' . $e->getMessage(), 1);
43$badPayPal[
'purchase_units'][0][
'payments'][
'captures'][0][
'amount'][
'value'] =
'19.90';
46 $fail(
'PayPal-Betragsabweichung wurde akzeptiert.', 2);
47}
catch (RuntimeException $e) {
52 '_http_status' => 200,
53 'checkoutSessionId' =>
'AMAZON-SESSION-1',
54 'statusDetails' => array(
'state' =>
'Completed'),
55 'merchantMetadata' => array(
'merchantReferenceId' =>
'S-SECURITY-1'),
56 'paymentDetails' => array(
57 'chargeAmount' => array(
'amount' =>
'119.90',
'currencyCode' =>
'EUR'),
64 if ($status !==
'completed')
$fail(
'Amazon-Pay-Status wurde falsch normalisiert.', 3);
65}
catch (Throwable $e) {
66 $fail(
'Gueltige Amazon-Pay-Antwort wurde abgelehnt: ' . $e->getMessage(), 4);
70$badAmazon[
'merchantMetadata'][
'merchantReferenceId'] =
'ANDERE-BESTELLUNG';
73 $fail(
'Amazon-Pay-Antwort einer anderen Bestellung wurde akzeptiert.', 5);
74}
catch (RuntimeException $e) {
78$paypalSource = file_get_contents(dirname(__DIR__) .
'/include/dbxShopPayPal.class.php');
79$amazonSource = file_get_contents(dirname(__DIR__) .
'/include/dbxShopAmazonPay.class.php');
81 || strpos((
string)
$amazonSource,
"'checkout|' . (string)(\$order['order_no'] ?? '')") ===
false) {
82 $fail(
'Provider-Create/Capture-Aufrufe besitzen keine stabile Idempotenz-ID.', 6);
85echo
"OK shop payment validation\n";
catch(RuntimeException $e) $paypalSource
catch(RuntimeException $e) $amazonResult
catch(Throwable $e) $badAmazon
catch(Throwable $e) $badPayPal