I'm running into issues trying to test authorization of virtual cards I'm issuing on my test Stripe account. I've been able to successfully create card holders and virtual cards and am currently trying to write webhooks to handle real-time authorizations.
I find the webhook trigger doesn't let me specify a card-holder or a card to try to authorize and whenever I run the trigger, I get a response like this:
Setting up fixture for: cardholder Running fixture for: cardholder Setting up fixture for: card Running fixture for: card Trigger failed: Request failed, status=400, body={ "error": { "code": "cardholder_phone_number_required", "doc_url": "https://stripe.com/docs/error-codes/cardholder-phone-number-required", "message": "You cannot create a card without aphone_numberon file for cardholder: ich_1L9RhDIK0uyzlLuMaZHgCfzP. Please see https://stripe.com/docs/issuing/3d-secure.", "type": "invalid_request_error" } }
The step to reproduce this on my end was to simply run the forwarding command and the issuing_authorization.request commands as described by the documentation. I ran these two commands on separate terminals:
stripe listen --forward-to localhost:7787/v1/virtual-cards/stripe/hook
stripe trigger issuing_authorization.request
I'm not sure of what to do, especially since all card-holders I've created thus far have phone numbers and I have no way of specifying a card holder when triggering via the CLI, or editing one on my dashboard.
I'll appreciate any help I can get or any nudge in the right direction for solving this issue. Thanks in advance for your time!
Related
I have developed a Google Actions Application to buy physical goods. I followed this guide: https://developers.google.com/assistant/transactions/physical/dev-guide-physical-gpay
I get the correct request / response flow:
"paymentInfo": {
"displayName": "Mastercard *ommited for security*",
"googleProvidedPaymentInstrument": {
"instrumentToken": "*ommited for security*"
},
"paymentType": "PAYMENT_CARD"
}
and finally Google returns me an instrumentToken in base64, which I think I can decode and use the ID inside it to call the Stripe API: https://stripe.com/docs/api/charges/create#create_charge-source. I tested it and it works, but seems extrange to me... Do I have to do this for every order that is successful?
My question is: Do I have to call the Stripe API myself? Is there no way Google will do it for me? In case I have to send it, should I do it when I receive the request with this field "userDecision": "ORDER_ACCEPTED" and then update the order if the payment is successful?
I have read all the official Google documentation for Actions and I cannot understand the entire flow of interaction.
As #taintedzodiac mentioned in the comment, if you use Stripe as your payment processor then you will have to use Stripe explicitly each time. This is not something that the platform will do automatically.
It's my first time linking with codemagic, and I'm trying to link my GitHub to the store, then I have received this error,
Publishing failed :| Google Play failed to upload artefacts. The caller does not have permission: { "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }
I think the permission for the service account to access your application is not properly set up.
I would pay very close attention starting from the 8th point in this tutorial:
https://docs.codemagic.io/knowledge-base/google-play-api/
However, I also think that sometimes Google takes some time to get it going, in any case, I would retry creating the service account and paying very close attention to all the details - make sure the service account has access to the right application (also check your bundle id in your local settings etc).
Based on the CodeMagic documentation:
https://docs.codemagic.io/flutter-publishing/publishing-to-google-play/
It seems that the first time required to upload the AAB manually to the Google Play Store.
The very first version of the app must be added to Google Play
manually. You can download the app_release.aab from the build
artifacts. In addition, each uploaded binary must have a different
version; see how to automatically increment build version on
Codemagic.
In my case I've forgotten to invite service account as user in Google Play Console.
The luis resources that I created aren't showing up in the Luis portal (posted a question here) so decided to use the REST APIs to configure things manually. With the REST endpoints I was able to import apps. However, I wasn't able to add LU resource to the imported apps despite that the APIs return success.
Below is the call.
POST https://westus.api.cognitive.microsoft.com/luis/api/v2.0/apps/<appid>/azureaccounts
{
"azureSubscriptionId": "<id>",
"resourceGroup": "<rg name>",
"accountName": "<resource name>"
}
returns 201 CREATED
{
"code": "Success",
"message": "Operation Successful"
}
However, a subsequent GET call returns empty result.
GET https://westus.api.cognitive.microsoft.com/luis/api/v2.0/apps/<appid>/azureaccounts
tried the GET call a couple hours after and it is still returning empty result. What is going on?
It sounds like there's something wrong with your azure account and/or your luis.ai account. There are two places to raise support requests to handle these types of matters. First is uservoice on LUIS.ai:
While issues raised here are typically routed back to the bot framework support team, once there, they can be escalated.
Secondly, you can raise the issue in Azure:
You can follow this link HERE to get to that blade quickly.
My internally used web solution to retrieve YouTube video statistics that is based on this example (https://developers.google.com/youtube/v3/quickstart/js) now fails to work. Not sure when exactly it happened, but it used to work couple of months ago.
I now tried to run unedited example code (apart from adjusting the CLIENT_ID, of course), and I am getting exactly the same error:
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured. YouTube Data API has not been used in project 123 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/youtube.googleapis.com/overview?project=123 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"extendedHelp": "https://console.developers.google.com/apis/api/youtube.googleapis.com/overview?project=123" } ], "code": 403, "message": "Access Not Configured. YouTube Data API has not been used in project 123 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/youtube.googleapis.com/overview?project=123 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
}
When I check the YouTube API in developer console, it shows enabled status, and the Credentials compatible with this API include the ID used to authenticate the client. I can see the statistics for credential use increment when I retry the API call attempts, and the metrics reflect the number of requests and also show that the error rate is 100%. But there is no extra info on those failed attempts in the console to help on debugging the problem.
I have deleted and recreated API key and OAuth key, but that did not change anything.
Had there been any extra info on those errors on the developer console side, for example client quote exceeded, I could see how to fix this. Now I am completely stuck.
Create a new project
Weirdly, creating a new project just gets the API to work properly!
The error message is unfortunately a red herring: your project's access to YouTube Data API Services is automatically disabled after a 90 day inactivity period.
You should have received a notice via email regarding this action, which also contains the steps that need to be taken to regain access: please fill out and submit the exceptions form.
Try to start a new Project with new oAuthCliedID & oAuthClientSecret
What seems to have done it for me after a lot of fiddling was to:
Go to the OAuth consent screen of the project.
Enter an Application name.
Press Save.
Lo and behold, after 5 minutes it started working.
I'm trying to get the google translate API up and running. On the getting started guide, it gives the following example: https://www.googleapis.com/language/translate/v2/detect?key={MyAppId}&q=google+translate+is+fast
I just want to get this working for now, so I'm just trying to get it working view via a browser post, so I created a testing web application (screenshot):
and grabbed the API key, replaced the sample URL's key with my API key. I get the following response:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceeded",
"message": "Daily Limit Exceeded"
}
],
"code": 403,
"message": "Daily Limit Exceeded"
}
}
I should also note, that I have signed my account up with the billing option (I plan on using the service quite a bit), so I should have no issues at the moment.
I'm obviously doing something wrong, but I don't know what. Any suggestions?
For getting data translated you have to enable billing and have to register your credit/debit card.After you register your card 1$ will be deducted and then you will be able to use your URL
I did it recently and it worked fine.
I am also working on translating project nowadays.
Let me know if you need any kind of help on this topic
Ishan
I would first confirm that the Translate API is enabled under the "APIs" link in the Cloud Console - if it is not enabled, that effectively sets the quota to zero and may produce a similar message.
If the API is enabled, then the following link describes how to check the usage limits for your project:
https://developers.google.com/translate/v2/pricing
You can change the quotas manually:
to complement #Ishan Arora, after you add the credit card info, go to the console, enter into the project, a message will popup asking to setup the billing account for your project, if you want to get ride of the error, just select "set project into the billing account" drop down list.
On my case, the same problem was caused by credit card expiration