PayPal Rest API suddenly got Instrument_Declined error - c#

"{\"name\":\"INSTRUMENT_DECLINED\",\"message\":\"The instrument presented was either declined by the processor or bank, or it can't be used for this payment.\",\"information_link\":\"https://developer.paypal.com/docs/api/payments/#errors\",\"debug_id\":\"21fe4e5f2f8b3\"}" PayPal blog https://developer.paypal.com/docs/checkout/integration-features/funding-failure/says It is a issue with funding source but It was working fine with all the funding source before

Yes, it is a problem with the funding source. It's been declined.
There is no technical issue here.

There is actually an explanation and solution in the official paypal documentation.
A buyer's funding source can fail for several reasons, including:
The billing address associated with the financial instrument could not
be confirmed. The transaction exceeds the card limit. The card issuer
denied the transaction. If a funding source fails, the Orders API
returns the INSTRUMENT_DECLINED error. Handle this error and provide
the buyer an opportunity to select a different payment option by
restarting the payment in the onApprove function.
https://developer.paypal.com/docs/platforms/checkout/add-capabilities/handle-funding-failures/

Related

How do you get the OfferDurableId for an Azure subscription?

In an attempt to call the RateCard API in Azure there is a need for several parameters that the typical Azure administrator will not have at hand easily. These include:
OfferDurableId
Currency
Locale
RegionInfo
If all we have is the subscriptionID, how do we programmatically get the above information so we can get the rate card for the subscription?
While Microsoft samples on GitHub (https://github.com/Azure-Samples/billing-dotnet-ratecard-api) demonstrate this using an app.config the reality is there is a lot of friction asking administrators to dig this up. There has to be a way to get this information without having to ask the admins all the time.
A typical URL to call the rate card API would be something like:
string url = $"https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId=\'{offerId}\' and Currency eq {currency} and Locale eq=\'{locale}\' and RegionInfo eq \'{regionInfo}\'";
Any ideas what APIs I can call to get this information from the subscription ID?
I think that except for the OfferDurableId parameter (which you can see the available values at Microsoft Azure Offer Details), the rest of the parameters should have a fixed value depending on the loction relevant to your organization.
For example, if your organization is located in the United States, then you would probably use:
Currency: USD
Locale: en-US
RegionsInfo: US
Update
Unfortunately, the API reference page states clearly to consult the Offer Details page to get the required ID:
Set {OfferDurableId} to a valid Offer ID code (e.g., MS-AZR-0026P). See Microsoft Azure Offer Details for more information on the list of available Offer IDs, country/region availability, and billing currency. The Offer ID parameter consists of the “MS-AZR-“ prefix, plus the Offer ID number.
Regarding whether it will allow you to query using Currency/Locale/RegionInfo values not used by your subscription, I think it should be possible (to some extent at least), as your a just querying for general metadata.
Hope it helps!

E00114 Invalid OTS Token while creating subscription with payment nonce using accept JS in Authorize.net

I am building an application using accept js and C# SDK of authorize.net. here, i am using accept js token to make a credit card payment over authorize.net and able to create transaction and customer profile successfully. but when i tried to create a subscription with customer profile id and payment profile id, i got "E00040 Record Not Found" error response.
I also tried to create subscription with another token after creating transaction but getting "E00114 Invalid OTS Token" error response.
What would cause authorize.net to return an these errors?
Looking forward for your quick response.
I was having this problem today, although I was doing PHP on the backend instead of C#. I called into their tech support and here's what I found:
Their production endpoints are actually pretty overloaded on server resources compared to their sandbox unfortunately, at least as of Aug, 2018. This can lead to this misleading Invalid OTS Token error, which can also have several other causes. The tech explained to me that if you have a submit button on the payment form that generates the token and then immediately submits the transaction, that you should add some kind of sleep call (on PHP, that's sleep(5);, for instance). We tried and got it to work on 4 seconds, minimum, but only intermittently. He told me if it fails after a 4 or 5 second sleep call, to reattempt that call one more time after waiting another 2 seconds, before you give up and recommend the customer call your call center or use your other support channels.
In the sandbox, they won't care if you're not using the cert.pem file in your transactions. Not so in production -- you need to ensure you've got that loaded. You can get that file off of Github if you search on the official Authorize.Net files.

Payflow zero amount authorization(Account verification) not working for me

Currently I am using Payflow gateway in one of my integrations. However, the Account verification which is also known as zero amount authorization which they have mentioned on their website(https://developer.paypal.com/docs/classic/payflow/integration-guide/) does not work for me. Following is the example that they have provided on their website:
TRXTYPE=A&TENDER=C&PARTNER=PayPal&USER=SuperUser&PWD=SuperUserPassword&AMT=0.00&ACCT=378282246310005
&EXPDATE=1215&INVNUM=PONUM1&VERBOSITY=HIGH&BILLTOZIP=95031
I tried it with this example and also edited a few other things such as I added vendor and CVV in the example but none of them seem to work. The error code that I get is 12 and the response message is declined. I know they have mentioned to contact issuing bank but I don't think the problem is related to bank because when I enter 0.01 amount the authorization passes without any error.
It will be really helpful if someone can provide a working example of account verification or zero amount authorization.
Kind Regards
Het Parikh.
The card that you have used in this example is AMEX: 378282246310005. There was a similar issue that I had which PayPal fixed. Probably you can try again and see if it works.

How to get a developer key for ViaGogo API

Long shot, but I'd like to fiddle with ViaGogo API (C# library more precisely). ViaGogo has a well documented public API, documentation is avaliable here.
Problem is, you need to authenticated as it usually happens with this kind of APIs: usually, you find a section of the website, maybe in your profile section, where you can obtain keys, secrets and so on (this happens for example on Facebook or Amazon).
As for ViaGogo, I only found a link that points to a Google Form: this form asks for info about advertising and affiliation on a complete different level of what I need, I won't publish anything read via API. Furthermore, there's no field to leave an e-mail address.
Their C# library seems pretty popular as far as I can tell from downloads from NuGet; I wonder how all these thousands of devs succesfully called that API.
Has anyone succesfully obtained authentication info from ViaGogo?
According to note in registration form, you have to wait for 30 days for their reply.
For more help you can contact them on following contacts:
E-mail: affiliate#viagogo.com
Telephone: +442075532777
Or
http://www.viagogo.com/in/help
There doesn't seem to be any way around this registration according to their website and the api itself -- an appID and password is required. You may try your luck emailing them at Affiliate.Team#viagogo.com -- see this issue on github where the possibility of getting an account via email is discussed: https://github.com/viagogo/developer.viagogo.net/issues/24

PayPal Express Checkout: Landing Page = Billing

I'm trying to get the PayPal Express Checkout to consistently only use the "Billing" landing page where card numbers can be entered directly.
I have tried everything I can find on Google, and have ended up with some very odd results. When I redirect to PayPal, I get the "Billing" page 50% of the time, and the "Log in to PayPal / Check Out as Guest" page the other 50% (literally just pressing the back button and then clicking "checkout" again gives different results). I really need to get to the Billing page consistently.
SetExpressCheckoutRequestType pp_Request = new SetExpressCheckoutRequestType();
pp_Request.Version = "117.0";
pp_Request.SetExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
pp_Request.SetExpressCheckoutRequestDetails.SolutionType = SolutionTypeType.SOLE;
pp_Request.SetExpressCheckoutRequestDetails.PaymentAction = PaymentActionCodeType.SALE;
pp_Request.SetExpressCheckoutRequestDetails.LandingPage = LandingPageType.BILLING;
pp_Request.SetExpressCheckoutRequestDetails.FundingSourceDetails = new FundingSourceDetailsType();
pp_Request.SetExpressCheckoutRequestDetails.FundingSourceDetails.UserSelectedFundingSource = UserSelectedFundingSourceType.CREDITCARD;
pp_Request.SetExpressCheckoutRequestDetails.ReturnURL = serverName + returnUrl;
pp_Request.SetExpressCheckoutRequestDetails.CancelURL = serverName + cancelUrl;
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal = new BasicAmountType();
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal.currencyID = CurrencyCodeType.GBP;
pp_Request.SetExpressCheckoutRequestDetails.OrderTotal.value = String.Format("{0:F2}", amount);
pp_Request.SetExpressCheckoutRequestDetails.NoShipping = "1";
As you can see, I'm setting the version AND the Solution Type AND the Payment Action AND the Landing Page AND the Funding Source, and it still doesn't work reliably.
The randomness of it feels like they're doing some A/B testing. Sometimes, on the wrong page, the button says "Check Out as Guest", and sometimes it says "Try PayPal as Guest". Whilst I don't mind A/B testing for text, a complete change of landing page when I've asked it not too seems a bit much.
What else could it be?
First: yes, PayPal continuously tests to improve their flows, so they will be doing A|B testing. The two button texts in particular sound like a classic A|B test, and presumably whatever tests out with the highest conversion rate (which means the most sales for merchants) will be adopted as the 100% solution in the future. PayPal also checks cookies to try to offer the optimal, most-likely-to-convert page to each buyer (e.g. if there is an active PayPal cookie make the PayPal login prominent; no PayPal cookie make the direct card entry more prominent). Again this is done to raise total conversion. You can work to defeat/override these choices but I would not recommend it; by imposing your expectations on your customers you are probably loosing sales.
That aside, some of what you are seeing may not be A|B testing or PayPal's conversion optimization but rather a mismatch between product and usage. ExpressCheckout is inherently a PayPal-branded/PayPal accountholder-centric payment product. It was built with no guest checkout at all, intended to be used alongside direct credit card billing (PayPal's DirectCreditCard API or some other payment gateway/processor). Later on a "guest checkout" was added to Express Checkout so it can be used as a sole solution, but asking Express Checkout to be a gateway is like asking an F150 to be a sportscar (or a sportscar to be an F150). Different product. Yes you can sometimes fit the suitcase in the passenger seat, but if your primary purpose is cargo carrying you are probably going at it the wrong way :).
If your expected usage is hosted but direct card centric with PayPal account holders considered an "add on", then consider PayPal's Hosted Sole Solution. That is PayPal's product that is intended to present card payments centrally but has an "escape" to PayPal accountholder payments rather than the reverse. Or consider integrating through Braintree (which is now PayPal), who has a good SDK that combines Braintree credit card payments plus PayPal accountholder payments.
I'd also throw out there that you might find the PayPal brand isn't so bad for your business. For most small-to-medium merchants it raises trust and can deliver significant sales lift.
Got a response from PayPal Support: it's a bug. That they don't seem to be in a hurry to fix.
UPDATE - PayPal just notified me that this is fixed.
I asked:
"I have a customer who is using Express Checkout and wants the landing page to be the "Enter Card Details" page.
They are a B2B operation, and the presence of a PayPal cookie on the computer of the secretary doing the purchase in no way indicates that a PayPal checkout is appropriate. They're almost always going to want to use a company credit card which is not linked to any PayPal account.
I'm setting all the relevant properties in the request that I can find in your documentation or on google, but they're being ignored.
Is it still possible to force the express checkout to consistently use the Landing Page Billing? "
and they replied:
"The LandingPage variable is being ignored that this point in time by the new checkout flow - this has already been brought to the attention of the developers to get it fixed.
Unfortunately we do not have an ETA for that fix at the moment.
You will be notified once the fix has been rolled out."

Categories

Resources