Firmenlogo

Braintrust  ·  Europäische Union , Österreich · Remote

Jetzt bewerben

Details zum Jobangebot

Job Description

Background

We have developed a system that allows for Stripe payments to be processed on a third-party site on behalf of a main site. The purpose of this plugin system is to allow for a site that cannot easily create a Stripe account for their service to still be able process payments.

System Architecture

The system involves 2 plugins:

  • Redirect Payment plugin
  • Remote Checkout plugin

The Redirect Payment plugin is a WooCommerce Payment plugin and is installed on the main site. When a user selects the payment option and select the "Continue to Payment" button on the checkout screen, the plugin will cache the necessary payment detail and redirect the user to the third-party site payment url with a unique order ID. The order is put into a Pending state until either the user cancels and returns, in which case the order is cancelled, or the payment is made and the order is moved into a processing state and the user sees the order confirmation page.

The Remote Checkout plugin is installed on the third-party site and is the receiving end of the redirect from the main site's checkout. With the unique order ID, the plugin sends a REST API request back to the main site to retrieve the order details. With those details, it either generates a one-time payment request or a subscription request. The user can either cancel and return back to checkout in which case the order is cancelled, or the user can process payment and be redirected to the order confirmation form.

In addition, the Remote Checkout plugin will act as a proxy on behalf of the main site for webhooks by forwarding webhook requests to the main site. This is especially important for subscriptions since the webhooks initiate many of the actions that are orchestrated by the WooCommerce Subscriptions plugin such as confirmation of payment or declined payments.

Problem

The current system works well if the Stripe account access is retained. However, if the third-party site decides they no longer want to participate or if their Stripe account is suspended, transitioning to a new third-party site and Stripe account can be difficult, especially for subscriptions due to the reliance on Stripe Subscriptions for processing and orchestrating subscription actions.

If we have another third-party site with a Stripe account that is willing to participate and integrate our remote checkout plugin, we can begin processing one-time payments and new subscriptions immediately. However, existing subscriptions are still linked back to the old Stripe account and would require re-subscribing via Stripe's subscription form with new payment details for the new Stripe account. Currently, there is no easy way of doing this other than by cancelling all old subscriptions and notifying customers to resubscribe to their product subscriptions again.

Objective

The objective of this project is to create a set of changes to the existing plugins that improves the way in which the system handles changes to the state of a third-party site's Stripe accounts with respect to subscriptions. These changes are as follows:

  • Add a status flag for the Stripe account of the remote plugin to mark as active or inactive.
  • When a subscription is due in WooCommerce, a request should be sent from Redirect Payment plugin to Remote Checkout plugin to check on the status of the Stripe account.
  • If the Stripe account is flagged AND there is another remote site configured as another third-party site active for Stripe subscription processing, an email should be sent to the customer that there is an issue with their payment and that they need to update their subscription.
  • A unique link will be included in the email that redirects to the subscription checkout page of the backup subscription account for the customer to resubscribe with new credit card details.
  • When the new subscription is created on the new Stripe account, the old subscription is cancelled in WooCommerce without sending out a cancellation email.

Developer Qualifications & Evaluation

To be successful in this project, you will need to have deep expertise in:

  • WooCommerce
  • Custom plugin development
  • Custom Stripe payment processing implementation with subscriptions

Successful candidates will be asked to provide examples of work and asked specific questions during interviews related to the above.

In addition to the current opportunity, we have many other development projects and opportunities to work together on a more regular basis beyond this single project. Also, there are development plans for expanding upon this particular project for those with advanced Laravel experience as well.

We are looking to create a long term relationship with the right developer, and potential for full time. Hopefully that will be you.
Jetzt bewerben

Weitere Jobs