šŸ’³ Stripe Marketplace Express Checkout + SCA 3D Secure - New Plugin from Zeroqode

Hi Levon,

I’ve been having some trouble with this plugin and am in need of some help.

I’m creating a tutoring marketplace where I link students and tutors. I have a repeating group, where each cell is a tutor listing (1 cell per tutor, essentially). Everything is working great, except for the fact that on the last step of payments, I get an error when I’m connecting the buyer and the seller. I’m getting an error for my header value.

Here is what I have in my header

image

And here is how I defined the Seller_ID previously in my workflow (I created it within the ā€œcurrent userā€ section, then added it as a variable within ā€œListingā€)

image

image

If the tutors had their own pages where they were paid, the header value in the workflow would be as follows:

(header) Stripe Account: Current Page Service’s Creator’s Seller_ID

However, it seems that because tutors have their advertisements within cells in a repeating group, I can’t use the above syntax.

I tried posting on Zeroqode, but every time I tried to login to the forum section, it said there was a problem with my account and I should contact the administrator.

Can you or anyone else help me?

Hello, @seenamakari
Thanks for reaching out!

First of all, please allow us to recommend you to check our Demo Page for the plugin, because there you find the correct settings:

As for the issue with the error in the Header, please check the privacy settings for your users. It is possible that Seller ID is visible only to the Current User so they are not visible to the API (plugin itself).

If the privacy settings are correct, let us know and we will continue to investigate the issue :pray:

Best regards,
Zeroqode Support team

Hello,

How do I make the current user public instead of private? The default setting is private and I tried changing it but don’t know how.

Thank you!

Hello,

I changed the privacy setting to public but I’m still getting the same error. What should I test next?

Thank you!

Hello, @seenamakari
Thanks for the feedback.

Please allow us to note that the most probable reason for the issue - configuration of the Header:

In case the steps before this were configured incorrect - the process might be wrong.
Thus, these are the required steps to follow, as per our demo:

  1. create a bank account token
  2. when bank account token is created, you implement the following action steps: 1) creates a new seller; 2) sets the SellerID etc. (but it would be best to save this SellerID into your database at this step, as you’ll need it later on)
  3. separate button for creating a card token
  4. when card token is created, you implement the following action steps: 1) create a customer; 2) set state CustomerID; 3) set state CardID; and when actually paying, you have to: 4) Link customer to a seller; 5) seller charge a customer etc.

As for Connect express/standard account action, it is important to mention that you’ll also have to Complete express/standard account connection afterwards.
When connecting, you have to specify the redirect_uri that you want your user to be redirected after saving Stripe information, and make sure this URL is present in your Stripe Dashboard.
When completing, user gets back to your provided page and will be redirected with a URL param. After this action step, you have to also save the resulted ID from the previous step (into your database as previously mentioned for seller ID).

Please check the suggested thread and our docs as well, for more information. Try to replicate the demo including all steps with appropriate details, then give it a try again.

On our Demo Page, you can try it by pressing on ā€œTry Demoā€ button.

Please check all these steps and let us know about the result.
Best regards,
Zeroqode Support Team

Hello,

I think I figured out what the issue is, but now I have an additional question.

I believe the reason it wasn’t working was because I don’t know how to define the Seller_ID so that it works within a repeating group. After doing some tests with some text boxes, I’ve realized that each cell has the same Seller_ID despite having different sellers. I believe it’s due to the following reason:

Current User’s Seller_ID gives the seller ID of the buyer, not the seller (when browsing the list of sellers as a buyer).

While I don’t have an error in the header group anymore, I still can’t make payments.

How can I define a Seller_ID in a sign-up page, and have it carry through to the seller’s cell in the repeating group? I tried defining it in my ā€œlistingā€ group but that kept giving me the header error. I ask this question with much more detail here Stripe Marketplace plugin: how to link a buyer and seller in a repeating group?

The only difference is that I changed the header value from ā€œParent Group Listing’s Seller_IDā€ to ā€œCurrent User’s Seller_IDā€., and I removed ā€œSeller_IDā€ from the ā€œListingā€ data set.

Thank you!

Hello, @seenamakari
Thanks for the details.

As we can see from your screenshot, the issue is related to the creating of the Seller ID within your application.
Can you please let us know if you created a Seller ID without the Repeating Group? So, in case the creation of the ID worked previously, there is a chance that RG affects the functionality.

Please find the workflow for this action from our Demo Page. You should just replicate the settings:

  1. Create the Custom States for the page:

We highly recommend you to try creating the Seller_ID without RG firstly, and after succeeding in this process- combine it with the RG.

Please use our Demo Page for replicating the settings and configuring the app.

Best regards,
Zeroqode Support Team

Hello, i cant find the error in the workflow i make a customer, then create a sesion then use the go to checkout and it returns an error

ERROR1

Also can you guide me, im trying to make a marketplace hold a charge and then after an action/time passes it will send the money to the seller with a comision for the marketplace.

Hello, @renegh
Thanks for using our plugin and for reaching out.

As we can see from the provided screenshots, part of the required data is missing in your workflow.
Please find the screenshots from our Demo Page with the correct configuration:



The most probable reason for the issue - incorrect creating of the Seller’s ID.

Please verify your keys and screens above, and let us know if it helps.
If not, share with you the screenshots of the keys and all workflow (not only one action).

Looking to hearing from you soon.
Best regards,
Zeroqode Support Team

Thank you for making this plugin and the video tutorial. I am struggling to determine which types of actions/events I need to use… and am wondering if you anyone can provide some direction.

*Context: I have a marketplace app much like AirBNB. When customers book from a host… I want to authorize a payment intent immediately at booking… and once the host accepts the booking (which could be a day or 2 later), I want to charge the customer the full amount. Then I want to wait until the end of their stay to disperse the payment to the host (minus our fee.)

  1. What is the action I want to use? I am guesssing ā€œCreate a session, mode = payment, Off_Sessionā€
  2. Am I creating a new customer right then? If so, how do I prevent creating duplicate customers when they buy again?
  3. How do I handle the dispersment to the host? Do I have to tell Stripe right away the dispersement date… or can I schedule the dispersement within Bubble at anytime I want?
  4. As a Marketplace, if you control the payout timing… does that make you an employer? Or are the sellers still considered contractors/self-employed.

Thanks for the reply. I think I solved my problem so I will post my results here for others to benefit…

Step 1: Booking Request

  • Make sure to have a Marketplace Token on page.
  • Make sure to have a ā€œTransactionā€ data type in the DB.
  • When the customer clicks ā€œBookā€ workflow = (Create Thing ā€œNew Transactionā€, Create Session w/Capture Method set to ā€œManualā€, update Transaction from step 1 with ā€œSession IDā€ and ā€œIntent IDā€, go to Checkout SCA. This will AUTHORIZE the charge.

Step 2: Booking Accepted

  • When host accepts the booking, use workflow action ā€œCapture a payment intentā€ and lookup the ā€œIntent IDā€ from the transaction data type previously created in DB. This will CAPTURE the charge.

Step 3: Disperse funds to host

  • Scheduled to run 24 hours after guest check in, use workflow action ā€œCreate a transferā€ to host. This will PAY the host their amount, while leaving any remainder in the platforms account.

*These instructions are not ALL INCLUSIVE. You’ll need to still reference Zeroqode’s above tutorial (which is awesome) for configuring the workflow action fields. These are just the added things I needed to do that were not included in original docs.

**For duplicates… it looks like just using conditionals on workflows if someone has existing stripe ID or not.

***I still have not found whether receiving the funds from the booker… and then transferring to the host at a later date causes any legal implications (such as now hosts become employees instead of self-employed) but I’m fairly hopeful it doesn’t so long as agreement terms language is clear.

1 Like

@ZeroqodeSupport

I must be misunderstanding the application of the Redirect URI when connecting a stripe express marketplace seller.

I’ve successfully connected accounts, but I can’t get stripe to redirect me to the correct URI.

I have correctly setup my two desired URI’s in stripe:

and I have setup the URI on each button appropriately (I believe)…

But, stripe always redirects me to my default URI setup on the stripe connect settings.

I may be wrong, but I think this is because the Redirect URL the Stripe Marketplace Express Checkout plugin generates contains dynamic data.

With this dynamic data, Stripe doesn’t recognize the custom URL, and so it uses the default URL set in my Connect account settings.

If the URL must exactly match the URI’s I’ve set in my connect account (which Stripe says is the case) then the only way for me to setup multiple functional redirects is to create a URI in stripe for every single user on my platform with their dynamic data. (which is certainly not an option)

I have different actions that need to be taken after successfully completing depending on the type of user setting up their account. How can I accomplish this if the URL feature does not function this way?

Hello @Tyler1

Thank you for reaching out.

It is definitely not an option. We would advise you to set up the redirect on Bubble itself, and not the plugin. You can set up a redirect to a specifically created page and from there send a user to a page you would like them to be on. Also, you will have to save the URL to the database and check the URL for completed conditions, e.g: set up conditionals on the URL too, if the User/URL is ā€˜true’ send a user to a ā€œspecificā€ page. This method will likely take a little longer, but it is less complicated and more likely to work than setting it up dynamically for each user with the Stripe plugin.

Please let us know if you have any other questions.

Regards,
Zeroqode Support Team

1 Like

Okay perfect!

Thank you for the suggestion.

Out of curiosity, how is the redirect uri function in the ZeroQode plugin intended to be used? I can’t find any docs on it’s intended purpose.

Always happy to help!

The redirect URI function is made to send one type of user to a particular page after connecting their Stripe account. If you don’t want to redirect a user to another page you just leave the field blank and the user will be redirected to a default page in your application settings.

image

Please let us know if you have any other questions.

Regards,
Zeroqode Support Team

@ZeroqodeSupport checkout is successful on desktop but throws a Go to checkout a SCA error on mobile while mobile is vertical. If I turn my phone horizontal checkout loads and takes me to the stripe checkout page. Could you assist me with this?

Hi @ZeroqodeSupport I also tried on your demo page and didn’t have an issue. That’s why I’m not sure where I went wrong.

The issue only happens on mobile.

Here is the workflow set





Here is a screen record on mobile showing the issue: Stripe Plugin Error.mov - Google Drive

Thank you

Thank you for providing additional information.

It is indeed very strange behavior, however, we would suggest you to do the following steps:

  1. Add a pause for a few seconds between the ā€œcreate sessionā€ and the ā€œGo to checkout SCAā€
  2. Check the logs in your Stripe Dashboard(developer menu), and please share it with us if there are any errors.
  3. Try to change the browser to Google Chrome or any other on your iOS device, see if the issue still persists.

If you still have this after following the mentioned steps, please record a video (step by step action processing with the debugger on), to see where exactly the error happens so we can investigate it further.

Looking forward to your reply.

Regards,
Zeroqode Support Team

Hi @ZeroqodeSupport,

I have received the following notification:
stripeproblem

Could you please help?

Hello, @cooper.king
Thanks for your question.

In order to investigate your issue and provide a solution for this case, can you please share with us the screenshots of the ā€œGo to checkout a SCAā€ action?
As we can see from the errors code, the session ID is incorrect. Please find example from our Demo Page:



Please compare your settings with those provided above and let us know if the issue was found.

Best regards,
Zeroqode Support Team