fix(payments): Express-Rueckkehr nach zweiter PayPal-Freigabe nimmt den normalen Rueckweg mit Capture
PayPal Live antwortet auf den Capture nach dem Betrags-PATCH mit 422 PAYER_ACTION_REQUIRED (Sandbox nicht). Der Kunde gibt erneut frei und kehrt ueber ?payment_express= zurueck; dort scheiterte onExpressReturn an custom_id != 'express' und zeigte eine Fehlerseite, waehrend die Bestellung offen blieb (Live-Bestellung 312143).
This commit is contained in:
@@ -128,6 +128,17 @@ abstract class AbstractProvider implements ProviderInterface
|
||||
Log::write($module, 'start', $orderId, $number, $reference, 'open', null, $raw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt es zu dieser Anbieter-Referenz schon einen Vorgang (mit Bestellung)?
|
||||
* Braucht die Kasse bei der Express-Rueckkehr: verlangt PayPal nach dem Betrags-PATCH
|
||||
* eine zweite Freigabe, kommt der Kunde ueber die Express-URL zurueck, obwohl die
|
||||
* Bestellung laengst existiert -- dann ist es eine normale Rueckkehr mit Capture.
|
||||
*/
|
||||
public function knownReference(string $reference): bool
|
||||
{
|
||||
return $reference !== '' && $this->transactionByReference($reference) !== null;
|
||||
}
|
||||
|
||||
protected function transactionByReference(string $reference): ?object
|
||||
{
|
||||
$stmt = $this->db->prepare('SELECT * FROM payment_transactions WHERE provider=? AND reference=? LIMIT 1');
|
||||
|
||||
+1403
-1395
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user