Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gizmo: Payment Form #186

Open
14 of 28 tasks
anaulin opened this issue Jan 23, 2021 · 3 comments
Open
14 of 28 tasks

Gizmo: Payment Form #186

anaulin opened this issue Jan 23, 2021 · 3 comments
Labels
🗜️ Gizmos A piece of functionality that can be embedded in a Space
Milestone

Comments

@anaulin
Copy link
Member

anaulin commented Jan 23, 2021

Motivated by potential customer / interested party who have the following need:

  1. Have the Investors log in to their bank account using Plaid's Auth Service.
  2. Use that to pull their checking/savings details.
  3. Ideally, pull that data out as a NACHA file from Plaid, so that they can then upload manually into a banking provider for ACH.

TODO

Notes from audit 12/15/2021

  • add validations to form
  • reframe to "payment" and away from "check" terminology
  • add some kind of help text that clarifies that this is a payment authorization, and the payment won't happen immediately
  • add input mask for "Amount" field, so that it looks like dollars
  • color on hover on the "Create" button looks weird
  • add checkbox for payer to mark "I authorize this charge" (check with EBPREC for specific authorization wording)
  • add "entryway" for payments -- the room should show a button for "make a payment", which then takes you to the payment form
  • improve UI for "see all checks" (link at bottom of form), maybe:
    • in "entry to payments" element (see above), add button to "see payment history"; should look "admin-y", to make it clear that regular users have no access to this (maybe this "entry" element has an "admin" section)
  • confirmation text "Your payment for XXX was successfully created" should show amount as a money amount ($XXX)
  • on creation, we should send an email confirmation that includes 4 last digits of account, amount, and routing number
    • ideally, also a way to link back to see the status and/or to cancel the payment
    • later on: audit the payer ("accounts receivable") side of things, which needs a way to update "status", better UI, etc
Feature: Furniture - Check Drop Box
  In order to reduce transaction fees when accepting large payments
  As a Space Owner
  I would like to accept Electronic Checks


  # At present, we're exploring using [Plaid Link] and [Plaid Auth] as the
  # mechanism for collecting and verifying ACH details. They have provided
  # a particularly nice [Modern Guide to ACH].
  #
  # Because we do not store any financial account data, we should be compliant
  # with [PCI DSS].
  #
  # There are two primary use-cases here:
  #
  # 1. Dropping off a check for (eventual) deposit
  # 2. Providing the checks to the Space Owner
  #
  # At present, we are _not_ automating the ACH transfer, though there are many
  # [Payment Processor integrations for Plaid]. Instead, we are opting to
  # expose a [NACHA file], which can be uploaded to many financial institutions
  # business portals.
  #
  # [Plaid Link]: https://plaid.com/docs/link/
  # [Plaid Auth]: https://plaid.com/docs/auth/
  # [Plaid Auth API Docs]: https://plaid.com/docs/api/products/#auth
  # [Payment Processor integrations for Plaid]: https://plaid.com/docs/auth/#using-a-payment-processor
  # [Modern Guide to ACH]: https://go.plaid.com/rs/495-WRE-561/images/Plaid-Modern-guide-to-ACH.pdf
  # [PCI DSS]: https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard
  # [NACHA file: https://files.nc.gov/ncosc/documents/eCommerce/bank_of_america_nacha_file_specs.pdf
  Background:
    Given a Space with a Room with Check Drop Off Furniture fully configured

  # For valid link credentials data, see https://plaid.com/docs/auth/coverage/testing/#testing-the-link-flow
  Scenario: Dropping off an Electronic Check with a Valid Bank Account
    Given a Guest begins the Check Deposit Workflow with the following data:
      | check_amount          | $1000                     |
      | earliest_deposit_date | 1 week from now           |
      | memo                  | Initial investment amount |
      | email                 | person@example.com        |
      | name                  | Person McMoney            |
      | signature             | Person McMoney            |
    When a Guest completes the Plaid Link Workflow with valid credentials
    Then the Space Owner's Pending Check's list includes the Check
    And the Space Owner's Pending Checks NACHA file looks like:
      """
      lol i don't know i need to look the file format up
      """
    And the Guest receives an Email letting them know that their Check is Pending Deposit

  Scenario: Depositing Pending Checks from the Check Drop Box
    Given there are Pending Checks in the Check Drop Box
    When a Space Owner downloads the Pending Checks
    Then the downloaded NACHA file file looks like
      """
      lol i don't know this yet either
      """
    And the Check Drop Box has no Pending Checks
    And the Check Drop Box has the formerly pending checks Deposited
    And the Depositors receive an email letting them know their Check is being deposited.
@anaulin
Copy link
Member Author

anaulin commented Jan 23, 2021

@zspencer placeholder for any notes we want to make for this prototype. Didn't add it to any milestone, since I don't know what might make sense. Please edit / rearrange as appropriate.

@zspencer
Copy link
Member

Thanks @anaulin !!!

@zspencer zspencer changed the title Prototype "cash register" piece of furniture Prototype "capital raise" piece of furniture Jan 28, 2021
@zspencer zspencer changed the title Prototype "capital raise" piece of furniture Prototype: Check Drop Box Furniture Feb 5, 2021
@zspencer
Copy link
Member

zspencer commented Feb 5, 2021

I've updated the body with a "Line of Action" for how the scenarios may play out. My plan is once #191 is merged and safely deployed to begin putting together a branch to begin playing with Plaid Link.

zspencer added a commit that referenced this issue Feb 9, 2021
* Initial draft of feature file for check drop off feature

See: #186

* Describe what Furniture is for within Convene (#194)

As well as began to add developer context.



Co-authored-by: Zee Spencer <zspencer@users.noreply.github.com>

* Clarify that the feature is unimplemented (so CI doesn't scream)

* Helps to use the right tag

Co-authored-by: Whitney Levis <ms.whitney.levis@gmail.com>
Co-authored-by: Zee Spencer <zspencer@users.noreply.github.com>
@zspencer zspencer added back-end ✨ feature Reduces Client's Burden or Grants them Benefits labels Feb 18, 2021
@zspencer zspencer changed the title Prototype: Check Drop Box Furniture Furniture: Check Drop Box Furniture Feb 18, 2021
@zspencer zspencer changed the title Furniture: Check Drop Box Furniture Furniture: Check Drop Box Feb 18, 2021
zspencer added a commit that referenced this issue Mar 7, 2021
See: #186

One thing that was concerning me was the way that Furniture code
definitions was starting to spread throughout the codebase, particularly
how if someone wanted to define a piece of furniture, they would have to
define stuff in `app/views` as well as `app/lib/furniture` and
`config/routes.rb`

This consolidates all those entrance points, so that Furniture can be
defined in a relatively localized place.
zspencer added a commit that referenced this issue Mar 7, 2021
See: #186

One thing that was concerning me was the way that Furniture code
definitions was starting to spread throughout the codebase, particularly
how if someone wanted to define a piece of furniture, they would have to
define stuff in `app/views` as well as `app/lib/furniture` and
`config/routes.rb`

This consolidates all those entrance points, so that Furniture can be
defined in a relatively localized place.
zspencer added a commit that referenced this issue Mar 7, 2021
See: #186

One thing that was concerning me was the way that Furniture code
definitions was starting to spread throughout the codebase, particularly
how if someone wanted to define a piece of furniture, they would have to
define stuff in `app/views` as well as `app/lib/furniture` and
`config/routes.rb`

This consolidates all those entrance points, so that Furniture can be
defined in a relatively localized place.
@zspencer zspencer added this to the 1.0 - Andromeda milestone Jul 10, 2021
zspencer added a commit that referenced this issue Jul 10, 2021
See: #186

Also, Utility Hookup configuration is now encrypted at rest; which
should make things a bit safer.

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Jul 10, 2021
See: #186

Also, Utility Hookup configuration is now encrypted at rest; which
should make things a bit safer.

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Jul 24, 2021
See: #186

Also, Utility Hookup configuration is now encrypted at rest; which
should make things a bit safer.

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Sep 18, 2021
anaulin added a commit that referenced this issue Sep 18, 2021
…377)

See: #186

Co-authored-by: Ana Ulin <ana@ulin.org>

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Sep 18, 2021
See: #186

We'll likely want to figure out how to provide a "Scope Like" interface
for naming queries; but this is "good enough for now."

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Sep 18, 2021
See: #186

We'll likely want to figure out how to provide a "Scope Like" interface
for naming queries; but this is "good enough for now."

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Sep 19, 2021
See: #186

Co-Authored-By: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Sep 19, 2021
* Checks have a status which they can be queried by

See: #186

We'll likely want to figure out how to provide a "Scope Like" interface
for naming queries; but this is "good enough for now."

* Rename ItemAssociation to ItemRepository, add tests

See: #186

Co-authored-by: Ana Ulin <ana@ulin.org>
zspencer added a commit that referenced this issue Oct 5, 2021
See: #186

A quick proof of concept for writing policy specs in furniture.
zspencer added a commit that referenced this issue Oct 5, 2021
See: #186

A quick proof of concept for writing policy specs in furniture.
zspencer added a commit that referenced this issue Oct 10, 2021
See: #186

A quick proof of concept for writing policy specs in furniture.
zspencer added a commit that referenced this issue Oct 11, 2021
See: #186

A quick proof of concept for writing policy specs in furniture.
@zspencer zspencer changed the title Furniture: Check Drop Box Furniture: Payment Form Oct 30, 2021
@zspencer zspencer mentioned this issue Dec 16, 2021
6 tasks
@zspencer zspencer added ⛰️ epic Work we expect will take multiple patches to complete 🗜️ Gizmos A piece of functionality that can be embedded in a Space and removed back-end ✨ feature Reduces Client's Burden or Grants them Benefits ⛰️ epic Work we expect will take multiple patches to complete labels Oct 21, 2022
@zspencer zspencer modified the milestones: 1.0 - Andromeda, 1.1 - B? Feb 26, 2023
@zspencer zspencer changed the title Furniture: Payment Form Gizmo: Payment Form Jun 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🗜️ Gizmos A piece of functionality that can be embedded in a Space
Projects
None yet
Development

No branches or pull requests

2 participants