Requests: Unexpected error_verify_payment when there are no drivers available - uber-api

We have been testing the Request API and identified that when we test requests for a car type (say Uber XL) in an area in which you report on the Uber App that there are no cars (we tested in Luton) we have no way of conveying this to users of our App since we get an error (see below) and cannot go through to booking a car and getting the No Drivers Available state.
The error we get is:
error_verify_payment
Please visit your account settings and re-enter one of the existing payment methods by tapping "Add Payment". If there are any issues, please reach out to support#uber.com.
We need guidance from you how to overcome this error as we cannot reliably tell our users at the moment that there are no cars.
Thanks!

Related

Stuck in Facebook's Access Verification hell for Tech Provider Business

We use the Facebook API in our web app to provide a "publish to Facebook group" feature directly from the web app. Customers can publish the results they are achieving thanks to our products in our group.
To implement this very simple feature we had to duck, provide screen recordings, send business registration papers, give login credentials, describe the process from every perspective, crawl and bent.
Then
on Dec 15, we received the following message:
"We’re now requiring an admin of your business, [....], to complete access verification. This is a new process that asks for information about how you use the Meta business assets and information of your clients, so we can verify that your business is a Tech Provider."
Also in the same message:
"This typically takes around 10 minutes to complete and you’ll only need to do this once."
Since then I filled in the form 9 times, with serious effort. But every 5 days it just get rejected without a clear reason given, and there is no chance to contact a Facebook support.
Does anyone know how to fill in the "Access Verification - prove you are a Tech Provider form", so I will get accepted?
The actual questions that they keep asking are:
Add details about how your business will use Platform Data (i.e., any info or data you obtain from us) to enable a product or service on behalf of your clients.
Describe how your clients use your product or service.
I already tried the solution proposed here:
Stuck in Facebooks Access Verification hell
quoting their questions, but it has been in vain...
The time is running out, in some days Facebook is going to block the API if we don't pass this verification process, but I don't know what else we can try...
I tried to contact Facebook, but this seems to be impossible. Some forms (App Review Support) just give a generic error message.
I tried to post a request of help to the Facebook Developer Group, but they rejected the request because it's not related to a development issue.
Same when I tried to open a ticket with the Facebook tech support for a bug; they answered that it's not a technical issue.
There is no guide from Facebook on how they want this information to be provided.

How to get purchaseHistory for IAPs with BillingClient

As the documentation says:
queryPurchaseHistoryAsync():
Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.
So lets say I would like to make an IAP for the user to remove Ads forever from my app.
How do I decide with a fresh install if that user already purchased that IAP if this function also returns the "canceled" IAPS?
I would like to query the actually purchased IAPS, not everything. Becuase that way a user could unlock the Ad free version with a cancelled IAP.
To make it worse, the Purchase class doesn't have status like "cancelled" or "consumed" I cannot decide the state of the user's purchased IAPS.
Am I missing something here?
Thanks in advance
The billing client documentation states it checks for the user.
Then we have the question: Who is the user
If you look at the steps taken for the billing api on https://developer.android.com/google/play/billing/billing_library_overview then you see that a connection to google play is needed.
What happens then is that the current user on android, the account they are signed in with on google play and their mobile device is determined to be the user.
So if they purchased it via google play in app, it will always be assigned to that user on google play and that is what's being queried by this. No matter on which device they are logged in, Their tablet, smartwatch, phone, television, etc...
How to get a list of actually bought products
Instead of using async that gives you everything included abandoned shopping carts I suggest you use https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases
That way Get purchases details for all the items actually bought and paid within your app. This method uses a cache of Google Play Store app without initiating a network request.
Note: It's recommended for security purposes to go through purchases
verification on your backend (if you have one) by calling the
following API:
https://developers.google.com/android-publisher/api-ref/purchases/products/get
If you read that API link it's easy to check with the online cache if the purchase was valid with a simple GET request.
Personally I would build in a check if the phone is suspect to be rooted before doing the manual background check with the purchases API that sends a request to the store.
Phones that are not rooted have a higher trust level, as the user are probaly not very tech savvy and will not have a shimmer of a clue how to circumvent such checks, and the google play cache will be updated regularly, reflecting trustworthy data.
When a phone is suspect to be rooted(you can read protected directories/write to them), then perform the check online if they bought the stuff each time you deem it neccesary.

Sabre API - ICE Security System: 606

I received the credentials to start developing with Sabre (IPCC, Password, Sign-in, and TA) but I am unable to create a session.
It gives me the error "ICE security system: 606"
I found this on https://developer.sabre.com/docs/soap_basics/status_codes_and_errors
USG_SECURITY_ICE_ERROR
Internal
The client application needs to stop processing for at least 500
milliseconds before attempting to retry the message.
But there was nothing with "606" beside it, so I don't know if that's the correct message or not. Any thoughts?
USG_SECURITY_ICE_ERROR can occur for a lot of reasons, in particular, for the error code 606 it means that the user you were trying to use has not been provisioned with necessary accesses.
If that user was given by Sabre, I recommend you to contact the help desk so they can engage the corresponding team. If it was created by the agency and you want to use it, please contact your account executive in order for them to request the access.

Debugging a zero-transaction result from the transactions endpoint in customer data api

We use the https://financialdatafeed.platform.intuit.com/v1/accounts/account_id_goes_here/transactions endpoint on a recurring basis to fetch transactions for all of the accounts we sync. We've been using this stably for quite awhile now, across a wide variety of accounts spanning 100s of financial institutions. This works great.
However, occasionally we get a report from a user who claims that we're not receiving transactions that they know to exist. Our investigation protocol is as follows:
To ask the user if they see the transactions when they sign into their bank's web site directly
To ask them to confirm that the credentials they used on their bank's web site are precisely the ones that they entered when setting up credit card sync on our site
We then manually inspect the response body from the above mentioned URL, to make sure that the HTTPS response indicates HTTP 200 and has a non-error response body (our app catches these errors correctly, but if debugging mysteriously missing transactions, we inspect the response body visually).
We look to see whether we're successfully syncing transactions for any other user that relies on the same FI. If we are, we become confident that both the bank and Intuit APIs are well-behaved, and that the problem is on our end somehow.
We sometimes ask users to try the same FI in Mint, guessing that if it fails in Mint, that it might be a bank or FI issue.
Investigation steps 1-2-3-4-5 tease out the root cause of at least 99% of the times when a user emails us to say that we're not successfully receiving their transactions. However, the remaining 1% are the tricky ones.
Today I'm faced with a situation where a user sees the txns on their bank website, swears that they are using the same creds when adding the card to our site, the HTTP response from the endpoint is HTTP 200 but contains zero transactions, but yet when the user tries via Mint they successfully see transactions.
However, the particular FI (OnPoint Community Credit Union) is not one where I can do investigation step 4, because we have no other users that currently rely on that FI. Is it possible for someone at Intuit to check to see whether there is evidence that users relying on OnPoint Community Credit Union are currently, successfully, retrieving transactions from that particular FI?
Any other suggestions for how to further deduce whether the zero-transaction response is due to: (a) user error, (b) bank server responding incorrectly, (c) Intuit server responding incorrectly, vs (d) our app behaving incorrectly?
Can you please submit a support ticket to Intuit with the Account_ID that is missing the transactions so that we can diagnose the issue? The first place to start when diagnosing the issue is to look at the Agg_status_code to make sure that reflects a '0'. If we are unable to login due to invalid credentials or MFA might be a cause of the missing transactions. I can help diagnose though once a ticket is submitted.

Using GA Data Export API to Get All UA's

I am using the GA Data Export API to interact with Google Analytics and I'm making a lot of progress, I am using this URL Endpoint initially to pull all the profiles under an account:
https://www.google.com/analytics/feeds/accounts/default
This URL retrieves each GA ID (profile) and each UA. One thing I've realized is one account can contain multiple UAs and when this happens, this request pulls all profiles. We have a client who has about 115 profiles under like 10 different UAs, and the request takes about 30 seconds for the initial request (and then I believe it must be cached, because it speeds up considerably after this, but then the next day the same thing occurs).
Is there a way to get a list of UA's without pulling the profiles? This way I can query the UA specifically for the profiles instead of pulling each one.
Any advice on this would be really helpful!
Thanks
UPDATE: Here's some documentation on the specific call I am using right now:
http://code.google.com/apis/analytics/docs/gdata/gdataReferenceAccountFeed.html
UPDATE 1: I have found some interesting information in the docs
Once your application has verified
that the user has Analytics access,
its next step is to find out which
Analytics accounts the user has access
to. Remember, users can have access to
many different accounts, and within
them, many different profiles. For
this reason, your application cannot
access any report information without
first requesting the list of accounts
available to the user. The resulting
accounts feed returns that list, but
most importantly, the list also
contains the account profiles that the
user can view.
So this means that you have to use the default accounts call to get these back? Surely, somebody has had this issue before?
So apparently, you can query the account if you know the UA-ID, however there is no way to get back a list of only UA IDs.
One way you can do it is have the user enter their own UA ID instead of having them choose one; not as user-friendly as it could be but better than making the user wait 30 seconds!