Поможете с приемом платежей на сайте?

Здравствуйте!


Стоит простая задача: встроить в страницу сайта форму приема платежей от Яндекс.Денег и отправку на email пароля для оплативших.

Форму я сделал, указал там обязательное требование email.


Создал страницу, принимающую http-запрос от Яндекса после получения платежа.


Вот такой тестовый код:

<?php

$notification_type = $_POST['notification_type']; //p2p-incoming
$operation_id = $_POST['operation_id']; //1234567
$amount = $_POST['amount']; //300.00
$currency = $_POST['currency']; //643
$datetime = $_POST['datetime']; //2011-07-01T09:00:00.000+04:00
$sender = $_POST['sender']; //41001XXXXXXXX
$codepro = $_POST['codepro']; //false
$sha1_hash = $_POST['sha1_hash']; //090a8e7ebb6982a7ad76f4c0f0fa5665d741aafa

file_put_contents("file.txt", $notification_type, FILE_APPEND);
file_put_contents("file.txt", $operation_id, FILE_APPEND);
file_put_contents("file.txt", $amount, FILE_APPEND);
file_put_contents("file.txt", $datetime, FILE_APPEND);
file_put_contents("file.txt", $sender, FILE_APPEND);
?>



Вопрос такой: как получить по operation_id (я так понял, что по нему) информацию о почте заплатившего?


Яндекс пишет: Чтобы получить остальные параметры платежа, включая «Комментарий к платежу», сделайте вызов operation-details и укажите параметр operation_id, который вы получили в уведомлении.


Можете подсказать, как модифицировать этот код, чтобы получить требуемый адрес почты?
  • Вопрос задан
  • 8232 просмотра
Пригласить эксперта
Ответы на вопрос 3
xaker1
@xaker1
Библиотека: github.com/melnikovdv/PHP-Yandex.Money-API-SDK

<?php
require_once(dirname(__FILE__) . '/../lib/YandexMoney.php');

$token = ...; // Предварительно полученный токен, можно брать из БД, можно прописать. 
              //Актуален в течении 3-х лет с момента получения

// ваш код

$ym = new YandexMoney(CLIENT_ID, './ym.log');
$resp = $ym->operationDetail($token, $operation_id);
if ($resp->isSuccess()) {
   // Данные получены успешно, можно забирать нужное.
   var_dump($resp);
} else {
   print "Error: " . $resp->getError();
   die();
}

Но сначало нужно получить токен, смотрите — в примерах библиотеки это есть. Токен записываете в $token, актуален будет в течении 3-х лет.
Будет ли email плательщика в ответе — сказать не могу, работать с API не приходилось.
Ответ написан
light204
@light204 Автор вопроса
Ну да я так и делал, но mail и с тестового запроса не приходит. Вероятно, его нужно запросить как-то по-другому…
Ответ написан
@cbeta7910
В документации написано, что контактные данные передаются по HTTPS:
Для приема уведомлений рекомендуется использовать протокол HTTPS. Обратите
внимание, что получение контактной информации об отправителе в уведомлениях
возможно только при использовании этого протокола. При использовании протокола
HTTP контактные данные в уведомлении передаваться не будут.

Может в этом как раз дело.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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