как заголовок сказал, что я работаю с codeigniter (v2.X), и я включаю angelleye's Paypal library. Сначала было трудно понять, но мне удается делать повторяющиеся платежи. Теперь я столкнулся с другим вопросом относительно этого. Мне нужно создать массив корзины покупок для SetExpressCheckout() и сохранить его в сеансе данных пользователя, чтобы использовать его после входа пользователя в учетную запись PayPal. Здесь идет некоторый кодСеанс Codeigniter не сохраняет данные
private function _setPaypalPayment($data)
{
$cart['items'][0] = array(
'id' => '1',
'name' => "Payment ",
'qty' => '1',
'price' => (float)$data->money,
);
$cart['shopping_cart'] = array(
'items' => $cart['items'],
'subtotal' => (float)$data->money,
'shipping' => 0,
'handling' => 0,
'tax' => 0,
);
$cart['shopping_cart']['grand_total'] = (float)$data->money;
$this->session->set_userdata('shopping_cart', $cart);
$SECFields = array(
'maxamt' => (float)$data->money,
'returnurl' => site_url('payment/confirmTrackPayment'),
'cancelurl' => 'http://xxx',
'hdrimg' => 'http://xxx/assets/images/logo_750X90.png',
'logoimg' => 'http://xxx/assets/images/logo_190X60.png',
'brandname' => 'xxx',
'surveyquestion' => '',
'customerservicenumber' => '',
);
$Payments = array();
$Payment = array(
'amt' => (float)$data->money,
);
array_push($Payments, $Payment);
$PayPalRequestData = array(
'SECFields' => $SECFields,
'Payments' => $Payments,
);
$PayPalResult = $this->paypal_pro->SetExpressCheckout($PayPalRequestData);
if(!$this->paypal_pro->APICallSuccessful($PayPalResult['ACK']))
{
return null;
}
else
{
return $PayPalResult['REDIRECTURL'];
}
}
Эта часть работает нормально, она возвращает URL, и пользователь может войти в свой аккаунт. Но когда он вернулся в оплату/confirmTrackPayment и я делаю
$cart = $this->session->userdata('shopping_cart');
или
$all = $this->session->all_userdata();
Информационный из shopping_cart нет. Я не могу найти ответа на них, пожалуйста, помогите мне!
Заранее спасибо
Спасибо, это почти то же самое, что и код, который я сделал. Но проблема не в платеже, проблема в пользовательских данных сеанса. Это не сохранение информации. Если я получаю информацию сразу после set_userdata(), информация находится там, но после того, как пользователь заходит в свою учетную запись PayPal и возвращается к указанному URL-адресу возврата, информация внутри userdata отсутствует. –
Существует несколько причин, по которым ваши данные сеанса будет отсутствовать - 1. session_start() не вызывался перед установкой данных сеанса. 2. session_start() не вызывался перед получением данных сеанса. 3. session_start() вызывается после того, как что-то было выведено в браузер. 4. Переадресация переместилась в другой домен (возможно, поддомен). 5. PHP не может писать в ваш каталог tmp. Возможно, попробуйте найти в своих журналах ошибок. –
Я поеду с 4, но в Angeleyes он перенаправляется в другой домен (домен PayPal), так как я могу сделать, чтобы сохранить данные перед перенаправлением в другой домен и обратно? –