Stripe gateway rejecting live payments, thinking it’s in test mode - stripe-payments

I'm trying to test my Stripe account with a live payment using my own debit card, but even though the toggle on my homepage dashboard is pointing to "Live", I get the following error on my site:
"Your card was declined. Your request was in test mode, but used a non test card. For a list of valid test cards, visit: https://stripe.com/docs/testing."
Dummy test numbers work ok in either mode, but it just keeps thinking it’s in test mode. I’ve checked the test and live API keys and they are correct, having re-entered them several times with no change.

The toggle you see on your dashboard doesn't actually affect your ability to create charges in test mode or live mode, it just changes the view on the dashboard.
You can always use both test mode and live mode, no matter what that toggle is set to. This is done by specifying which set of API keys you're using to make a charge: https://dashboard.stripe.com/account/apikeys

Related

How to check Gmail API usage status in Google Console?

I'm sending automated emails from my account to my account, I'm using Integromat (now Make) and I've done all the necessary stuff in the Google Cloud Platform (or Console) to authorize Integromat. The scenario works and I send automated emails.
However when I go to check the usage status to see how many emails I have sent and how many I have left in the Google console, it shows no results.
For reference, I go here https://console.cloud.google.com/apis/api/gmail.googleapis.com/ to check the status, but all the graphs show no data whatsoever, despite the automated mails getting sent normally. I have the correct project selected when doing this.
There is no way to see stats on any of your google usage quotas. The Stats page on Google cloud console. Is at best an estimate and not real time in any sense of the word.
Either create your own counter, or just wait until you get the quota error. I normally go with the latter.

Phone number for testing Stripe connect standard account onboarding?

I'm testing onboarding for a a Standard Stripe Connect account, following the docs and using the phone number 00000000000 but:
I've tried 9 zeros and 10 zeros but both give the same result. I also tried removing the country prefix, but you have to select a country (removing country code is not an option).
Docs do say:
Force-skip the account form instead of having to fill out an entire account application (Standard)
But what if I want to see what customers see? Is that simply not possible, even in test mode?
That test phone number is specifically for Express onboarding, with Standard you'd skip the form entirely as you pointed out.
If you want to see what customers see, you could add a real phone number to get through the flow but stop short of actually submitting the form.

How can I get my app using Instagram Basic Display API pass app review?

This is now the 4th time I am sending my app for review. I want to use Instagram Basic Display API and therefore require instagram_graph_user_media permission to access media (and incidentally instagram_graph_user_profile). I have 2 test users, my personal IG account with a bunch of pics and a test user that I created with an empty feed. I can login with both users. But when the Instagram app reviewer is logging in, my app can't access their media. I successfully retrieve the access token but when comes the time to call the Graph API here is what happens:
https://graph.instagram.com/me/media?fields=media_type,media_url,permalink,thumbnail_url&access_token=IGQV....
returns
{"error":{"message":"Application does not have permission for this action","type":"IGApiException","code":10,"fbtrace_id":"A99vuaAC41DSvlt0Hxvcly-"}}
Here is an update from my latest app review rejection. This time, I added the code above to catch code 10 errors and if I did, try to fetch the user profile data. Guess what, that failed with a code 10 error as well. So, whatever the app reviewer is doing, it is granting access to neither the profile or the media API.
Another update. The reviewer I had this time sent me two screenshots, one of the Instagram login screen and one of my app's error screen. Interestingly, the Instagram login screen had a strange Instagram username that I have never heard of before. It certainly wasn't my test Instagram account. So I now have evidence of them both using my test account and their own special test accounts.
The question in my mind now is, is there something special about their test accounts that ruins the process? After all, I have not added them to be testers of my app, although if someone who hasn't accepted my test invite tries to log in, it errors in an entirely different way.
I am running out of ideas here. My next thing to try is to exchange the short-lived access token for a long-lived token, as well as trying to use the new access token to server-side (where I exchange the code for the access token) to check if the access token ever works or if it is created with insufficient access.
This whole process is a nightmare.
I will put this as an answer because we have dealt with this thing now for over 2 weeks and quite a few submissions. I think you should remove the bounty though.
What you have done so far:
Created and approved IG test accounts
Double and triple checked parameters & permission
Tested your app a dozen times
Created dozens of screencast spoon-feeding, making sure a 5 yo kid would be able to test your app
Having the above, I am sure you noticed:
The reviewer will add a generic text as 'reject reason.'
The reviewer will submit the irrelevant and out-of-scope screenshot(s)
The reviewer will not test with the Instagram credentials provided.
Maybe he WILL test with the Instagram test credentials provided (in fact you're left in the dark as to how they actually simulate IG access)
The reviewer will claim he's unable to sign in using provided credentials
The reviewer claims having tested, but you see no traces in your DB whatsoever (would be smart to do so, to know whether they're actually doing something or not, up to a certain point)
Conclusion
You have to know that your app is at the reviewer's mercy and approval sometimes arbitrarily. Eventually, you will find your app being approved while having submitted it to change at all.
This should be obvious but when you are so deep in the hole and try to think why your app is being rejected you stop thinking logically.
Here is what I did:
Create a dummy Instagram account.
Link this account to an email provider that doesn't require a phone/another way of verification (I used ProtonMail).
Use an Instagram Tester account (do the whole process).
In your instructions let the reviewer that they need to log in to ProtonMail to get the Instagram confirmation code; since they will do login from an unknown location (if you could simulate the above in your screencast that would be great, but I didn't do it).
If you apply for both instagram_graph_user_profile and instagram_graph_user_media you need to do this in 2 steps individually.
The second step getting the instagram_graph_user_media permission is much easier.
I lost a couple of days and tried everything and anything before I realized that.
Hopefully, this should help someone that is having the same problem.
The app was approved the first time.
It is possible that the App Reviewer is unchecking the instagram_graph_user_media access in the authentication screen, thus giving you only access to instagram_graph_user_profile. I had the exact same error code being thrown back my way, and I did the following:
Catch the error code 10 error
Try to fetch the https://graph.instagram.com/me?fields=account_type,username&access_token=${accessToken}
If that works, then display a page that makes it clear that you have successfully connected to the Instagram User Profile (and here is your username and account type) but, if the user wants to do X they also need to approve media access, and here is a button to go and reauthenticate again.
See the image I have below.
Now, I did the above and I still got an app review failure of code 10, which means that the second fetch to only the username and account type failed, and I do not know how they could possibly have managed to do that.
They admitted issue but not fixed yet: https://developers.facebook.com/support/bugs/543633182940083/
To get approved for Instagram Basic Display:
create a Facebook test user
create an Instagram account with that FB test user
give the credentials (email/address) of the Facebook test user to the reviewer in the Instagram Basic Display submission
Basic Display API review process is so bad its beyond words. I have been hitting the brick wall of their rejections for 3 weeks and almost got bald by pulling my hair in frustration. You really have to read between the lines to get a hint of what they are doing.
Turns out what the reviewer was doing is selecting "Continue with Facebook" on the Instagram Login screen and going that route (via Facebook login) instead of entering the instagram credentials directly. Only once I realized that I was able to pin point the problem. Interestingly though testing on the Simulator was fine but the problem only became apparent once I tested on the real device. The reason - simulator doesn't have neither Facebook app nor Instagram app installed, so it behaves differently versus the device where these apps get involved in the flow via deep linking.
The bottom line:
Test on real device.
Make sure to test both the direct Instagram log in and the "Continue with Facebook" option.
Test on the device with and without the Facebook and/or Instagram app installed.
Make sure to use brand new instance of WKWebView with non persistent data store to bring up the login screen, so that it doesn't have any cookies from previous logins:
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = WKWebsiteDataStore.nonPersistent()
let webView = WKWebView(frame: .zero, configuration: configuration)
Pray the God of your choosing.

Stored Value Sets that are accessed throughout a Bixby Voice Experience

I am completely new to Bixby development so I apologize in advance if this is a newby question that doesn't make sense. I'm trying to understand the best way to store value sets returned from external APIs to use throughout Bixby Voice experiences. An example might be an API that gets all the menu items at a restaurant or an API that gets all the clothing catalog items from a store. When users interact with the data to search or transact I don't want to have to go back to the external API to get the value set again. For example: Find Vegan Menu options followed by Okay how about pescatarian options. Or: Find dress pants followed by okay how about dress shirts. I'd like to come back to a menu object in the first case or a catalog object in the second without having to re-load the value sets from the API.
In the sample code I've seen all of the value sets appear to be read in each time an action/endpoint/java call is made
There is no local storage in the current version of Bixby.
The easiest solution is to request through API calls. However, http.getUrl() itself is cached by default, and Bixby runs on Samsung server, so no actual API calls in practice when requesting same url in short sessions.
You can read more about http API options and how to disable cache feature by reading more here

Stripe test payments do not show up in dashboard

I am using a PHP Stripe Payment form to collect payments. The payments seem be going through OK and take the user to the confirmation page upon successful completion. I am in test mode and am able to see the payments as they show up in the 'Payments' section of the dashboard. However, when I click on the 'Home' section of the dashboard, I do not see them under the 'Gross volume' tab. There are no error logs created by my code. Also, the Stripe dashboard shows no errors as well. Does it usually take a while for the payments to shown up in the dashboard (even in the test mode)? Or it there something else?
Here's what I have tried after researching on the Internet - clearing browser cache. It worked and showed some of the payments, but its not showing the new charges under the 'Gross Volume' tab, though they show up OK in the 'Payments' section of the dashboard.
Thanks!
You're most likely only creating Tokens but not using those Tokens to create Charges on the server side.
You'll need to make sure you're creating both the Token - using Checkout or Elements - and then the Charge: https://stripe.com/docs/charges
If that's not causing the problem, you'll want to reach out to Stripe Support so they can look into the details for you.
You need to clear out all test data.
Login to your Stripe account
Business Settings
Data
Look for Test data
Click Delete all test data
Go back to your dashboard and click on Payments. Your non-test data will appear.
This is a strange work-a-round because, if I searched for the know good order, the order would show up. So somehow deleting the test data allows the order to appear in the Payment List without doing a search.

Resources