PayPal-Name aus der manuellen Zuordnung lernen
Die automatische Zuordnung verlangt exakte Uebereinstimmung des Zahlernamens mit Anzeigename oder PayPal-Name des Mitglieds. Heisst jemand bei PayPal anders, landet jede Zahlung in der Warteschlange - auch die zehnte, obwohl der Fall laengst einmal von Hand geklaert wurde. Nach einer manuellen Zuordnung wird der Zahlername deshalb beim Mitglied hinterlegt. Zurueckhaltend: ein gepflegter PayPal-Name wird nie ueberschrieben, ein Name gleich dem Anzeigenamen bringt nichts, und passt der Name auch auf ein anderes Mitglied, wird nichts gelernt - das wuerde die Zuordnung mehrdeutig machen und damit blockieren. Was gelernt wurde, steht in der Erfolgsmeldung und im Audit-Log; eine stillschweigende Aenderung am Mitglied waere sonst schwer nachvollziehbar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -129,6 +129,35 @@ try {
|
||||
paypal_flow_assert('unbekannter Zahler landet in der Warteschlange', ($ergebnisB['status'] ?? '') === 'unmatched', $failures, $passes);
|
||||
paypal_flow_assert('Warteschlange enthaelt die Zahlung', paypal_count_unmatched($pdo, $tenantA) === 1, $failures, $passes);
|
||||
|
||||
// --- Der PayPal-Name wird aus der manuellen Zuordnung gelernt: beim
|
||||
// naechsten Mal soll dieselbe Person automatisch getroffen werden.
|
||||
$abweichend = paypal_flow_participant($pdo, $tenantA, "Bernd Beispiel {$namensSuffix}", $suffix . 'x');
|
||||
$codeE = 'TXNLERN' . strtoupper(bin2hex(random_bytes(4)));
|
||||
$zahlername = "Bernd B. Beispiel-Handel {$namensSuffix}";
|
||||
$mailE = paypal_flow_mail($zahlername, '4,00', $codeE, 'erste Zahlung');
|
||||
$ergebnisE = paypal_process_raw($pdo, $empfaengerA, 'service@paypal.de', $mailE);
|
||||
paypal_flow_assert('abweichender Zahlername landet zunaechst in der Warteschlange', ($ergebnisE['status'] ?? '') === 'unmatched', $failures, $passes);
|
||||
|
||||
$zuordnung = paypal_assign_payment($pdo, $tenantA, (int) $ergebnisE['payment_id'], $abweichend, null);
|
||||
paypal_flow_assert('manuelle Zuordnung bucht die Zahlung', ($zuordnung['ok'] ?? false) === true, $failures, $passes);
|
||||
paypal_flow_assert('manuelle Zuordnung merkt sich den PayPal-Namen', ($zuordnung['learned_paypal_name'] ?? null) === $zahlername, $failures, $passes);
|
||||
|
||||
$codeF = 'TXNAUTO2' . strtoupper(bin2hex(random_bytes(4)));
|
||||
$mailF = paypal_flow_mail($zahlername, '4,00', $codeF, 'zweite Zahlung');
|
||||
$ergebnisF = paypal_process_raw($pdo, $empfaengerA, 'service@paypal.de', $mailF);
|
||||
paypal_flow_assert('zweite Zahlung desselben Zahlers wird automatisch gebucht', ($ergebnisF['status'] ?? '') === 'booked', $failures, $passes);
|
||||
paypal_flow_assert('beide Zahlungen sind gutgeschrieben', paypal_flow_balance($pdo, $abweichend) === 800, $failures, $passes);
|
||||
|
||||
// Ein bereits gepflegter PayPal-Name wird nicht ueberschrieben.
|
||||
$codeG = 'TXNKEEP' . strtoupper(bin2hex(random_bytes(4)));
|
||||
$mailG = paypal_flow_mail('Ganz Anderer Name', '2,00', $codeG, 'fremder Name');
|
||||
$ergebnisG = paypal_process_raw($pdo, $empfaengerA, 'service@paypal.de', $mailG);
|
||||
$zuordnungG = paypal_assign_payment($pdo, $tenantA, (int) $ergebnisG['payment_id'], $abweichend, null);
|
||||
paypal_flow_assert('gepflegter PayPal-Name bleibt unveraendert', ($zuordnungG['learned_paypal_name'] ?? null) === null, $failures, $passes);
|
||||
$gespeichert = $pdo->prepare('SELECT paypal_name FROM participants WHERE id = ?');
|
||||
$gespeichert->execute([$abweichend]);
|
||||
paypal_flow_assert('gespeichert ist weiterhin der erste Zahlername', (string) $gespeichert->fetchColumn() === $zahlername, $failures, $passes);
|
||||
|
||||
// --- Fall 3: Mandant hat PayPal abgeschaltet -> parken, nicht buchen
|
||||
$tenantB = paypal_flow_tenant($pdo, $suffix, 'b', $tenantIds);
|
||||
$participantB = paypal_flow_participant($pdo, $tenantB, "Max Mustermann {$namensSuffix}", $suffix);
|
||||
|
||||
Reference in New Issue
Block a user