Absenderpruefung bei PayPal-Mails entfernen
This commit is contained in:
@@ -8,10 +8,10 @@ declare(strict_types=1);
|
||||
*
|
||||
* Ablauf pro ungelesener Mail:
|
||||
* 1. Mandant ueber den Plus-Token der Empfaengeradresse bestimmen
|
||||
* (zahlungen+<token>@…).
|
||||
* 2. Absender gegen paypal.de/.com pruefen.
|
||||
* 3. Body parsen, Netto ermitteln, per Transaktionscode deduplizieren.
|
||||
* 4. Eindeutiger Namens-Match -> automatisch als Einzahlung buchen,
|
||||
* (zahlungen+<token>@…). Der Absender wird bewusst nicht geprueft -
|
||||
* Zahlungsmails kommen auch ueber manuelle Weiterleitungen an.
|
||||
* 2. Body parsen, Netto ermitteln, per Transaktionscode deduplizieren.
|
||||
* 3. Eindeutiger Namens-Match -> automatisch als Einzahlung buchen,
|
||||
* sonst in die Warteschlange legen. Ist PayPal fuer den Mandanten
|
||||
* abgeschaltet, wird die Zahlung nur geparkt (gespeichert, nicht
|
||||
* gebucht).
|
||||
@@ -31,7 +31,7 @@ declare(strict_types=1);
|
||||
*
|
||||
* Testmodus ohne IMAP (eine Rohmail aus einer Datei verarbeiten):
|
||||
* php scripts/fetch-paypal-payments.php --file=mail.html \
|
||||
* --recipient=zahlungen+abc123@kaffeeliste.de --from=service@paypal.de
|
||||
* --recipient=zahlungen+abc123@kaffeeliste.de
|
||||
*/
|
||||
|
||||
if (PHP_SAPI !== 'cli') {
|
||||
@@ -42,7 +42,7 @@ if (PHP_SAPI !== 'cli') {
|
||||
require_once __DIR__ . '/../app/paypal-inbox.php';
|
||||
|
||||
$pdo = app_db_pdo();
|
||||
$opts = getopt('', ['file:', 'recipient:', 'from:', 'dry-run']);
|
||||
$opts = getopt('', ['file:', 'recipient:', 'dry-run']);
|
||||
|
||||
// ---- Testmodus: eine Datei verarbeiten (ohne IMAP) --------------------------
|
||||
if (isset($opts['file'])) {
|
||||
@@ -52,8 +52,7 @@ if (isset($opts['file'])) {
|
||||
exit(1);
|
||||
}
|
||||
$recipient = (string) ($opts['recipient'] ?? '');
|
||||
$from = (string) ($opts['from'] ?? 'service@paypal.de');
|
||||
$result = paypal_process_raw($pdo, $recipient, $from, $body, isset($opts['dry-run']));
|
||||
$result = paypal_process_raw($pdo, $recipient, $body, isset($opts['dry-run']));
|
||||
echo 'Ergebnis: ' . json_encode($result, JSON_UNESCAPED_UNICODE) . "\n";
|
||||
exit(0);
|
||||
}
|
||||
@@ -151,12 +150,11 @@ for ($msgno = 1; $msgno <= $messageCount; $msgno++) {
|
||||
if (preg_match_all('/^(?:Delivered-To|X-Original-To|To|X-Forwarded-To):\s*(.+)$/im', $rawHeader, $all)) {
|
||||
$recipient = implode(' ', $all[1]);
|
||||
}
|
||||
$from = (string) ($overview->from ?? '');
|
||||
|
||||
$body = paypal_imap_fetch_body($mbox, $msgno);
|
||||
// Im Probelauf wird nichts gespeichert und nichts gebucht - die Vorschau
|
||||
// sagt nur, was passieren wuerde.
|
||||
$result = paypal_process_raw($pdo, $recipient, $from, $body, $dryRun);
|
||||
$result = paypal_process_raw($pdo, $recipient, $body, $dryRun);
|
||||
|
||||
switch ($result['status']) {
|
||||
case 'booked':
|
||||
|
||||
Reference in New Issue
Block a user