Answers.Body: <p>The processing transaction status is used when a gateway returns from offsite correctly (the user has done everything they can to make payment on the order) but since we didn't get a definitive answer from the gateway that the card has been charged, we put the transaction into a 'processing' status.</p>
  
  <p>This status means we complete the order as there is nothing more for the customer to do.</p>
  
  <p>We later get a response from the gateway (outside of the user checkout flow) to the webhook URL to let us know the payment charge on the card has been made. We then update the order with a successful payment transaction.</p>
  
  <p>It sounds like the webhook isn't being hit with that update information.</p>
  
  <p>After looking at your logs and config, I see that after the webhook request from stripe comes in, the system raises an error.</p>
  
  <p>The error is caused by the fact that you have set the <code>isSystemOn</code> config to <code>false</code> in production. This means the webhook request from stripe is failing, since only logged-in admins can access the system with that config setting set to <code>false</code>.</p>
  
  <p>My guess is you made the payment with the example templates while admin :)</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-12-06T15:13:00.203Z
Answers.LastActivityDate: 2018-12-06T15:13:00.203Z
Answers.UserDisplayName: Luke Holder
Body: <p>I am using the Stripe gateway plugin for Commerce 2.</p>
  
  <p>I have done the following: </p>
  
  <ul>
  <li>Entered the stripe API keys correctly.</li>
  <li>Set the Webhook URL up correctly in Stripe.</li>
  <li>Correctly disabled CSRF protection for the webhook url.</li>
  <li>Used the example templates with the stripe.js token submitting correctly.</li>
  <li>Since I am using 3dSecure, I am getting redirect offsite correctly.</li>
  <li>After returning from offsite, I see the completed order successfully.</li>
  </ul>
  
  <p>In the control panel the order is completed, but it is unpaid.</p>
  
  <p>The last transaction has the status 'processing'.</p>
  
  <p>Any ideas why the order isn't paid?</p>
  
Tags: <craft3><plugin-craftcommerce2><stripe>
Title: Commerce 2 Stripe gateway seems to be working correctly, but order remains unpaid
ThreadText: # Commerce 2 Stripe gateway seems to be working correctly, but order remains unpaid
  
  (Asked by: username_0 on 2018-12-06)
  
  I am using the Stripe gateway plugin for Commerce 2.
  
  I have done the following:
  
  * Entered the stripe API keys correctly.
  * Set the Webhook URL up correctly in Stripe.
  * Correctly disabled CSRF protection for the webhook url.
  * Used the example templates with the stripe.js token submitting correctly.
  * Since I am using 3dSecure, I am getting redirect offsite correctly.
  * After returning from offsite, I see the completed order successfully.
  
  In the control panel the order is completed, but it is unpaid.
  
  The last transaction has the status 'processing'.
  
  Any ideas why the order isn't paid?
  
  **Tags:** craft3, plugin-craftcommerce2, stripe
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-12-06. Score: 3 | Accepted answer
  
  The processing transaction status is used when a gateway returns from offsite correctly (the user has done everything they can to make payment on the order) but since we didn't get a definitive answer from the gateway that the card has been charged, we put the transaction into a 'processing' status.
  
  This status means we complete the order as there is nothing more for the customer to do.
  
  We later get a response from the gateway (outside of the user checkout flow) to the webhook URL to let us know the payment charge on the card has been made. We then update the order with a successful payment transaction.
  
  It sounds like the webhook isn't being hit with that update information.
  
  After looking at your logs and config, I see that after the webhook request from stripe comes in, the system raises an error.
  
  The error is caused by the fact that you have set the `isSystemOn` config to `false` in production. This means the webhook request from stripe is failing, since only logged-in admins can access the system with that config setting set to `false`.
  
  My guess is you made the payment with the example templates while admin :)
  
  
  ---
  
  