I use Adaptive Chained Payments for my app(buyer send money, I get my % fee and than send the rest to seller). I follow the next logic:
-On actionType: CREATE and paymentType: SERVICE
-call PAY api,
-receive payKey,
-setPaymentOption(where I set the shipping address)
-redirect to paypal page to pay(on review page I can see shipping address)
-login in seller page and I have this message: Seller Protection Not Eligible(We have no shipping address on file.)
And on SetPaymentOptions:
setPaymentsOption($payKey){
$header = array(
"X-PAYPAL-SECURITY-USERID: {$this->user}",
"X-PAYPAL-SECURITY-PASSWORD: {$this->password}",
"X-PAYPAL-SECURITY-SIGNATURE: {$this->signature}",
"X-PAYPAL-APPLICATION-ID: {$this->app_id}",
"X-PAYPAL-REQUEST-DATA-FORMAT: NV",
"X-PAYPAL-RESPONSE-DATA-FORMAT: NV"
);
$data = array(
'payKey' => $payKey,
'requestEnvelope.errorLanguage'=>'en_US',
'senderOptions.requireShippingAddressSelection'=>'true',
'senderOptions.addressOverride'=>'true',
'senderOptions.shippingAddress.addresseeName'=> 'John',
'senderOptions.shippingAddress.city'=>'San+Jose',
'senderOptions.shippingAddress.country'=>'US',
'senderOptions.shippingAddress.phone.countryCode' => '91',
'senderOptions.shippingAddress.phone.phoneNumber' =>'408123456',
'senderOptions.shippingAddress.phone.type' =>'MOBILE',
'senderOptions.shippingAddress.state' =>'CA',
'senderOptions.shippingAddress.street1' =>'17+Magneson+St',
'senderOptions.shippingAddress.street2' =>'building+1',
'senderOptions.shippingAddress.zip' => '12345',
);
URL : https://svcs.sandbox.paypal.com/AdaptivePayments/SetPaymentOptions/ $data/$header
}
Result :
[responseEnvelope.timestamp] => 2014-04-03T04:23:14.827-07:00
[responseEnvelope.ack] => Success
[responseEnvelope.correlationId] => 1037e10d7e4da
[responseEnvelope.build] => 10273932
I'm not getting any error message.Everything works fine, I make the payment(on Review your information I have Shipping Address) but on transaction details I still get Seller Protection Not Eligible
So what I am doing wrong?
Thank you
Related
In using paypal express chackout via "NVP http api" and I need to customize the gateway page locale.
Following the doc I tried:
LOCALECODE=ES
(but also checked using es_ES, en_US, ecc..)
The problem is that it always show the gateway in italian (I think it consider only the current merchant address).
This on Sandbox and Live env. too.
Now, I also read about this "Localizing the buyer's checkout experience in Express Checkout", where we can read:
The following are all taken into consideration to determine the locale of the checkout page:
The shipping address country provided by the merchant in the SetExpressCheckout request.
The country taken from the LocaleCode parameter passed by the merchant.
The country of the currently logged-in user.
The merchant's country.
the request is:
array:18 [▼
"USER" => "paypal-xxxxx"
"PWD" => "xxxxxx"
"SIGNATURE" => "xxxxx"
"VERSION" => 123
"METHOD" => "SetExpressCheckout"
"L_PAYMENTREQUEST_0_NAME0" => "my product"
"L_PAYMENTREQUEST_0_AMT0" => "364.78"
"L_PAYMENTREQUEST_0_QTY0" => 1
"PAYMENTREQUEST_0_ITEMAMT" => 364.78
"PAYMENTREQUEST_0_AMT" => 364.78
"PAYMENTREQUEST_0_PAYMENTACTION" => "Sale"
"PAYMENTREQUEST_0_CURRENCYCODE" => "EUR"
"PAYMENTREQUEST_0_DESC" => "customer #64637 Schowalter..."
"PAYMENTREQUEST_0_INVNUM" => "#64637"
"NOSHIPPING" => 1
"RETURNURL" => "http://mydomain.es/payment/success/64637"
"CANCELURL" => "http://mydomain.es"
"LOCALECODE" => "ES"
]
the endpoint is:
https://api-3t.sandbox.paypal.com/nvp
someone an help? just want to use spanish, because the website is spanish.
I don't know why but now it works, the correct LOCALECODE is the "full locale" so:
LOCALECODE=es_ES
I can only think that there is some kind of latency on sandbox.. after 3 tries, with "es_ES" finally the gateway is in spanish.
hi friends i am using paypal REST API in my eCommerce website. all are works fine. what i need is, i have to send user email with cart and payer information to store it in paypal. how can i do this?
$items[] = array(
'name' => $product_name,
'quantity' => 1,
'price' => $cart_item['amount'],
'sku' => $current['uid'],
'currency' => 'USD'
);
$credit_card = array(
'type'=> $cc_card_type,
'number' => $cc_card_number,
'expire_month'=>$cc_card_month,
'expire_year'=>$cc_card_year,
'cvv2'=>$cc_card_cvv2,
'first_name'=>$cc_first_name,
'last_name'=>$cc_last_name
);
$result = pay_direct_with_credit_card($credit_card, PP_CURRENCY , $total_amount, $items, $payment_desc) ;
You can do that by providing payer_info object
See:
Payment Object > Payer > payer_info object
Hth..
Hi I have been trying to validate CC no., CVV no., EXPDATE of the users credit card for recurring billing in PayFlow. The main objective is to let the user have access to subscription products only if the credit card is valid.
I have been advised to check the card prior to creating the profile you could run a credit card verification ($0 authorization)
So I did it and I got [RESPMSG] => Verified
Here's my request and response messages:
Request
Array
(
[TRXTYPE] => A
[TENDER] => C
[PARTNER] => PayPal
[USER] => XXXXX
[PWD] => XXXXX
[AMT] => 0
[ACCT] => 5105105105105100
[EXPDATE] => 1218
[INVNUM] => PONUM1
[VERBOSITY] => HIGH
[BILLTOZIP] => 95031
)
Response
Array
(
[RESULT] => 0
[PNREF] => A11A8C1A41C0
[RESPMSG] => Verified
[AUTHCODE] => 992PNI
[AVSADDR] => X
[AVSZIP] => X
[HOSTCODE] => A
[PROCAVS] => U
[TRANSTIME] => 2015-11-22 23:30:52
[AMT] => 0.00
[ACCT] => 5100
[EXPDATE] => 1218
[CARDTYPE] => 1
[IAVS] => X
[PREFPSMSG] => No Rules Triggered
[POSTFPSMSG] => No Rules Triggered
)
Now my question is I haven't provided CVV2 and also Any future date as EXPDATE gets verified. Can you please explain how things are working here? Also how can I verify CC, CVV and EXPDATE ?
This is simply creating the profile without any initial payment. As such, it's not going to validate the card at all. Of course, the first payment attempted on the profile would fail.
If you want to check the card prior to creating the profile you could run a credit card verification ($0 authorization).
So run the card verification first, and then only if that is successful you would follow up with a call to create the profile.
Keep in mind that if you're working in the sandbox any credit card expiration and security code will be accepted as long as it's not expired. This is done in the sandbox to make testing quick and easy.
If you would like to force errors in the API response so you can test those cases, take a look at the PayFlow documentation on testing.
Yes in the Test mode any future date for EXPDATE will be fine as Andrew mentioned . If you are looking for CVV value to be returned as "N" in the test mode then you can adjust the CVV values according to the docs below .
https://developer.paypal.com/webapps/developer/docs/classic/payflow/integration-guide/#testing-card-security-code
NVP Request:
VENDOR=XXX&PARTNER=Paypal&USER=XXXX&PWD=XXXX&TRXTYPE[1]=A&TENDER[1]=C&VERBOSITY=HIGH&ACCT[16]=5105105105105100&EXPDATE[4]=1020&AMT=0.00&**CVV2[3]=400**&COMMENT1[23]=Global Test Transaction&FIRSTNAME[4]=John&LASTNAME[5]=Smith&STREET=49354 Main&CITY[7]=SanJose&STATE[2]=CA&ZIP[5]=94303&COUNTRY[2]=US
NVP Response:
RESULT=0
PNREF=A71C8A7EA028
RESPMSG=Verified
AUTHCODE=010101
AVSADDR=N
AVSZIP=N
CVV2MATCH=N
HOSTCODE=A
RESPTEXT=100
PROCAVS=I8
PROCCVV2=N
TRANSTIME=2015-11-23 20:05:55
FIRSTNAME=John
LASTNAME=Smith
AMT=0.00
ACCT=5100
EXPDATE=1020
CARDTYPE=1
IAVS=N
PREFPSMSG=No Rules Triggered
POSTFPSMSG=No Rules Triggered
My intention is to create a Recurring Profile and pass a company_id as custom parameter to be stored IPN database, where I can create a relation between payment and for which company it was done.
I have read that while creating Recurring Payment Profile to get some custom value in IPN database, you should pass it in PROFILEREFERENCE parameter and then retrieve it from rp_invoice_id in response.
I cannot get the desired output
My request:
$inputData = array(
'METHOD' => 'CreateRecurringPaymentsProfile',
'TOKEN' => $_GET['token'], //get from GetExpressCheckout
'PAYERID' => $billerInfo['PAYERID'], //from GetExpressCheckout response
'PROFILESTARTDATE' => date("Y-m-d h:i:s", strtotime("+5 seconds")), //2012-05-11T00:00:00Z #Billing date start, in UTC/GMT format
'DESC' => 'LeaveBuddy: subscription amount is $' . $bill .' for the provided service ($12 per user per year).', //#Profile description - same as billing agreement description
'BILLINGPERIOD' => 'Year', #Period of time between billings
'BILLINGFREQUENCY' => 1,#Frequency of charges
'AMT' => 10, //Todo: dynamically calculate the amt #The amount the buyer will pay in a payment period
'CURRENCYCODE' => 'USD',#The currency, e.g. US dollars
'COUNTRYCODE' => 'US',#The country code, e.g. US
'MAXFAILEDPAYMENTS' => '0',#Maximum failed payments before suspension of the profile
'PROFILEREFERENCE' => 'companyid=1', //my custom value
);
The response that I am getting is:
{"InstantPaymentNotification":{"id":"553db30b-ea1c-4f68-8b5d-4fe5cbdd56cb","notify_version":"3.8","verify_sign":"A--8MSCLabuvN8L.-MHjxC9uypBtAQZom1C7.mbS1Jv-J898ZO0eeOr9","test_ipn":"1","address_city":null,"address_country":null,"address_country_code":null,"address_name":null,"address_state":null,"address_status":null,"address_street":null,"address_zip":null,"first_name":"code","last_name":"booster","payer_business_name":null,"payer_email":"codebooster#gmail.com","payer_id":"XXXXXXXX","payer_status":"verified","contact_phone":null,"residence_country":"US","business":null,"item_name":null,"item_number":null,"quantity":null,"receiver_email":"boom#gmail.com","receiver_id":null,"custom":null,"invoice":null,"memo":null,"option_name1":null,"option_name2":null,"option_selection1":null,"option_selection2":null,"tax":"0.00","auth_id":null,"auth_exp":null,"auth_amount":null,"auth_status":null,"num_cart_items":null,"parent_txn_id":null,"payment_date":null,"payment_status":null,"payment_type":null,"pending_reason":null,"reason_code":null,"remaining_settle":null,"shipping_method":null,"shipping":"0.00","transaction_entity":null,"txn_id":"316859739","txn_type":"recurring_payment","exchange_rate":null,"mc_currency":null,"mc_fee":null,"mc_gross":10,"mc_handling":null,"mc_shipping":null,"payment_fee":null,"payment_gross":null,"settle_amount":null,"settle_currency":null,"auction_buyer_id":null,"auction_closing_date":null,"auction_multi_item":null,"for_auction":null,"subscr_date":null,"subscr_effective":null,"period1":null,"period2":null,"period3":null,"amount1":null,"amount2":null,"amount3":null,"mc_amount1":null,"mc_amount2":null,"mc_amount3":null,"recurring":null,"reattempt":null,"retry_at":null,"recur_times":null,"username":null,"password":null,"subscr_id":null,"case_id":null,"case_type":null,"case_creation_date":null,"created":"2015-04-27 03:54:51","modified":"2015-04-27 03:54:51"},"PaypalItem":[]}
So i cannot find any [rp_invoice_id] parameter here, and my invoice is also appearing null. Can any one tell me what I am missing?
i am using paypal adaptive parallel payments using light box so that user resides on my own site without redirections.
I am simply want when i click on payment button i will get dynamic key in the form and so on the posting form lightbox opens up and i gets payment from sender and split the money in 2 accounts.
paypal business account:
mohsin#balianti.com that is my site admin account as well. who will receive 10% from total amount.
sanbox account that i created in mohsin#balianti.com sandbox account options: mmskit#outlook.com that will receive 90% of total money.
so mohsin#balianti.com as a site admin and holding business account will receive 10% while other receiver will receive 90%.
means total money will split in both accounts.
hope you will got my point.
the problem is that:
1- i am not getting paykey from paypal.
2- i am unable to do the transaction in light box.
3- i am unable to slipt the money in 2 receivers and so unable to complete to process.
My HTML Code:
<html>
<head>
<script src="https://www.paypalobjects.com/js/external/dg.js" type="text/javascript"></script>
</head>
<body>
<!--https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=AP-5S482348KH512131U-->
<form action="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=NOT KNOW HOW TO GET THIS PAY KEY ON THE BUTTON CLICK" target="PPDGFrame" class="standard">
<label for="buy">Buy Now:</label>
<input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif">
</form>
<script type="text/javascript" charset="utf-8">
var embeddedPPFlow = new PAYPAL.apps.DGFlow({trigger: 'submitBtn'});
</script>
</body>
</html>
My Config.php file:
<?php
/**
* Timezone Setting
* List of Supported Timezones: http://www.php.net/manual/en/timezones.php
*/
date_default_timezone_set('America/Chicago');
/**
* Enable Sessions
* Checks to see if a session_id exists. If not, a new session is started.
*/
if(!session_id()) session_start();
/**
* Sandbox Mode - TRUE/FALSE
* Check the domain of the current page and set $sandbox accordingly.
* This allows you to automatically use Sandbox or Live credentials throughout
* your application based on what server the app is running from.
*
* I like to do this so I don't forget to update Sandbox credentials to Live
* prior to uploading files to a production server.
*
* In this case, it's checking to see if the current URL is http://sandbox.domain.*
* If so, $sandbox is true and the PayPal sandbox will be used throughout. If not,
* we'll assume it must be a live transaction and will use live credentials throughout.
*
* Following this pattern will allow you to create your own http://sandbox.domain.com test server,
* and then any time your code runs from that server, PayPal's sandbox will be used automatically.
*
* If you would rather just set $sandbox to true/false on your own that's fine,
* but you have to make sure your live server always uses false and your test server
* always uses true. It's easy to forget this and up with real customers processing
* payments from your live site on the PayPal sandbox.
*/
$host_split = explode('.',$_SERVER['HTTP_HOST']);
$sandbox = $host_split[0] == 'sandbox' && $host_split[1] == 'domain' ? TRUE : FALSE;
$domain = $sandbox ? 'http://sandbox.domain.com/' : 'http://lahori.org/mydev/themusicnetwork/';
/**
* Enable error reporting if running in sandbox mode.
*/
if($sandbox)
{
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', '1');
}
/*
* PayPal API Version
* ------------------
* The library is currently using PayPal API version 109.0.
* You may adjust this value here and then pass it into the PayPal object when you create it within your scripts to override if necessary.
*/
$api_version = '109.0';
/*
* PayPal Application ID
* --------------------------------------
* The application is only required with Adaptive Payments applications.
* You obtain your application ID but submitting it for approval within your
* developer account at http://developer.paypal.com
*
* We're using shorthand if/else statements here to set both Sandbox and Production values.
* Your sandbox values go on the left and your live values go on the right.
* The sandbox value included here is a global value provided for developrs to use in the PayPal sandbox.
*/
$application_id = $sandbox ? 'APP-80W284485P519543T' : '';
/*
* PayPal Developer Account Email Address
* This is the email address that you use to sign in to http://developer.paypal.com
*/
$developer_account_email = 'mohsin#balianti.com';
/*
* PayPal Gateway API Credentials
* ------------------------------
* These are your PayPal API credentials for working with the PayPal gateway directly.
* These are used any time you're using the parent PayPal class within the library.
*
* We're using shorthand if/else statements here to set both Sandbox and Production values.
* Your sandbox values go on the left and your live values go on the right.
*
* You may obtain these credentials by logging into the following with your PayPal account: https://www.paypal.com/us/cgi-bin/webscr?cmd=_login-api-run
*/
$api_username = $sandbox ? 'mohsin_api1.balianti.com' : 'LIVE_API_USERNAME';
$api_password = $sandbox ? 'DAQQ3QK5LTHHWGYV' : 'LIVE_API_PASSWORD';
$api_signature = $sandbox ? 'Ad9JZLf8.13dlHmFgFft2NVbaPK4AvTXPIYEMvf.CyBXiGxnrmbQG4l2' : 'LIVE_API_SIGNATURE';
/*
* Payflow Gateway API Credentials
* ------------------------------
* These are the credentials you use for your PayPal Manager: http://manager.paypal.com
* These are used when you're working with the PayFlow child class.
*
* We're using shorthand if/else statements here to set both Sandbox and Production values.
* Your sandbox values go on the left and your live values go on the right.
*
* You may use the same credentials you use to login to your PayPal Manager,
* or you may create API specific credentials from within your PayPal Manager account.
*/
$payflow_username = $sandbox ? 'SANDBOX_PAYFLOW_USERNAME' : 'LIVE_PAYFLOW_USERNAME';
$payflow_password = $sandbox ? 'SANDBOX_PAYFLOW_PASSWORD' : 'LIVE_PAYFLOW_PASSWORD';
$payflow_vendor = $sandbox ? 'SANDBOX_PAYFLOW_VENDOR' : 'LIVE_PAYFLOW_VENDOR';
$payflow_partner = $sandbox ? 'SANDBOX_PAYFLOW_PARTNER' : 'LIVE_PAYFLOW_PARTNER';
/*
* PayPal REST API Credentials
* ---------------------------
* These are the API credentials used for the PayPal REST API.
* These are used any time you're working with the REST API child class.
*
* You may obtain these credentials from within your account at http://developer.paypal.com
*/
$rest_client_id = $sandbox ? 'AUjqAhB6ZWMudj58C_NAC0kA58EmNCl2LPFlmaX76t1e0kVu-GwALjzVTBwR' : 'LIVE_CLIENT_ID';
$rest_client_secret = $sandbox ? 'EPXlgBAIfaptG15JI7OxxZK1GNxgfAqQg5uhmllzdF1FIE5hjEhsIBbrwfbV' : 'LIVE_SECRET_ID';
/*
* PayPal Finance Portal API
* -------------------------
* These are credentials used for obtaining a PublisherID used in Bill Me Later Banner code.
* As of now, these are specialized API's and you must obtain credentials directly from a PayPal rep.
*/
$finance_access_key = $sandbox ? 'SANDBOX_ACCESS_KEY' : 'LIVE_ACCESS_KEY';
$finance_client_secret = $sandbox ? 'SANDBOX_CLIENT_SECRET' : 'LIVE_CLIENT_SECRET';
/**
* Third Party User Values
* These can be setup here or within each caller directly when setting up the PayPal object.
*/
$api_subject = ''; // If making calls on behalf a third party, their PayPal email address or account ID goes here.
$device_id = '';
$device_ip_address = $_SERVER['REMOTE_ADDR'];
?>
My PHP Code i get from angel's eye paypal class:
<?php
// Include required library files.
require_once('config.php');
require_once('paypal.class.php');
require_once('paypal.adaptive.class.php');
// Create PayPal object.
$PayPalConfig = array(
'Sandbox' => $sandbox,
'DeveloperAccountEmail' => $developer_account_email,
'ApplicationID' => $application_id,
'DeviceID' => $device_id,
'IPAddress' => $_SERVER['REMOTE_ADDR'],
'APIUsername' => $api_username,
'APIPassword' => $api_password,
'APISignature' => $api_signature,
'APISubject' => $api_subject
);
$PayPal = new PayPal_Adaptive($PayPalConfig);
// Prepare request arrays
$PayRequestFields = array(
'ActionType' => 'PAY', // Required. Whether the request pays the receiver or whether the request is set up to create a payment request, but not fulfill the payment until the ExecutePayment is called. Values are: PAY, CREATE, PAY_PRIMARY
'CancelURL' => $domain.'cancel.php', // Required. The URL to which the sender's browser is redirected if the sender cancels the approval for the payment after logging in to paypal.com. 1024 char max.
'CurrencyCode' => 'USD', // Required. 3 character currency code.
'FeesPayer' => 'EACHRECEIVER', // The payer of the fees. Values are: SENDER, PRIMARYRECEIVER, EACHRECEIVER, SECONDARYONLY
'IPNNotificationURL' => '', // The URL to which you want all IPN messages for this payment to be sent. 1024 char max.
'Memo' => '', // A note associated with the payment (text, not HTML). 1000 char max
'Pin' => '', // The sener's personal id number, which was specified when the sender signed up for the preapproval
'PreapprovalKey' => '', // The key associated with a preapproval for this payment. The preapproval is required if this is a preapproved payment.
'ReturnURL' => $domain.'return.php', // Required. The URL to which the sener's browser is redirected after approvaing a payment on paypal.com. 1024 char max.
'ReverseAllParallelPaymentsOnError' => '', // Whether to reverse paralel payments if an error occurs with a payment. Values are: TRUE, FALSE
'SenderEmail' => '', // Sender's email address. 127 char max.
'TrackingID' => '' // Unique ID that you specify to track the payment. 127 char max.
);
$ClientDetailsFields = array(
'CustomerID' => '', // Your ID for the sender 127 char max.
'CustomerType' => '', // Your ID of the type of customer. 127 char max.
'GeoLocation' => '', // Sender's geographic location
'Model' => '', // A sub-identification of the application. 127 char max.
'PartnerName' => 'Always Give Back' // Your organization's name or ID
);
$FundingTypes = array('ECHECK', 'BALANCE', 'CREDITCARD');
$Receivers = array();
$Receiver = array(
'Amount' => '10.00', // Required. Amount to be paid to the receiver.
'Email' => 'mohsin#balianti.com', // Receiver's email address. 127 char max.
'InvoiceID' => '', // The invoice number for the payment. 127 char max.
'PaymentType' => 'GOODS', // Transaction type. Values are: GOODS, SERVICE, PERSONAL, CASHADVANCE, DIGITALGOODS
'PaymentSubType' => '', // The transaction subtype for the payment.
'Phone' => array('CountryCode' => '', 'PhoneNumber' => '', 'Extension' => ''), // Receiver's phone number. Numbers only.
'Primary' => 'TRUE' // Whether this receiver is the primary receiver. Values are boolean: TRUE, FALSE
);
array_push($Receivers,$Receiver);
$Receiver = array(
'Amount' => '5.00', // Required. Amount to be paid to the receiver.
'Email' => 'mmskit#outlook.com', // Receiver's email address. 127 char max.
'InvoiceID' => '', // The invoice number for the payment. 127 char max.
'PaymentType' => 'GOODS', // Transaction type. Values are: GOODS, SERVICE, PERSONAL, CASHADVANCE, DIGITALGOODS
'PaymentSubType' => '', // The transaction subtype for the payment.
'Phone' => array('CountryCode' => '', 'PhoneNumber' => '', 'Extension' => ''), // Receiver's phone number. Numbers only.
'Primary' => 'false' // Whether this receiver is the primary receiver. Values are boolean: TRUE, FALSE
);
array_push($Receivers,$Receiver);
$SenderIdentifierFields = array(
'UseCredentials' => '' // If TRUE, use credentials to identify the sender. Default is false.
);
$AccountIdentifierFields = array(
'Email' => '', // Sender's email address. 127 char max.
'Phone' => array('CountryCode' => '', 'PhoneNumber' => '', 'Extension' => '') // Sender's phone number. Numbers only.
);
$PayPalRequestData = array(
'PayRequestFields' => $PayRequestFields,
'ClientDetailsFields' => $ClientDetailsFields,
'FundingTypes' => $FundingTypes,
'Receivers' => $Receivers,
'SenderIdentifierFields' => $SenderIdentifierFields,
'AccountIdentifierFields' => $AccountIdentifierFields
);
// Pass data into class for processing with PayPal and load the response array into $PayPalResult
$PayPalResult = $PayPal->Pay($PayPalRequestData);
if(!$this->paypal_adaptive->APICallSuccessful($PayPalResult['Ack']))
{
$errors = array('Errors'=>$PayPalResult['Errors']);
// Write the contents of the response array to the screen for demo purposes.
echo '<pre />';
print_r($errors);
exit();
}
else
{
header('Location: '.$PayPalResult['RedirectURL']);
$ExecutePaymentFields = array(
'PayKey' => $PayPalResult['PayKey'],
'FundingPlanID' => ''
);
$PayPalRequestData = array('ExecutePaymentFields' => $ExecutePaymentFields);
$PayPalResult = $PayPal->ExecutePayment($PayPalRequestData);
if(!$PayPalResult)
{
$errors = array('Errors'=>$PayPalResult['Errors']);
echo '<pre />';
print_r($errors);
exit();
}
else
{
echo '<pre />';
print_r($PayPalResult);
}
}
if($PayPal->APICallSuccessful($PayPalResult['Ack']))
{
// Redirect to PayPal so user can complete payment.
header('Location: '.$PayPalResult['RedirectURL']);
}
else
{
// Error
echo '<pre />';
print_r($PayPalResult['Errors']);
exit();
}
?>
my login information and whole detailed level information i received from paypal.
REST API CREDENTIALS
Test credentials
Your test credentials are enabled for all features in your app.
Test account:
mohsin-facilitator#balianti.com
Endpoint: api.sandbox.paypal.com
Client ID: AUjqAhB6ZWMudj58C_NAC0kA58EmNCl2LPFlmaX76t1e0kVu-GwALjzVTBwR
Secret: EPXlgBAIfaptG15JI7OxxZK1GNxgfAqQg5uhmllzdF1FIE5hjEhsIBbrwfbV
Here is your API signature:
API Username: mohsin_api1.balianti.com
API Password: DAQQ3QK5LTHHWGYV
Signature: Ad9JZLf8.13dlHmFgFft2NVbaPK4AvTXPIYEMvf.CyBXiGxnrmbQG4l2
Copy and paste the PayPal settings above into the API/Integration section of your Magento Configuration page.
You have successfully saved your preferences. Please use the following identity token when setting up Payment Data Transfer on your website.
A9XxF-vXyH3-kPYVX0dDDcojmBxvMidXnmn846gxQD0ehzXM4Xjva0VL6RW
http://developer.paypal.com
mohsin#balianti.com
m#h$!nBali
please please help me resolving the whole issue. i am waiting for serious replies please.
Thank You All.
I took your code and ran it on my server here.
The first thing I notice is that you have everything commented out below the $PayPalResult getting loaded, so you didn't have anything actually happening with that result. No output to screen or back to the requesting client.
When I run it with my credentials and look at the actual result, this is what I'm getting.
[Errors] => Array
(
[0] => Array
(
[Receiver] =>
[Category] => Application
[Domain] => PLATFORM
[ErrorID] => 520009
[ExceptionID] =>
[Message] => Account mohsin#balianti.com is restricted
[Parameter] => mohsin#balianti.com
[Severity] => Error
[Subdomain] => Application
)
)
[Ack] => Failure
[Build] => 10273932
[CorrelationID] => 471e9fbfa0053
[Timestamp] => 2014-03-29T09:45:56.631-07:00
So it seems that there is something wrong with the receiver account you're using on this. When I look into that more I see that you've got the same receiver set as both a primary and a secondary receiver on this same payment.
Once I replaced your receiver email address with 2 separate emails from my own sandbox accounts, I got a successful response.
[Ack] => Success
[Build] => 10273932
[CorrelationID] => 9afd1342ebf17
[Timestamp] => 2014-03-29T09:50:00.472-07:00
[PayKey] => AP-8FY50816521434738
[PaymentExecStatus] => CREATED
So then I went back and tried your account as a receiver along with one of my accounts, but I wound up with the same error about the account being restricted.
So, I'm not sure why that account would be restricted, especially on the sandbox. It doesn't look like a sandbox email account, though. Is it one? You need to make sure you're using sandbox accounts when testing on the sandbox.
If you're actually hitting the live server and getting the same error then you'll need to contact PayPal for help with what's wrong with that account.
You may be getting a different error, though, if you're running live. To check that you need to look at the actual result that is coming back to $PayPalResult. Again, you've got all of that commented out in your code, so it wouldn't even be returning a result back to your client request.
please see.:
Array
(
[Errors] => Array
(
[0] => Array
(
[Receiver] =>
[Category] => Application
[Domain] => PLATFORM
[ErrorID] => 580022
[ExceptionID] =>
[Message] => Invalid request parameter: payKey cannot be null
[Parameter] => payKey
[Severity] => Error
[Subdomain] => Application
)
)
[Ack] => Failure
[Build] => 10273932
[CorrelationID] => 2d63bc22401c7
[Timestamp] => 2014-04-15T02:27:08.040-07:00
[PaymentExecStatus] =>
[XMLRequest] => ReturnAllen_US
[XMLResponse] => 2014-04-15T02:27:08.040-07:00Failure2d63bc22401c710273932580022PLATFORMApplicationErrorApplicationInvalid request parameter: payKey cannot be nullpayKeynull
)
odftetretArray
(
[0] => Array
(
[Receiver] =>
[Category] => Application
[Domain] => PLATFORM
[ErrorID] => 580022
[ExceptionID] =>
[Message] => Invalid request parameter: payKey cannot be null
[Parameter] => payKey
[Severity] => Error
[Subdomain] => Application
)
)