Sto usando questa libreria http://www.binpress.com/app/paypal-adaptive-payments-pro-codeigniter-library/140 e sto usando questo come mio listener ipn per un progetto di codeigniter - http://pastebin.com/pMb7Zhz3.Paypal Problema IPN con pagamento parallelo
Fondamentalmente sto facendo una transazione parallela utilizzando la libreria di PayPal sopra in modo che quando un utente effettua un pagamento/donazione, invia denaro a 2 account diversi. Una volta completata la transazione, paypal invia i dati al mio ascoltatore ipn e analizza le informazioni per 1 cliente bene se lascio questo 'IPNNotificationURL' => ''
nel mio codice e vado in paypal e imposta l'url ipn.
Sto cercando di ottenere informazioni IPN per entrambi gli account, senza che sia necessario che entrambi gli account imposti l'url ipn nelle loro impostazioni di PayPal. Quando imposto lo 'IPNNotificationURL' => 'http://example.com/paypal_ipn'
, ottengo ancora le informazioni sull'iPn per l'account 1, ma ottengo questo avviso Array to string conversion on line 11
del mio listener. Come posso risolvere questo problema e se lo faccio, otterrò le informazioni ipn da entrambi gli account?
Ecco il metodo di pagamento dalla libreria di cui sopra che sto usando per i pagamenti paralleli
function Pay()
{
// 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' => '', // 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' => 'SENDER', // 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' => '', // 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' => '' // Your organization's name or ID
);
$FundingTypes = array('ECHECK', 'BALANCE', 'CREDITCARD');
$Receivers = array();
$Receiver = array(
'Amount' => '', // Required. Amount to be paid to the receiver.
'Email' => '', // Receiver's email address. 127 char max.
'InvoiceID' => '', // The invoice number for the payment. 127 char max.
'PaymentType' => '', // 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' => '' // Whether this receiver is the primary receiver. Values are: 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
);
$PayPalResult = $this->paypal_adaptive->Pay($PayPalRequestData);
if(!$this->paypal_adaptive->APICallSuccessful($PayPalResult['Ack']))
{
$errors = array('Errors'=>$PayPalResult['Errors']);
$this->load->view('paypal_error',$errors);
}
else
{
$data['result'] = $PayPalResult;
$this->load->view('success', $data);
}
}
e la linea 11 è presente dal pastebin sopra - $value = urlencode(stripslashes($value));
Potete fornire quella linea e altre parti rilevanti del vostro codice? – Josh
Spero che questo aiuti: http://stackoverflow.com/questions/8456218/paypal-parallel-payment-ipn – Josh
Ho guardato quel post un paio di volte pure. Stavo ancora avendo problemi. – Catfish