@Brahner

Как отправить свои переменные в Яндекс.API?

Осуществляю оплату услуг с сайта посредством 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. Идеальным решением было бы передать эту переменную вместе с запросом на проведение платежа, чтобы она потом вернулась, как это можно сделать с ВебМани. Но не знаю можно ли. Сохранить нужную переменную в сессии не получилось. Проверял. Как быть?
  • Вопрос задан
  • 2514 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Вы используете какую то библиотеку YandexMoney.
Смотрите на её код.
Вообще в описании API свои параметры передавать разумеется можно.
api.yandex.ru/money/doc/dg/reference/request-payme...

PS
$q="UPDATE payment SET status=1,code='$code' WHERE id='$_GET[id_pay]'";
			mysql_query($q);
За это хочется убивать если честно.
ВСЕГДА обрабатывайте переменные. ВСЕГДА.
Хотя бы вот так
$q = 'UPDATE payment SET status=1, code="' . mysql_real_escape_string($code). '" WHERE id= "' . mysql_real_escape_string($_GET[id_pay]) . '"';

а лучше конечно использовать mysqli_
Ответ написан
@alffa
Если честно, мне за такие ответы хочется убивать.
Человек явно задал вопрос "Как отправить свои переменные в Яндекс.API?"
Он не спрашивал как правильно "обрабатывайте переменные".
Он не спрашивал где почитать про Яндекс.API
Он не спрашивал что лучше "mysqд_" или "mysqli_".
Он спрашивал - "Как отправить свои переменные в Яндекс.API?"
Так будьте добры ответить на вопрос, или ткните носом в то место где за это написано, если нет ответа то зачем вообще что-то писать.

Вот и у меня вопрос - "Как отправить свои переменные в Яндекс.API?"

чтобы при совершении платежа, мне вернулся ответ типа :
{"status":"success","payer":"410017ХХХХХХХ","payee":"41001113ХХХХХХХ","credit_amount":1050.67,"payee_uid":14047ХХХХ,"payment_id":"49931379649ХХХХХХХ", "тут_моя_переменная":"с_моим_параметром"} ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы