@vot-ono

Как осуществить сбор данных с форм, и их отправку письмом строго после оплаты услуги?

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

Имеется страничка заказа услуги, содержащая несколько форм (текстовые, чекбоксы, радио). После сабмита клиента должно перекинуть на страницу оплаты walletone, далее после оплаты, необходимо осуществить отправку этих данных мне на почту, а клиента перекинуть на условную страничку "оплата прошла, ожидайте исполнения заказа"

Платёжка рекомендует
использовать форму такого вида:
<form method="post" action="https://wl.walletone.com/checkout/checkout/Index">
  <input name="WMI_MERCHANT_ID"    value="123456789012"/>
  <input name="WMI_PAYMENT_AMOUNT" value="100.00"/>
  <input name="WMI_CURRENCY_ID"    value="643"/>
  <input name="WMI_DESCRIPTION"    value="Оплата демонстрационного заказа"/>
  <input name="WMI_SUCCESS_URL"    value="https://myshop.ru/w1/paid.php"/>
  <input name="WMI_FAIL_URL"       value="https://myshop.ru/w1/fail.php"/>
  <input type="submit"/>
</form>


На данный момент я настроил обработчик на отправку данных письмом сразу после сабмита (работает), но надо это сделать после оплаты) Полагаю, рекомендованную walletone логично вписать в кнопку, отвечающую за сабмит)
Вероятно здесь не избежать использования mysql, но не хотелось бы связываться)
php выглядит примерно так:
<?php
$to = 'mail@gmail.com';

if ( isset( $_POST['name'] ) ) {
  $name  = substr( $_POST['name'], 0, 64 );
  $age = substr( $_POST['age'], 0, 64 );
  $url   = substr( $_POST['url'], 0, 64 );
  $mail = substr( $_POST['mail'], 0, 250 );
   $userscreenshot = $_POST['screenshot']; // сохраняем в переменную данные полученные из поля cо скрином 
  $check = '';
if (!empty($_POST["check"]) && is_array($_POST["check"]))
{$check = implode(" ", $_POST["check"]);
}; // сохраняем в переменную данные полученные из чекбоксов
        

  if ( !empty( $_FILES['screenshot']['tmp_name'] ) and $_FILES['screenshot']['error'] == 0 ) {
    $filepath = $_FILES['screenshot']['tmp_name'];
    $filename = $_FILES['screenshot']['name'];
  } else {
    $filepath = '';
    $filename = '';
  }
 
  $body = "Имя:\r\n".$name."\r\n\r\n";
  $body .= "Возраст:\r\n".$age."\r\n\r\n";
  $body .= "ССыль:\r\n".$url."\r\n\r\n";
  $body .= "Ищу:\r\n".$check;
 
  send_mail($to, $body, $mail, $filepath, $filename);

}

// функция для отправки почтового сообщения с вложением
function send_mail($to, $body, $mail, $filepath, $filename)
{
  $subject = '300';
  $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  $headers = "From: ".$mail."\r\n";   
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
  $multipart = "--".$boundary."\r\n";
  $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
  $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";

  $body = $body."\r\n\r\n";
 
  $multipart .= $body;
 
  $file = '';
  if ( !empty( $filepath ) ) {
    $fp = fopen($filepath, "r");
    if ( $fp ) {
      $content = fread($fp, filesize($filepath));
      fclose($fp);
      $file .= "--".$boundary."\r\n";
      $file .= "Content-Type: application/octet-stream\r\n";
      $file .= "Content-Transfer-Encoding: base64\r\n";
      $file .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
      $file .= chunk_split(base64_encode($content))."\r\n";
    }
  }
  $multipart .= $file."--".$boundary."--\r\n";
    if (pay_ok = true)
  mail($to, $subject, $multipart, $headers);
}
?>


Заранее спасибо за вашу помощь и поддержку! :)
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Только временное хранилище в файл (в имени файла - id транзакции) с последующим удалением после отправки, когда платежная система даст отбивку на https://myshop.ru/w1/paid.php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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