Scott's Test Post
Account Deletion:
Account Deletion ($user->subscription()->cancelNow();) is exactly how the ownership transfer is implemented. This cancels the subscription immediately and prevents the 'Resume' feature from being available.
Additional Address:
The additional address purpose: This is Extra Billing Information is exactly what the portal describes:
If you need to add specific contact or tax information to your receipts, like your full business name, VAT identification number, or address of record, you may add it here.
This should be address information specific to the Board, and not the user purchasing the subscription. If the board needs to put their GST # on the invoice, adding it here will include it in the invoice.
This information is captured on the Team (Board) model (table). It belongs to the Board, not the user. That is why it sticks around after changing the subscription owner. (see Team Billing: https://spark.laravel.com/docs/3.x/spark-stripe/cookbook.html).
See the Cashier documentation (https://laravel.com/docs/9.x/billing#generating-invoice-pdfs). The third paragraph describes extra billing information and typical use case. Notice that customer billing information is stored and retrieved from Stripe - OMB only has this extra billing info if the user adds it. This is one of the features Spark provides that we don't need to build.
Other light reading materials: Cashier documentation (https://laravel.com/docs/9.x/billing). Stripe's documentation (https://stripe.com/docs/payments). Cashier is developer focused but overviews might be helpful. Stripe is both Developer and Organization focused. I started with the Guides, then ventured into the developer zone. I don't think you'd want to hit that detail, but the guides will help you understand what Stripe provides and why. I think there are testing guides where you could find various test credit cards to test different charge use cases, but that is overkill for our purposes (Spark has tested this) and would required webhooks be enabled for Stripe to communicate back to OMB without OMB initiating a request. (would need to stand up a test server with our omyboard.com domain).
While Spark has done an OK job of implementing Team billing, it is not really the greatest. It is better directed at User based billing. In the future, we could replace Spark with a custom built portal utilizing the package Cashier (which is exactly what Spark does - it is a portal/overlay on Cashier).