Based on the docs, it seems we need to provide Shopify with our Stripe platform account ID, then subsequently obtain our “shopify_payments_account_id” from Shopify as part of this process in order to properly tokenize a payment. However, the docs aren’t clear on exactly how to go about this:
When your app creates a new checkout for a store with Shopify Payments enabled, Shopify creates a Stripe account for the merchant as part of the Connect integration, and returns the shopify_payments_account_id. You can then get a credit card token from Stripe to complete the payment.> > To get access, provide Shopify with your Stripe platform account ID. You can query for this ID using the Stripe API.
Up to this point we have implemented all API requests necessary to create a checkout, add line items, shipping, etc. and have even sent a tokenized payment to Shopify via the checkoutCompleteWithTokenizedPaymentV3 endpoint. Unfortunately the payment results in an abandoned checkout with error “Failed to find requested vault card”, which I assume is due to missing links between our Stripe and Shopify accounts.
In searching these support forums I have seen a variety of similar questions asked, with an equal variety of answers/solutions, though the newest ones are from mid 2020 and may no longer be accurate. Any assistance with how to go about completing this Stripe integration is greatly appreciated. Thanks!
After some in-depth discussion with our Shopify reps, we were unfortunately not able to gain any traction on with this capability. Custom checkouts are simply not allowed/available to private apps, despite having access to all of the APIs necessary to create a custom checkout. The only viable solution for a truly custom checkout is to create a marketplace app, which comes with its own set of challenges and was simply not a fit for our use case.
I think it may be possible to run payments through a third party like Stripe, and then do a “free” checkout via the Storefront API, but this is not something I’ve explored in depth as, again, such a solution wouldn’t quite work for our use case. In the end we have had to find creative ways to customize the Shopify Web Checkout to fit our needs, which, again, presents its own set of challenges, but we’re managing.
Best of luck to you and I hope you find a workable solution.
I was also exploring the option with third party payment and marking it as free but this is clearly stated in the API terms/rules on the top not to do that. After all, that way we would be subverting Shopify payments and that would cut into the pockets so I don’t want to the risk with my client shops potentially getting shut down.
I am going in the same direction as you with redirecting to their checkout page and finishing the process there but I am running into hopefully a final issue. The user is logged in on my website/store with a customerAccessToken but according to Shopify, this is not a proper “login” whatever that means and when they go on the checkout page they are not logged in.
We have 2 different platforms that run through the same Shopify instance checkout:
One platform allows for our own internal authenticated member accounts, and we use the Multipass API to log the user in on the Shopify side before redirect to checkout. (We create a Shopify user account when a user signs up on our site).
The other platform is guest-only, so we simply have accounts as optional in our Shopify instance. The obvious downside here is there is no customer order tracking capability, but we’re working toward that
I know that was a brief answer, but hopefully that helps a bit.
I noticed you mentioned that custom checkouts are not permitted for private apps. I’m curious if this same restriction extends to public apps that function as sales channels. I’ve been searching for an answer to this question, but unfortunately, I haven’t been able to find a definitive response. Additionally, I’ve reached out to a few contacts at Shopify, but they also seem to be unsure about this matter. Thanks for your help.
It’s been a while since I’ve researched this, and things may have changed
since, but I do recall reading that the only way to implement custom
checkout is to create a public “payment gateway” type app. So yes, I
believe that is possible, or at least it was when I last researched.