Paypal IPN Проблема с параллельной оплатой

Я использую эту http://www.binpress.com/app/paypal-adaptive-payments-pro-codeigniter-library/140 библиотеку, и я использую ее как мой слушатель ipn для проекта codeigniter - http://pastebin.com/pMb7Zhz3 .

В основном я выполняю параллельную транзакцию, используя указанную выше библиотеку PayPal, так что когда пользователь совершает платеж / пожертвование, он отправляет деньги на 2 разных счета. После завершения транзакции PayPal отправляет данные моему прослушивателю ipn, и он отлично разбирает информацию для 1 клиента, если я оставлю этот 'IPNNotificationURL' => '' в моем коде и войду в PayPal и установлю IPN URL.

Я пытаюсь получить информацию IPN для обеих учетных записей, при этом обеим учетным записям не нужно указывать URL-адрес ipn в своих настройках PayPal. Когда я устанавливаю 'IPNNotificationURL' => 'http://example.com/paypal_ipn', я все равно получаю информацию ipn для 1 учетной записи, но получаю это предупреждение Массив для преобразования строки в строка 11 моего слушателя.Как я могу это исправить, и если я это сделаю, получу ли я информацию об IPN из обеих учетных записей?

Вот метод оплаты из библиотеки выше, который я использую для параллельных платежей

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);    
        }
    }

, а строка 11 - это из pastebin выше - $ value = urlencode (stripslashes ($ value));

6
задан Catfish 28 January 2012 в 21:26
поделиться