How to have a one-to-one relation to either one of two other tables
There are several options:


Combine Paypal and Stripe tables into a single Payment table, with fields to hold either type of payment;
Have both a paypal_id and a stripe_id in the Order table; use a condition on the table to ensure that at least one of them is NULL.
Have a single Payment_ID with a flag to indicate whether it's an id from Paypal or Stripe as you propose.


The first two options allow for the payment ID(s) to be foreign keys to the payment table(s), the third does not. 

I would lean towards a single table with all payment data, but that may be a personal preference. Which of the first two options is better would depend on whether there are any common columns between Paypal and Stripe, and just how large the distinct columns are.

UPDATE: joanolo's answer lays out how to actually implement my option 2; take a look!