Задать вопрос
@ddddeity

Не приходит товар на почту после оплаты?

подключил магазин к anypay, оплата проходит, но на почту покупателю не приходит товар, только квитанция об оплате с платежной системы и все... делал по документации не понимаю где накосячил.. до этого другая платежка стояла,но там документация почти идентичная, все норм работало.

вот собственно сама документация: https://anypay.io/doc#signature_form

Вот код процесса покупки
<?php
session_start();
if(!isset($_SESSION['redirect_link'])){
	header("location: ../index.php");
}
if(isset($_GET['email']) and isset($_GET['product'])){
	$email = $_GET['email'];
	$product = $_GET['product'];
	if($product == 1){
		$amount = 5;
	}
	else if($product == 2){
		$amount = 50;
	}
	else if($product == 3){
		$amount = 99;
	}
	else if($product == 4){
		$amount = 320;
	}
	else if($product == 5){
		$amount = 230;
	}
	else if($product == 6){
		$amount = 300;	
	}
	else if($product == 7){
		$amount = 99;	
	}
	$errors = array(
		'error' => False,
		'message' => ''
	);
	if($product != 1 && $product != 2 && $product != 3 && $product != 4 && $product != 5 && $product != 6 && $product != 7){
		header("location: ../index.php");
	}
	if(strlen($email) == 0){
		if($errors['error'] == False){
			$errors['error'] = True;
			$errors['message'] = 'Пожалуйста заполните поле вашего e-mail адреса';
		}
	}
	if(!preg_match('/^[a-zA-Z0-9]{1}[a-zA-Z0-9_.-]{3,}\@[a-zA-Z]+\.[a-z]{2,}$/', $email)){
		if($errors['error'] == False){
			$errors['error'] = True;
			$errors['message'] = 'Не валидный e-mail адрес';
		}
	}
	if(strlen($email) > 56){
		if($errors['error'] == False){
			$errors['error'] = True;
			$errors['message'] = 'e-mail адрес очень длинный';
		}
	}
	if($errors['error'] == False){
		$shop_id = 'ид магазина';
        $secret_key = 'секретный ключ';
        $amount = $amount;
        $pay_id = time();
        $currency = 'RUB';
           
        $sign = md5($currency.':'.$amount.':'.$secret_key.':'.$shop_id.':'.$pay_id);  //Генерация ключа
        header("location: https://anypay.io/merchant?merchant_id=".$shop_id."&amount=".$amount."&pay_id=".$pay_id."&currency=".'RUB'."&sign=".$sign."&email=".$email."");
	}
	else{
		$_SESSION['error'] = $errors['message'];
		header("location: ".$_SESSION['redirect_link']."");
	}
}
else{
	header("location: ".$_SESSION['redirect_link']."");
}
?>


Вот код провервки оплаты
<?php
include "includes/db.php";
include "includes/querys.php";
include "includes/setmailer.php";
$shop_id = 'ид магазина';
$secret_key = 'секретный ключ';
$ordered_email = $_REQUEST['custom_field'];
if($_REQUEST['amount'] == 5){
	$product = 1;
	$product_text = '1 продукт';
}
else if($_REQUEST['amount'] == 50){
	$product = 2;
	$product_text = '2 продукт';
}
else if($_REQUEST['amount'] == 99){
	$product = 3;
	$product_text = '3 продукт';
}
else if($_REQUEST['amount'] == 320){
	$product = 4;
	$product_text = '4 продукт';
}
else if($_REQUEST['amount'] == 230){
	$product = 5;
	$product_text = '5 продукт';
}
else if($_REQUEST['amount'] == 300){
	$product = 6;
	$product_text = '6 продукт';
}
else if($_REQUEST['amount'] == 99){
	$product = 7;
	$product_text = '7 продукт';
}

$signature = md5($shop_id.':'.$_REQUEST['amount'].':'.$_REQUEST['pay_id'].':'.$secret_key);

if ($signature != $_REQUEST['sign']) {
    die('bad sign!');
}

die('OK'); 
$request->setdb($conn,'products','game_type',$product,'used',0,1);
$key = $request->select();
if($key->num_rows > 0){
	$key_row = $key->fetch_array();
	$key_product = $key_row['key_product'];
	$emailed->set($ordered_email, 'Спасибо за покупку,ваш ключ ждёт вас!','Поздравляем: '.$product_text.', ваш - ключ: '.$key_product.'');
	$emailed->send();
	$request->setdb($conn,'products','used',1,'id',$key_row['id']);
	$request->update();
	$request->setdb($conn,'products','ordered_email',$ordered_email,'id',$key_row['id']);
	$request->update();
}
?>
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Подключите в отдельном php файле модуль include "includes/setmailer.php";
и попробуйте себе что-нибудь отправить, отдельно от бизнес-логики оплаты.
PS: Возможно, придется исправить конфиг этого модуля по части smtp протокола.
PPS: У хостинга, от куда вы отправляете письмо, могут быть особенности с работой smtp - уточняйте.
Ответ написан
@qfake
Сейчас ночь и я невнимательна или вы заканчиваете выполнение скрипта до того, как происходит запись в базу и все остальное?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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