PayPal Orders v2: TRANSACTION_REFUSED and UNPROCESSABLE_ENTITY - paypal

Good day, Paypal is not working on my website, which is a wordpress site. I am getting this error. Can anyone help?
Array
(
[code] => 40003
[userinfo] => Array
(
[error] => The requested action could not be performed, semantically incorrect, or failed business validation.
[data] => Array
(
[name] => UNPROCESSABLE_ENTITY
[details] => Array
(
[0] => Array
(
[issue] => TRANSACTION_REFUSED
[description] => The request was refused
)
)
[message] => The requested action could not be performed, semantically incorrect, or failed business validation.
[debug_id] => d438b2beb9f7c
[links] => Array
(
[0] => Array
(
[href] => https://developer.paypal.com/docs/api/orders/v2/#error-TRANSACTION_REFUSED
[rel] => information_link
[method] => GET

The important part of the error message is "TRANSACTION_REFUSED". Because it was refused the request is unprocessable as a general matter, but other things can also lead to an unprocessable request.
Why was it refused? Usually an issue with the payer. However, if all payments to your account are being refused, then it is an issue with the receiving account. What is the country of the account? It may be missing some setup to be able to receive funds, such as a required withdrawal method for certain countries. Contact PayPal for details.

Related

Paypal error 580029 One of the required parameters for subscription is missing

When I try to make a preapproval this message comes up instead of showing me the Paypal login screen. Usually it is more specific, but now it just says "One of the required parameters for subscription is missing", so
I would like to know what is the parameter missing?.
Is this related to the APP ID?
It worked fine in Sandbox but when going live I have this error.
Preapproval adaptive-preapproval
Error
PayPal\Types\AP\PreapprovalResponse Object
[responseEnvelope] => PayPal\Types\Common\ResponseEnvelope Object
(
[timestamp] => 2016-01-06T11:02:03.894-08:00
[ack] => Failure
[correlationId] => 4d382b98c6be4
[build] => 17820627
)
[preapprovalKey] =>
[error] => Array
(
[0] => PayPal\Types\Common\ErrorData Object
(
[errorId] => 580029
[domain] => PLATFORM
[subdomain] => Application
[severity] => Error
[category] => Application
[message] => One of the required parameters for subscription is missing
[exceptionId] =>
[parameter] => Array
(
[0] => PayPal\Types\Common\ErrorParameter Object
(
[name] =>
[value] => Subscription
)
)
)
)
Request
PayPal\Types\AP\PreapprovalRequest Object
[requestEnvelope] => PayPal\Types\Common\RequestEnvelope Object
(
[detailLevel] =>
[errorLanguage] => en_US
)
[clientDetails] => PayPal\Types\Common\ClientDetailsType Object
(
[ipAddress] =>
[deviceId] =>
[applicationId] => MY_APP_NAME
[model] =>
[geoLocation] =>
[customerType] =>
[partnerName] =>
[customerId] =>
)
[cancelUrl] => http://localhost/auction/create-auction/?post_new_step=1&projectid=181
[currencyCode] => CAD
[dateOfMonth] =>
[dayOfWeek] =>
[endingDate] => 2016-02-05Z
[maxAmountPerPayment] =>
[maxNumberOfPayments] =>
[maxNumberOfPaymentsPerPeriod] => 1
[maxTotalAmountOfAllPayments] => 1.5
[paymentPeriod] => NO_PERIOD_SPECIFIED
[returnUrl] => http://localhost/auction/?page_id=10&finalize=1&post_new_step=4&projectid=181
[memo] =>
[ipnNotificationUrl] =>
[senderEmail] =>
[startingDate] => 2016-01-06Z
[pinType] =>
[feesPayer] =>
[displayMaxTotalAmount] => 1
[requireInstantFundingSource] =>
[sender] =>
I just experienced the same issue.
I resolved it by filling out all of the "Max*" fields.
In my case, I was missing the "maxNumberOfPaymentsPerPeriod" field.
Successfully created a approval token for a "one-time" payment with the following request:
cancelUrl: "http://localhost:55182/Booking/InitialBookingRequest?StartDate=7/1/2016 1:15:00 AM&EndDate=7/1/2016 2:15:00 AM&ListingId=119295&bookingId=90802" string
clientDetails: null
currencyCode: "USD"
dateOfMonth: null
dayOfWeek: null
displayMaxTotalAmount: null
endingDate: "2016-07-15"
feesPayer: null
ipnNotificationUrl: "http://localhost:55182/home/handler"
maxAmountPerPayment: 5.00
maxNumberOfPayments: 1
maxNumberOfPaymentsPerPeriod: 1
maxTotalAmountOfAllPayments: 5.00
memo: null
paymentPeriod: null
pinType: null
requireInstantFundingSource: null
returnUrl: "http://localhost:55182/booking/Success?StartDate=7/1/2016 1:15:00 AM&EndDate=7/1/2016 2:15:00 AM&ListingId=119295&bookingId=90802" string
sender: null
senderEmail: null
startingDate: "2016-06-30"
We have been battling with this issue too, and it seems it comes up on the internet quite a bit. Unfortunately, the PayPal documentation lists most fields as Optional, when they aren't.
What fields are actually optional depends on the type of Pre-approval you are using (there is Subscription / One-time / On-demand), but none of this seems to be mentioned in the PayPal API documentation.
Looking at your request, I believe the one field you will also need to specify is maxAmountPerPayment, which in your case would be the same as maxTotalAmountOfAllPayments
Although the error is cryptic, it is in fact informing you that for a Subscription type of Pre-approval, you are missing some required fields. Unfortuantely these required fields are not documented. If it turns out maxAmountPerPayment doesn't work, my advice would be to start populating each field and testing until the request passes! Good luck.

Pricerr theme and Paypal Chained Adaptive

I am seeking help setting up Paypal gateway for 2 simultaneous payments, 15% to website owner & 85% to service seller.
I have set up a wordpres theme called Pricerr, published a product, and completed all the payment gateway details for Paypal. I believe that I have filled in ALL the fields on the PricerrTheme - Payment Methods form correctly.
For every purchase, I want the website to get 15% (into Paypal business account) of the fee and the service supplier to get 85%, simultaneously.
I believe this means the payment must be adaptive.
When I set up the Payment gateway details as standard, the whole fee gets paid to the website. This transaction works as far as Paypal is concerned.
When I however make it an Adaptive payment, I get the below error, no matter what I do.
You can test the purchase if you like (I have one service that costs 50 cents, and I will repay anyone the 50 cents if they purchase the service while testing the gateway.
The error message is below.
Please help me fix the Paypal payment gateway. I want a simultaneous payment split in two, like below, if possible.
Buyer ===> 15% to website
===> 85% to seller
ERROR
Array
(
[0] => Array
(
[name] => ns3:FaultMessage
[attributes] => Array
(
[xmlns:ns3] => http://svcs.paypal.com/types/common
[xmlns:ns2] => http://svcs.paypal.com/types/ap
)
[0] => Array
(
[name] => responseEnvelope
[0] => Array
(
[name] => timestamp
[value] => 2015-09-04T17:13:04.118-07:00
)
[1] => Array
(
[name] => ack
[value] => Failure
)
[2] => Array
(
[name] => correlationId
[value] => d4103492da29a
)
[3] => Array
(
[name] => build
[value] => 17820627
)
)
[1] => Array
(
[name] => error
[0] => Array
(
[name] => errorId
[value] => 550001
)
[1] => Array
(
[name] => domain
[value] => PLATFORM
)
[2] => Array
(
[name] => subdomain
[value] => Application
)
[3] => Array
(
[name] => severity
[value] => Error
)
[4] => Array
(
[name] => category
[value] => Application
)
[5] => Array
(
[name] => message
[value] => User is not allowed to perform this action
)
)
)
)
It looks like you business account is not verified, please verify the account firstly, then try to call API again.
How to verify a PayPal account: https://www.paypal.com/us/webapps/helpcenter/helphub/article/?solutionId=FAQ444&m=HTQ

Is it possible to change only AMT using UpdateRecurringPaymentsProfile PayPal?

This question has been posted elsewhere however I have not found a specific answer yet.
What I want to do is simply change the amount (AMT) of a PayPal recurring payments profile from say £55.00 to £60.00. The amount is all I want to change. I am using the below to do this:
$request_params = array
(
'USER' => $api_username,
'PWD' => $api_password,
'SIGNATURE' => $api_signature,
'VERSION' => $api_version,
'METHOD' => 'UpdateRecurringPaymentsProfile',
'PROFILEID' => 'I-R159ACHCUJHF',
'AMT' => '60.00',
'NOTE' => 'Re-adjust amount to £60'
);
OR
&USER=xxxxxxx&PWD=123456789&SIGNATURE=xyxyxyxyxyxyx&VERSION=85.0&METHOD=UpdateRecurringPaymentsProfile&PROFILEID=I-R159ACHCUJHF&AMT=11.00&NOTE=Re-adjust+amount+to+%C2%A360&TAXAMT=0.00
So I guess my question is can this be done using the fields above only or do you know if I am missing some other variables that are required possibly?
On another note, when I run this on the sandbox I get the following error:
Array
(
[TIMESTAMP] => 2014-11-28T10:11:36Z
[CORRELATIONID] => 9a5452736a159
[ACK] => Failure
[L_ERRORCODE0] => 10001
[L_SHORTMESSAGE0] => Internal Error
[L_LONGMESSAGE0] => Timeout processing request
)
Does anyone understand what this means and if it relates to the way I am requesting the change in amount (AMT) in the params above?
Many thanks in advance.
According to the example I'm cribbing from, you also need to pass CURRENCYCODE. The only example I could actually find was on PayPal Developer Brazil:
https://www.paypal-brasil.com.br/desenvolvedores/code-sample/recurring-payments-php/

Paypal API GetVerifiedStatus return User is not allowed to perform this action

Hy,
I would like to use GetVerifiedStatus of Paypal API.
So I have create my application and I have an application ID.
In sandbox, all is ok, the service return the status of my customer.
But when I make a live call I have this error :
"User is not allowed to perform this action"
Do you have a solution?
Thanks!
Request :
Array
(
[emailAddress] => myCustomer#email.com
[matchCriteria] => NONE
)
Response :
stdClass Object
(
[responseEnvelope] => stdClass Object
(
[timestamp] => 2013-10-29T06:47:26.456-07:00
[ack] => Failure
[correlationId] => 21820ac9a046c
[build] => 7784095
)
[error] => Array
(
[0] => stdClass Object
(
[errorId] => 550001
[domain] => PLATFORM
[subdomain] => Application
[severity] => Error
[category] => Application
[message] => User is not allowed to perform this action
)
)
)
(Paypal GetVerifiedStatus with "User is not allowed to perform this action" : This is not the same problem because he update the error with "Cannot determine PayPal Account status")
In order to perform the GetVerifiedStatus call in a live environment, you need to pass also firstName and lastName in the arguments, and they need to be consistent with those of the PayPal account for the email address you are checking. You also need to set matchCriteria to 'NAME'. So, your request would look like:
Array (
[emailAddress] => myCustomer#email.com
[firstName] => myCustomerFirstName
[lastName] => myCustomerLastName
[matchCriteria] => NAME
)
Try updating the merchant PayPal account to a business account and verify it.

The X-PAYPAL-APPLICATION-ID header contains an invalid value

I am using paypal adaptive payment on my project.But when i try to pay using preapproval i am getting this response from paypal
Array
(
[responseEnvelope.timestamp] => 2013-05-15T05:53:33.709-07:00
[responseEnvelope.ack] => Failure
[responseEnvelope.correlationId] => ec16bc5b116e0
[responseEnvelope.build] => 5867333
[error(0).errorId] => 560022
[error(0).domain] => PLATFORM
[error(0).subdomain] => Application
[error(0).severity] => Error
[error(0).category] => Application
[error(0).message] => The X-PAYPAL-APPLICATION-ID header contains an invalid value
[error(0).parameter(0)] => X-PAYPAL-APPLICATION-ID
)
And the transaction is failed.
Please help
Thanks
The appID for sandbox and live are different. For sandbox, everyone must use APP-80W284485P519543T. For live, you must use the ID that matches the app's credentials.