diff --git a/Belevo_Bezahl_Modul/module.php b/Belevo_Bezahl_Modul/module.php index 16d41c8..432fae6 100644 --- a/Belevo_Bezahl_Modul/module.php +++ b/Belevo_Bezahl_Modul/module.php @@ -7,144 +7,104 @@ class Belevo_Bezahl_Modul extends IPSModule { // Die Standard-Create() Methode aufrufen parent::Create(); - $this->RegisterPropertyInteger("Reservate", 0); - $this->RegisterPropertyInteger("GetAmount", 0); - $this->RegisterPropertyInteger("HTMLBox", 0); $this->RegisterVariableInteger("ReservationAmount", "ReservationAmount", '', 0); $this->RegisterVariableBoolean("AmountIsReserved", "AmountIsReserved", '', false); + $this->RegisterVariableString("HTMLContent", "HTMLContent", '', ''); - // Event-Handler registrieren - $this->RegisterMessage($this->ReadPropertyInteger("Reservate"), VM_UPDATE); - $this->RegisterMessage($this->ReadPropertyInteger("GetAmount"), VM_UPDATE); + // Initiales HTML setzen + $this->SetHTMLContent(); } public function ApplyChanges() { parent::ApplyChanges(); - - // Event-Handler erneut registrieren, falls sich die Property-IDs geändert haben - $this->RegisterMessage($this->ReadPropertyInteger("Reservate"), VM_UPDATE); - $this->RegisterMessage($this->ReadPropertyInteger("GetAmount"), VM_UPDATE); } - public function MessageSink($TimeStamp, $SenderID, $Message, $Data) + private function SetHTMLContent() { - IPS_LogMessage("Belevo_Bezahl_Modul", "MessageSink: SenderID=$SenderID, Message=$Message"); - - switch ($SenderID) { - case $this->ReadPropertyInteger("Reservate"): - if (GetValueBoolean($this->ReadPropertyInteger("Reservate"))) { - $this->ReservateAmount(GetValueInteger($this->GetIDForIdent("ReservationAmount"))); - } - break; - case $this->ReadPropertyInteger("GetAmount"): - if (GetValueBoolean($this->ReadPropertyInteger("GetAmount"))) { - $this->GetAmount(GetValueInteger($this->ReadPropertyInteger("GetAmount"))); - } - break; - } - } - - public function ReservateAmount($amount) - { - IPS_LogMessage("Belevo_Bezahl_Modul", "ReservateAmount: amount=$amount"); - - // Beispiel-Logik zur Reservierung des Betrags bei Stripe mit Google Pay $apiKey = "pk_test_51Qkr79LJAcsNrpivA90lt7ULEzyXKR8l0pAqTBgfeuAIWlsLS4A3BdIBITc9UooFANbImvlJQ2F2jOZ0X5j8GI7Q00hNNasvQm"; // Test-API-Schlüssel - // Öffnen eines Fensters zur Eingabe der Zahlungsinformationen über Google Pay - $html = ' - + +
+ + + + - '; - SetValue($this->ReadPropertyInteger("HTMLBox"), $html); // Baut das HTML auf - } + function getAmount() { + var xhr = new XMLHttpRequest(); + xhr.open("POST", "/api/"); + xhr.setRequestHeader("Content-Type", "application/json"); + xhr.send(JSON.stringify({ + "jsonrpc": "2.0", + "method": "SetValue", + "params": [' . $this->GetIDForIdent("AmountIsReserved") . ', false], + "id": 0 + })); + xhr.onload = function() { + if (xhr.status === 200) { + console.log("Abzug erfolgreich."); + } else { + console.log("Abzug fehlgeschlagen."); + } + }; + } + + +