Pass messages to and from the SGX
Rewriting the from/to as appropriate.
Merge branch 'create_customer_id'
* create_customer_id:
Create customer_id if it does not exist before we start registration
Break out CustomerPlan
Inject BackendSgx per customer
Create customer_id if it does not exist before we start registration
Inject BackendSgx per customer
Instead of being a singleton that represents the entire relationship
with the backend, the object is now per-customer (since any meaningful
method requires a customer anyway for the from JID at least) and can be
delegated to directly from Customer.
Merge branch 'new-signup-credit-card-decline'
* new-signup-credit-card-decline:
Block repeated declines for 24 hours
Handle credit card decline
Block repeated declines for 24 hours
Merge branch 'new-signup-add-credit-card'
* new-signup-add-credit-card:
Happy path for credit card signup
Panic should work on any value for error
Allow getting default payment method, not just index
Object representing the backend SGX to use
Stop polluting Object namespace with Blather DSL
Work in the presence of em-synchrony
Helper to allow ordering phone number from Bandwidth v2
Helper to get a promise that resolves after N seconds
Every payment kind will need the plan, so put it at the top
Use registration pattern for Payment kinds
Method to bill the plan of a Customer
Use Forwardable for simple delegations
Helper to allow using sync-style code in a Promise context
New signup: go to web to choose credit card
OOB helper
Reject promise on stanza error
Fix typo
Happy path for credit card signup
Assuming credit card payment works, you can now activate a new account by paying
with one.
Panic should work on any value for error
Stop polluting Object namespace with Blather DSL
New signup: go to web to choose credit card
This step, if chosen, directs the user to the jmp-pay webapp to add a credit
card. It includes an OOB element for use by user agents that can handle
that (possibly for webview embed, etc) with a note-based fallback as per XEP.
Once the user chooses "next" the code checks if they have actually added a card,
and if so continues to a yet-unimplemented step and if not repeats the
instruction to go to the web app.
Reject promise on stanza error
Merge branch 'register-command-first-pass'
* register-command-first-pass:
Add sourcehut CI
Add Rakefile to run all tests
Initial registration flow for Bitcoin
Registrations that start on the web will have a tel selected already
Helpers for doing Electrum RPC
Add helper to fetch current BTC sell prices
Allow skipping tests without being caught in pry
Initial registration flow for Bitcoin
This is the Bitcoin "happy path" where there is already a tel and a customer_id.
Gets all the way to generating a BTC address for payment and quoting an amount.
Stubs out flows for credit card and activation code as well, but does not
implement those flows.
TBD: after bitcoin payment comes in and jmp-pay activates the account, we should
come back here to actually buy the number, select a new one if no longer
available, etc.
Split logic out into testable objects
Rubocop clean. Good test coverage of helper objects.
Currency aware
Look up the user's plan to find out what currency to charge them in.
Submit for settlement
We'd like to actually get the money, not just be allowed to.
Always show money with two decimal places
Only ask which card to use if there is more than one