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."); + } + }; + } + + + '; - public function GetAmount($amount) - { - IPS_LogMessage("Belevo_Bezahl_Modul", "GetAmount: amount=$amount"); - - // Beispiel-Logik zum Abziehen des Betrags bei Stripe - $apiUrl = "https://api.stripe.com/v1/charges"; - $apiKey = "pk_test_51Qkr79LJAcsNrpivA90lt7ULEzyXKR8l0pAqTBgfeuAIWlsLS4A3BdIBITc9UooFANbImvlJQ2F2jOZ0X5j8GI7Q00hNNasvQm"; // Test-API-Schlüssel - - $data = [ - "amount" => $amount * 100, // Betrag in Cent - "currency" => "CHF", // Ersetze dies durch die gewünschte Währung - "source" => "tok_visa" // Beispiel: Test-Token von Stripe - ]; - - $options = [ - 'http' => [ - 'header' => "Content-type: application/x-www-form-urlencoded\r\nAuthorization: Bearer $apiKey\r\n", - 'method' => 'POST', - 'content' => http_build_query($data), - ], - ]; - - $context = stream_context_create($options); - $result = file_get_contents($apiUrl, false, $context); - - if ($result === FALSE) { - IPS_LogMessage("Belevo_Bezahl_Modul", "Abzug fehlgeschlagen."); - } else { - $response = json_decode($result, true); - if (isset($response['id'])) { - SetValueBoolean($this->ReadPropertyInteger("Reservate"), false); - SetValueBoolean($this->GetIDForIdent("AmountIsReserved"), false); - SetValueBoolean($this->ReadPropertyInteger("GetAmount"), false); - IPS_LogMessage("Belevo_Bezahl_Modul", "Abzug erfolgreich."); - } else { - IPS_LogMessage("Belevo_Bezahl_Modul", "Abzug fehlgeschlagen: " . $response['error']['message']); - } - } + SetValue($this->GetIDForIdent("HTMLContent"), $html); // Baut das HTML auf } } ?> \ No newline at end of file diff --git a/library.json b/library.json index 3865656..eb3a6e7 100644 --- a/library.json +++ b/library.json @@ -6,7 +6,7 @@ "compatibility": { "version": "7.1" }, - "version": "1.011", + "version": "1.012", "build": 0, "date": 0 } \ No newline at end of file