Fix: Adding cart id and order id to stripe payload
This commit is contained in:
@@ -115,6 +115,25 @@ class StripePaymentDriver implements
|
||||
$params['payment_method'] = $data['payment_method'];
|
||||
}
|
||||
|
||||
// Reconciliation safety net: this app never creates a Stripe Customer
|
||||
// object and attaches no other identifying info to the PaymentIntent
|
||||
// (see docs/payments.md "Reconciliation" for the full reasoning), so
|
||||
// without this, a charge that succeeds on Stripe's side but is never
|
||||
// written to our own DB (e.g. a DB outage at exactly the wrong
|
||||
// moment) would be untraceable back to a cart/order — nothing to
|
||||
// search Stripe's dashboard by except amount/time/card last-4.
|
||||
// array_filter() drops order_id when it's not yet known (still null
|
||||
// in $context at initial pay()/authorize() time — see
|
||||
// rememberIntent()'s own null-coalesce for the same case).
|
||||
$metadata = array_filter([
|
||||
'cart_id' => $context['cart_id'] ?? null,
|
||||
'order_id' => $context['order_id'] ?? null,
|
||||
]);
|
||||
|
||||
if ($metadata !== []) {
|
||||
$params['metadata'] = $metadata;
|
||||
}
|
||||
|
||||
try {
|
||||
$paymentIntent = $this->stripe->getClient()->paymentIntents->create($params);
|
||||
} catch (ApiErrorException $e) {
|
||||
|
||||
Reference in New Issue
Block a user