aaroncox/vessel

Pre-Approved Payments (Direct Debit)

Opened this issue · 3 comments

As the CEO of Privex, one of the largest STEEM businesses, I've found that users often fail to see their invoices in their emails for whatever reason, and we have to chase them up about it.

A possibly useful feature would be Pre-Approved payments (similar to Direct Debit in the UK and EU, or PayPal's similarly named feature).

How would it be used?

Using the URI transaction feature, a site could request a pre-approved payment for a maximum USD, STEEM, or SBD value.

Example Dialog:

Privex Inc. (@privex) would like to automatically charge your Steem Account

Period: Monthly
Amount: Up to 70 USD per month
Currency: STEEM
Description: 32GB Dedicated Server

This may be cancelled at any point

[Allow] [Deny]

How does it work behind the scenes?

To allow it to integrate with invoice systems, a service link would be passed to Vessel

Example:

GET https://example.com/user_service/xxxxxxx-xxxx-xxxx-xxxxx

{
    amount: '32.123',
    currency: 'STEEM',
    due_date: '2018-04-01'.
    from_user: 'someguy123',
    to_user: 'privex',
    memo: 'stmxxxxxxxxxxx',
    paid: false,
    status: 'active'
}

Vessel would connect to Bittrex (or other exchanges) and verify that the STEEM (or SBD) amount is below the maximum USD value. If it is above the maximum USD value, it should alert the user that the payment could not be completed automatically, and ask them to review it.

Each month, Vessel would connect to the service URL to obtain the amount to send, and automatically send amount currency to the to_user from from_user with the memo memo. It would check status to verify whether this service is active or not, so that we could simply change it to 'cancelled' and Vessel would automatically cancel the automated payment.

To avoid paying for a service which was already paid outside of Vessel, the paid flag is used. If paid is already true, then Vessel will mark the current pending monthly payment as completed.

End note

Should this be implemented, Privex would be happy to be the first service provider to use it :)

This is much safer than something like SteemConnect, as the user remains in control of their active key via Vessel.

I completely missed this - sorry for not responding.

Bad news is that currently with the way that the wallets are encrypted - this is impossible. Automatic payments cannot be made because the keys are encrypted in Vessel until the user prompts and enters their password. It's decrypted only to sign that single transaction and then never stored unencrypted.

I'm not sure how you'd do the automatic portion without leaving the users keys unencrypted.

One alternative would be to build some sort of UI into the wallet with "Payment Reminders" or something. It would act more like an "address book" in a traditional wallet, but be there to help users remember to pay a reoccurring charge.

I'll keep this use case in mind while working on the new wallet and see if I can come up with a solution.

Yeah, this would be a great feature. We're looking for auto-renewal solutions too. There's not a lot in the cryptosphere.

ackza commented