PayPal Adaptive Payments - User is not allowed to perform this action - php

I am using paypal adaptive payments and i had sandbox account for this to be test for last 2 months it was working very much fine and all the transactions were successfully made by using sandbox.
Now what i'm trying to do is want to go live with adaptive payments get all the necessary information api id,password,signature, ap id etc. the problem is i'm facing right now is getting this error
Array
(
[responseEnvelope.timestamp] => 2014-12-08T21:53:30.943-08:00
[responseEnvelope.ack] => Failure
[responseEnvelope.correlationId] => f8bdc47c42067
[responseEnvelope.build] => 13414382
[error(0).errorId] => 550001
[error(0).domain] => PLATFORM
[error(0).subdomain] => Application
[error(0).severity] => Error
[error(0).category] => Application
[error(0).message] => User is not allowed to perform this action
[error(0).parameter(0)] => Chained Payment
)
and i dont know where is the problem can you please help me out

The error is because you Adaptive Payment application is not approved for Chain Payments and you are trying to execute Chain Payments API.
Go to apps.paypal.com and check(I can see that you are not enabled for chain Payments). In order to resolve the error, create a new application at apps.paypal.com and check "Chain Payments" and then use the new APP-ID to initiate this API call. It is also possible when your business/premier account is not Verified
P.S Btw, it is not possible to update the current application as it is already approved.So create new one.

Related

PayPal pro error

I have created buyer and seller account from PayPal developer site.
Account type: Buisness-pro
And fill all right api detail's but this error is coming:-
Array
(
[TIMESTAMP] => 2016-12-15T12:43:12Z
[CORRELATIONID] => a9537857c6865
[ACK] => Failure
[VERSION] => 65.1
[BUILD] => 24616352
[L_ERRORCODE0] => 10501
[L_SHORTMESSAGE0] => Invalid Configuration
[L_LONGMESSAGE0] => This transaction cannot be processed due to an invalid merchant configuration
.
[L_SEVERITYCODE0] => Error
[AMT] => 10.00
[CURRENCYCODE] => USD
)
{"status":0}
Business-Pro can actually mean one of two things.
Website Payments Pro 3.0 - This is what uses the DoDirectPayment API
Payments Pro 2.0 - This uses the PayFlow API
In your case it looks like you're approved for "Pro" so you're trying to use the DoDirectPayment API, but the error you're getting means that particular API is still not enabled on your account.
This could mean that you simply cannot use DDP on your account, or it could mean PayPal simply didn't activate it for you since PayFlow would be the assumed gateway. Technically, 2.0 should support both of those APIs.
If you call PayPal and let them know you already have DDP fully integrated and ready to go based on the fact that you had "Pro" enabled, and you would rather not re-develop everything in PayFlow due to time / cost restrictions, they will probably go ahead and enable DDP for you so that this error will go away.
Or, you could go ahead and use the PayFlow API instead. It looks like you might possibly be using my PayPal PHP SDK..?? If so, you could get PayFlow setup instead of DDP within a matter of minutes. If not, I recommend you take a look at it for future reference. It supports pretty much every PayPal API they offer and greatly simplifies things.
If you're interested in more details on this you can check out my article on The History of PayPal Payments Pro.

Integrating Paypal classic API

I have made an e-commerce website, but unfortunately I am stuck here when I want to integrate Paypal classic API with my live site. Though I have tested the integration with sandbox which is success, but when I tried to go live it keep returning error. The error I caught is :
Array
(
[Errors] => Array
(
[0] => Array
(
[Receiver] =>
[Category] => Application
[Domain] => PLATFORM
[ErrorID] => 550001
[ExceptionID] =>
[Message] => User is not allowed to perform this action
[Parameter] =>
[Severity] => Error
[Subdomain] => Application
)
)
)
and my classic API information is this :
Adaptive Payment
Basic Payment
1.Checkout, Send Money or Parallel Payments
2.Currency Conversion
3.Get Payment Details
4.Refunds or Chargebacks
Confirm Funding Sources You Support
1.Credit Card Payments
2.E-Checks
3.PayPal Balance
Adaptive Accounts
Basic Payment
1.Create Business Accounts
I and the Classic API status right now is : "Approved Conditionally".
It looks like from all of the information provided that the application has not been fully approved. I recommend calling in to PayPal support to check the status of the application.
You can go to https://www.paypal-apps.com/ and log into your PayPal account. Click 'My Messages' to send your request to PayPal App team. They will review your case and get back to you.

Sagepay Related Security Key Missing

I have found issues similar to this. But I wanted to explain my case as I haven't found a suitable answer.
I have my Ticketing System in which I have implemented Sage Pay. When I make a transaction it will get redirected to SagePay and the Transaction will be completed. Now If I want to refund the Payment I need to go to SagePay, login there, select the Order which has to refunded and then refund it. So instead I thought of implementing it in my Ticketing System. When the transaction is completed through SagePay a response code is generated which looks similar to this .
Array ( [VendorTxCode] => 14-11-04-16-19-30-8989049 [VPSTxId] => {8D7FC333-9979-DA1C-32E0-AAA2CC1A31FB} [Status] => OK [StatusDetail] => 0000 : The Authorisation was Successful. [TxAuthNo] => 164996 [AVSCV2] => SECURITY CODE MATCH ONLY [AddressResult] => NOTMATCHED [PostCodeResult] => NOTMATCHED [CV2Result] => MATCHED [GiftAid] => 0 [3DSecureStatus] => NOTCHECKED [CardType] => VISA [Last4Digits] => 0006 [DeclineCode] => 00 [Amount] => 10.00 [BankAuthCode] => 999777 )
Now in order to refund the transaction I need to have RelatedSecurityKey which is not being sent by SagePay. When I go to Sage Pay, get the Security Key and Hard code the value in my Refund API I am able to refund the Transaction. Is there any way to get the Security Key in my Ticketing System. If so how?
If you are using Server, you will get a security key as part of the response to the initial transaction registration post. You can then pass this back with the Refund posts as RelatedSecurityKey.
If you are using Form, you won't get this value sent back. In this instance, you could use the Reporting API to get the Security key (getTransactionDetail command) instead of logging into My Sage Pay.

Paypal Adaptive payment Pay key validation received from IOS

In our app we are using IOS MPL library to make the parallel payment. After I get the pay key from the IOS, when I tried to validate it using PHP app, it shows me the following error:
[error] => Array
(
[0] => ErrorData Object
(
[errorId] => 540031
[domain] => PLATFORM
[subdomain] => Application
[severity] => Error
[category] => Application
[message] => You do not have permission to get these payment details
[exceptionId] =>
[parameter] =>
)
)
But If I create a parallel payment using PHP Adaptive payment API, I am able to validate the paykey and get the correct receipt.
Also what I found is when I try to create the parallel payment in PHP it asks me for App ID, API Username, API Password and API signature. But when we use IOS MPL libarary it just asks for App ID. In sandbox mode we always use same APP ID - APP-80W284485P519543T, which is same for all(universal). Then how the app will know identify who has made the call?
When I create a payment in sandbox mode using PHP application, and try to validate the transaction using a different "API credentials", then I get the same error "You do not have permission to get these payment details", which I receive when we try to do with IOS Pay key.
Here is the reply I get from the Paypal:
This is AP txn made through MPL sdk library from an iPhone app of the sender. The api caller is the sender.
The receivers in the parallel payment are different.
When one of receiver a/c made paymentdetails api call, he is the api caller for this call. So there are few restrictions on what info a api caller can view in paymentdetails api.
The receiver a/c holder will be able to view only his leg of transaction since he is NOT the original api caller that created the payment key.
That's why after paymentdetails API, you can only see the leg of your transaction information.
Also I asked Paypal, if there is a way in MPL library to define the API credentials of the merchant which can be used while doing Adaptive payment instead of the sender's API. They said no, MPL library is not built like that.
So finally, I have used IPN call to resolve the problem. Instead of updating the DB by validating the Pay key I get from the IOS device, what I did is: i have told the IOS developers to send the IPN url in Adaptive payment call. Then through the IPN url I update my database.

Embedded Adaptive Payments for digital goods between 2 users - confused about the need for an IPN

I'm building a site for a client that wants to enable users on the site to put ebooks for sale, which can be bought by both site members and non-members. The site itself is not involved in the transaction at all.
I've gone with adaptive payments as that seems to facilitate "peer to peer" transactions between two users where the site is not involved and does not take a cut or any payment. I'm using the guide found at https://developer.paypal.com/webapps/developer/docs/classic/adaptive-payments/integration-guide/APIntro/
Unfortunately the hosting uses php 5.2.17, which means I cant use the PHP API code on github, so i've had to roll my own using PHP. This isnt a problem, i've done similar many times before. I've managed to get the sandbox working the following way
user initiates purchase
my site makes a call to https://svcs.sandbox.paypal.com/AdaptivePayments/Pay
with the following json encoded array :
$payload = array(
'actionType' => 'PAY',
'currencyCode' => $currencyCode,
'receiverList' => array(
'receiver' => array(
array(
'amount' => $amount,
'email' => $receiverEmail,
'paymentType' => "DIGITALGOODS"
)
)
),
'returnUrl' =>$successUrl,
'cancelUrl' => $cancelUrl,
'requestEnvelope' => array(
'errorLanguage' => 'en_US',
'detailLevel' => 'ReturnAll'
)
);
This gives me a pay ID
i then put into the form which submits to https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay
when the user clicks "Pay Now" the paypal light box pops up
if the payment is completed paypal returns me to my return url
i then display the download link
However when I look in the sandbox I see that The latest payments are under review ( apparently making my sandbox balance 10,000 has flagged me as a potential terrorist under australian law. go figure ) so this makes me think that perhaps I need to make an IPN, even though the developer documentation listed above makes no mention of it. The last thing i want to do is enable a download whos payment gets rejected.
So i guess my question is:
Is the fact that paypal called my return URL enough to allow the download of a digital good or should I setup an IPN and wait for paypal to hit it before authorising the download ?
PayPal is a PITA! And there's no argument about it.
Back to your question. You should verify if the payment when through when it calls your return URL. It should send you a token/transaction which you can query and check its payment status. Haven't used Adaptive Payments that much but you should always make sure a payment is completed before granting access.

Categories