Witam,
Jestem w trakcie tworzenia swojego pierwszego pluginu do WP, plugin ma generować formularz rezerwacji, z możliwością jej opłacenia przez api dotpay'a.
Założyłem że identyfikator płatności generowany i zwracany do mnie przez dotpay, będzie też identyfikatorem rezerwacji, przez co wymusiło to wysyłanie maila z podsumowaniem dopiero po wykonanej płatności.
Zgodnie z zasadą działania API dotpaya, w pewnym miejscu witryny wywołuję shortcode który odwołuje się do funkcji weryfikującej płatność i wykonującej następne czynności w przypadku powodzenia.
Tak wygląda moja definicja Shortcode'u
function DefineShorcode(){
ob_start();
DotpayCallback();
return ob_get_clean();
}
add_shortcode('ReservationShortcode', 'DefineShorcode');
tak wygląda sama funkcja wywoływana przez shortcode:
function DotpayCallback() {
$plugin= new plugin_class();
$verification = verifyCallback(); // zwraca wartość true lub false;
if($verification == true && $_POST['operation_status'] == 'completed') {
$data = array(
'id' => $_POST['operation_number'],
'control' => $_POST['control'],
'cs' => 1
);
// confirms reservation
$plugin->ConfirmReservation($data);
sendMail($_POST['operation_number']); // kod tej funkcji poniżej
}
if($_POST['operation_status'] == 'rejected' || $_POST['operation_status'] == 'fail'){
$data = array(
'id' => $_POST['operation_number'],
'control' => $_POST['control'],
'cs' => 2
);
$plugin->ConfirmReservation($data);
}
}
Tak z kolei wygląda funkcja w której korzystam z funkcji wp_mail():
function sendMail($data){
$plugin= new plugin_class();
// it gets all updated data about current reservation
$info = $plugin->GetReservationInfo($data)[0];
// it prepares me array with parameters to, subject, msg
$msgHTML = $plugin->PrepareOrderHTMLmsg($info); // przygotowuje teść wiadomości
// adding headers to array
$headers = array('Content-Type: text/html; charset=UTF-8','From: '.get_bloginfo('name').' <'.get_bloginfo('admin_email').'>');
// Send the e-mail:
wp_mail( $msgHTML['send_to'], $msgHTML['subject'], $msgHTML['msg'] , $headers );
}
w żadnym miejscu nie mam wywołanej pętli (wliczając w to funkcje zastosowane we wskazanych fragmentach kodu których kodu w tym poście nie przytoczyłem), a pomimo to dostaje wiele wiadomości o tej samej treści. Co może być tego przyczyną?