Estoy usando esta biblioteca http://www.binpress.com/app/paypal-adaptive-payments-pro-codeigniter-library/140 y estoy usando esto como mi oyente ipn para un proyecto codeigniter - http://pastebin.com/pMb7Zhz3.Paypal IPN Problema con pago paralelo
Básicamente estoy haciendo una transacción paralela usando la biblioteca de PayPal arriba para que cuando un usuario haga un pago/donación, envíe dinero a 2 cuentas diferentes. Una vez que se completa una transacción, PayPal envía datos a mi oyente de ipn y analiza la información para 1 cliente simplemente bien si dejo este 'IPNNotificationURL' => ''
en mi código y voy a PayPal y configuro la URL de ipn.
Estoy tratando de obtener información de IPN para ambas cuentas, sin tener que tener ambas cuentas configuradas en la URL de ipn en su configuración de PayPal. Cuando establezco 'IPNNotificationURL' => 'http://example.com/paypal_ipn'
, sigo obteniendo la información de ipn para la cuenta 1, pero recibo esta advertencia Array to string conversion on line 11
de mi oyente. ¿Cómo puedo solucionar esto? Si lo hago, ¿obtendré la información de ipn de ambas cuentas?
Aquí está el método de pago de la biblioteca anterior que estoy usando para los pagos paralelos
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);
}
}
y la línea 11 está presente desde el Pastebin anterior - $value = urlencode(stripslashes($value));
¿Puede proporcionar esa línea y otras partes relevantes de su código? – Josh
Espero que esto ayude: http://stackoverflow.com/questions/8456218/paypal-parallel-payment-ipn – Josh
He visto esa publicación algunas veces también. Todavía estaba teniendo problemas. – Catfish