How to get product advertising data via SP-API or PA-API? - amazon

I have an Amazon seller account and have been selling on Amazon for a while.
Because I need to get the information of products, orders, inventory, ads, etc. more easily, I registered my account on AWS and got OAuth2 credentials and refresh token in seller center, then I can get the information of orders, inventory, payments, etc. through SP-API, but I can't find any way to get the ad data of each SKU or ASIN through SP-API.
By searching, I learned about PA-API, then I logged in with my Amazon seller information at https://affiliate-program.amazon.com and got the Associate ID, then I went to Tools->Product Advertising API->Request access to PA API, and then I see these messages
To request for access to PA API you must:
❌ Have completed 3 qualifying sales in 180 days.
❌ Have an approved associate account.
❌ Comply with the associates program Operating Agreement.
As I mentioned at the beginning, I have an Amazon seller account and have been selling on Amazon for a while. Why does it tell me this information? What about these 3 sentences mean?
Do I need PA-API to get the ads data of my products on Amazon?
I also try to use this API with Access Key and Secret Key of AWS account and Associate ID, but I got this error in return.
"The Access Key Id xxxxx is not enabled for accessing Product Advertising API. Please sign up for Product Advertising API at https://affiliate-program.amazon.com/assoc_credentials/home."

The Product Advertising API is for affiliates, you need a different set of credentials for the Amazon ADs API: https://advertising.amazon.com/API/docs/en-us/info/api-overview
All your other questions are moot since you're looking at a different API, I know they're named confusingly.

Related

Share Customer and its PaymentMethods with Connected Accounts

I'm building a platform where content creators can setup a subscription service of which I'll take a fee (think Twitch.tv, Substack, OnlyFans, etc.)
Content creators will setup a Stripe Connected Account on the platform. I'll operate the Platform Account.
Customers that subscribe to a content creator might want to subscribe to others so it makes sense to keep both Customers and their PaymentMethods on the Platform Account. Customers must be able to manage all their subscriptions and have their credit card details pre-filled, if already available.
I can't, for the life of me, understand how to share these Customers and their PaymentMethods with the content creator's Connected Accounts.
I followed the clone customers across accounts guide unsuccessfully. It errors out while creating the Token, saying that the Customer must have an active payment source. I read somewhere that this guide doesn't work with PaymentMethods but I don't really know if that's true.
Then I found this other guide. It seems, though, that I would have to create a Customer, per User, per Connected Account which will make me duplicate information and make subscription management harder.
Could anyone, who has experience building a similar service, give me some pointers?
Thanks
Instead of cloning PaymentMethods to your connected accounts (for which this guide is the correct one) you could create subscriptions using destination charges. The idea being that the customers and payment methods stay on your platform account. When an invoice is paid its funds (minus an application fee set by you) are automatically transferred to the connected account.

Apple Pay "mass enablement" error when requesting a Payment Session

I'm working with a web application that allows our customers to integrate with Apple Pay on the web. The customers setup their own Apple Pay merchant accounts, a third party handles the actual payment processing, but our servers are responsible for web hosting and obtaining the payment sessions.
Sporadically for some customers, we receive a 400 error when obtaining the payment session, with a message of:
Payment Services Exception merchantId={id} unauthorized to process transactions on behalf of merchantId={id} reason="{id} never authorized mass enablement transactions to occur via {id}"
(Here all the {id} values will be the same).
Despite sounding like a configuration issue with the account, this will only affect some otherwise identical requests. (Same domain, merchant identity, etc.) It affects some customers but not most; when it does affect a customer, somewhere between 10% to 50% of the session requests will fail in this manner. We have several customers never hitting this error even after processing thousands of transactions.
The phrase "mass enablement" doesn't seem to show up in apple's documentation, and the exact phrase "never authorized mass enablement transactions to occur" produces no results at all when searching the web. The closest I can find is this thread on Apple's developer forums but its not an exact match, and has no answers in any case.
Has anyone seen this error and resolved it?
(I'm also pursuing this matter via Apple support; if that eventually proves fruitful I'll update with an answer.)
This happens when a domain has been registered to a merchant using Apple Pay's Mass Enablement API.
The domain (not the merchant ID) will need to be deregistered by whoever claimed the URL before you are able to proceed, although I would expect Apple Pay's support team would also be in a position to remove the registration for you.
https://developer.apple.com/documentation/applepaywebmerchantregistrationapi
I got this error when using my localhost (not registered for Apple Pay) as the front end of the website making a session token request via the back end whose domain had been registered for Apple Pay.
There are few things that needs to be considered here:
Are you using the correct TLS config (the cert and the key) to make the request ?
Are you using the correct merchant validation file send to you while approving mass enablement for the merchant ?
Once you confirm on these 2 things, there's a hole in the documentation provided by apple.
After hitting https://apple-pay-gateway.apple.com/paymentservices/registerMerchant with above proper config and data this requires a param called partnerInternalMerchantIdentifier this is a unique merchant id that you can use on your end.
register merchant
By default, to get a payment session (https://apple-pay-gateway.apple.com/paymentservices/paymentSession) we might send the primary merchant id that we use for merchant registration in above API which is fair as per their docs.
docs
But to make it work we need to send the partnerInternalMerchantIdentifier which we sent in the above API. This acts as a sudo merchant id to get payment sessions.
Get payment session for newly registered domain

How to use the platform's details instead of the connected account for Stripe connect

I want to create a platform which will provide a digital service where the customers and connected accounts will be from around the world. Clearly Stripe Connect is the Stripe product to use.
Because many of the connected accounts will be overseas this straight away rules out the use of transfers - unless I explored setting up separate platform accounts in the different overseas countries. (https://stripe.com/docs/connect/capabilities-overview#cross-border-transfers)
So I am left with destination charges where I choose the connected account as the settlement merchant via the on_behalf_of parameter. This means the charge goes against the connected account but I can still make money by charging an application fee.
As the connected account will be invisible to the end customer on the platform it seems inappropriate for the connected account's details to show on the customer's bank / credit card statement. Instead I want the platform's details to show.
Stripe support have assured me it is possible to have only the platform's details. Indeed this part of the API suggests I can control the statement descriptor which shows - https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_intent_data-statement_descriptor
But another article - https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_intent_data-statement_descriptor - seems to almost contradict this. It explains
Any additional information that’s displayed on a customer’s statement
is also provided by the same account that provides the static
component (business address, phone number).
Can anybody clarify? Many thanks in advance.
Update
This article appears to settle the matter - https://stripe.com/docs/payments/connected-accounts
Guess I will just have to inform users on my website with a connected account that their details will show on the bank statement.

How to charge fee on stripe api using c#

I am using Stripe Api to create a customer and then charge it.
What i wanted is to charge my customer whenever it create a sell or charge.
I want 7% of total amount to be credited in my stripe account.
I have tried the Application fee when creating charge with customer Id , but it requires destination to be passed, which requires merchant ID, which always throws error that "No Merchant Found with provided ID".
How the documentation say, there are two way to create a charge: Charging directly and Charging through the platform.
Which of these are you using? (Can I suppose the second since you were talking about the "destination"? ).
They both require connected accounts to do charge, ect.
In the case of Charging through the platform, you need that the account is connected to the platform to be visible from the "destination" (Connecting_Account_Documentation).
If it is not so, explains better the situation in which you find.
application_fee:
A fee in cents that will be applied to the charge and transferred to the application owner's Stripe account. To use an application fee, the request must be made on behalf of another account, using the Stripe-Account header, an OAuth key, or the destination parameter. For more information, see the application fees documentation.
destination:
An account to make the charge on behalf of. If specified, the charge will be attributed to the destination account for tax reporting, and the funds from the charge will be transferred to the destination account. The ID of the resulting transfer will be returned in the transfer field of the response. See the documentation for details.

Does Google Wallet / Google Wallet for digital goods API Support 3D-Secure?

I am seeing a % of failed transactions with Google Wallet. The error message that I get is
You cancelled this order. Reason: Other. Message sent to the customer: We were unable to process your order..
I have phoned for Wallet support and I've been told that the two examples of failed transactions were down to latency issues.
Whilst I haven't been able to prove it - I suspect that Google Wallet doesn't support 3D-Secure
http://en.wikipedia.org/wiki/3-D_Secure
A google search gives me more questions and doubt but no definitive answer
Does anyone have any experience with this working / not working?
Ben
I had the below email response from Google support, hopefully it will make the situation clearer for others having similar issues.
Please be advised that Google Wallet does not currently support 3-D Security protocol, which is used by Verified by Visa, MasterCard SecureCode and similar services. If your card-issuing bank requires this feature, we suggest using an alternate credit card for your Google Wallet transactions
Google wallet uses direct CVV access , it is successfully carrying its operations at USA because most of the banks are using CVV tech till now, in Asia till now it is only available om discover( Dinner Club Card international Network) and JCB card issued in Japan and China. Google wallet is not supported on verified by visa or by Master-card secure code, if you want to use Google wallet you need to have a valid US address with valid US phone number, if you want the service in japan you first need to access your NFC chip present on your debit/credit card by your mobile then install Google wallet. Till now it is not present on any other Asian country , Yes it is available in Russia but you cant add more than 3000 Rebels into your Google account. Wait till it gets into your country or use similar app provided by bank/developers from your country.

Resources