Forráskód Böngészése

Merge pull request #28505 from overleaf/jlm-fix-recurly-webhook-manual-charge

Handle manual charge in recurly webhook

GitOrigin-RevId: 0e84725cc99433f3e6bebbd4fd424a47b233b966
John Lees-Miller 1 éve
szülő
commit
e21a165050

+ 13 - 1
services/web/app/src/Features/Subscription/SubscriptionController.js

@@ -831,8 +831,20 @@ function recurlyCallback(req, res, next) {
       return res.sendStatus(200)
     }
 
+    // A manual charge may have no subscription, in which case we get a
+    // <subscription_id nil="true"/> element, which produces an object instead
+    // of a string subscription_id.
+    const subscriptionId = eventData.transaction?.subscription_id
+    if (!subscriptionId || typeof subscriptionId !== 'string') {
+      logger.info(
+        { transactionId: eventData.transaction?.id },
+        'ignoring failed_payment_notification without subscription_id'
+      )
+      return res.sendStatus(200)
+    }
+
     SubscriptionHandler.getSubscriptionRestorePoint(
-      eventData.transaction.subscription_id,
+      subscriptionId,
       function (err, lastSubscription) {
         if (err) {
           return next(err)