Осуществляю оплату услуг с сайта посредством API таким образом
require_once(dirname(__FILE__) . '/lib/YandexMoney.php');
require_once(dirname(__FILE__) . '/consts.php');
require("../config.php");
require("../engine/functions.php");
$code = $_GET['code'];
if (!isset($code)) { // If we are just begginig OAuth
$scope = "payment.to-account(\"410011*********\",\"account\").limit(,1)";
//сюда вместо 1 надо подставить нужную мне сумму для получения разрешения
$authUri = YandexMoney::authorizeUri(CLIENT_ID, REDIRECT_URI, $scope);
header('Location: ' . $authUri);
} else { // when we recieved a temporary code on redirect
$ym = new YandexMoney(CLIENT_ID, './ym.log');
$receiveTokenResp = $ym->receiveOAuthToken($code, REDIRECT_URI, CLIENT_SECRET);
if ($receiveTokenResp->isSuccess()) {
$token = $receiveTokenResp->getAccessToken();
} else {
die();
}
$resp = $ym->requestPaymentP2P($token, "410011*********", "1");
// сюда вместо 1 надо подставить нужную мне сумму для оплаты
print "<p class=\"output\">";
if ($resp->isSuccess()) {
//var_dump($resp);
} else {
print "Error: " . $resp->getError();
die();
}
print "</p>";
$requestId = $resp->getRequestId();
$resp = $ym->processPaymentByWallet($token, $requestId);
print "<p class=\"output\">";
if ($resp->isSuccess()) {
$q="UPDATE payment SET status=1,code='$code' WHERE id='$_GET[id_pay]'";
mysql_query($q);
header('location: ../success.php');
} else {
header('location: ../fail.php');
}
Если вызывать сей скрипт передавая методом GET или POST переменную id_pay, то эта переменная теряется, поскольку происходит перенаправление на страничку яндекса, а потом происходит возврат на страничку скрипта, где уже отсутствует массив GET или POST. Идеальным решением было бы передать эту переменную вместе с запросом на проведение платежа, чтобы она потом вернулась, как это можно сделать с ВебМани. Но не знаю можно ли. Сохранить нужную переменную в сессии не получилось. Проверял. Как быть?