View difference between Paste ID: 0ZkpcfcX and v84Q9wC1
SHOW: | | - or go back to the newest paste.
1-
-- BANCOMAT V2 aggiornato 2025 copyright lego11
1+
--pagamento bollette v2 lego11
2-
local tabr = {}
2+
3
--VARIABILI
4-
function clear()
4+
 lbl = "BN Credit"
5-
    term.clear()
5+
 tabr = {}
6-
    term.setCursorPos(1, 1)
6+
m = peripheral.wrap("right") --magcard
7
printer = peripheral.wrap("back") --stampante
8
cb = peripheral.wrap("bottom") -- commandblock
9
10-
    clear()
10+
function clear() 
11-
    print("Errore di verifica del PIN")
11+
term.clear()
12-
    print("")
12+
term.setCursorPos(1,1)
13-
    print("Premere un tasto per uscire")
13+
14-
    os.pullEvent("key")
14+
15-
    os.reboot()
15+
16
clear()
17
print("Errore di verifica del PIN")
18
print("")
19-
    clear()
19+
print("Premere un tasto per uscire")
20-
    print("Carta non valida o corrotta.")
20+
os.pullEvent("key")
21-
    print("")
21+
22-
    print("Premere un tasto per uscire")
22+
print("Ritirare il Disco Bolletta Elettronico")
23-
    os.pullEvent("key")
23+
disk.eject("left")
24-
    os.reboot()
24+
sleep(1)
25
os.reboot()
26
end
27
28-
    clear()
28+
29-
    print("Carta smagnetizzata o vuota.")
29+
30-
    print("")
30+
31-
    print("Premere un tasto per uscire")
31+
print("Carta non valida o corrotta.")
32-
    os.pullEvent("key")
32+
33-
    os.reboot()
33+
print("Premere un tasto per uscire")
34
os.pullEvent("key")
35
print("")
36-
function cartaNoSIB()
36+
print("Ritirare il Disco Bolletta Elettronico")
37-
    clear()
37+
disk.eject("left")
38-
    print("Carta non in sistema interbancario.")
38+
sleep(1)
39-
    print("")
39+
40-
    print("Premere un tasto per uscire")
40+
41-
    os.pullEvent("key")
41+
42-
    os.reboot()
42+
43
clear()
44
print("Carta smagnetizzata o vuota.")
45-
function sibFail()
45+
46-
    clear()
46+
print("Premere un tasto per uscire")
47-
    print("Errore connessione sistema interbancario")
47+
os.pullEvent("key")
48-
    print("")
48+
49-
    print("Premere un tasto per uscire")
49+
print("Ritirare il Disco Bolletta Elettronico")
50-
    os.pullEvent("key")
50+
disk.eject("left")
51-
    os.reboot()
51+
sleep(1)
52
os.reboot()
53
end
54-
function cartaVecchia()
54+
55-
    clear()
55+
function preleva()
56-
    print("CARTA NON SICURA. Convertire la carta presso lo sportello situato in:\n")
56+
tabr.t = tabc.t
57-
    print("\n Banco di Nebraska - P.zza Affari 3, New Radeon")
57+
tabr.e = tabc.e
58-
    print("")
58+
tabr.p = tabc.p
59-
    print("Premere un tasto per uscire")
59+
tabr.v = tostring(credito - prelievo)
60-
    os.pullEvent("key")
60+
ncr = textutils.serialize(tabr)
61-
    os.reboot()
61+
62
m.beginWrite(ncr,lbl)
63
os.pullEvent("mag_write_done")
64-
function preleva(prelievo, uuid)
64+
65-
    clear()
65+
66-
    erogati = 0
66+
67-
    sibRaw = http.get("http://luanet.rgbcraft.com/servlets/carte_debito.php?richiesta=addebito&valore=" .. prelievo ..
67+
s = peripheral.wrap("back") 
68-
                          "&uuid=" .. uuid).readAll()
68+
m = peripheral.wrap("right") 
69-
    sib = textutils.unserialize(sibRaw)
69+
70
71-
    if type(sib) ~= "table" then
71+
function tocerror()
72-
        print("\n\n\nImpossibile comunicare con il server interbancario")
72+
73-
        sleep(5)
73+
print("TOC ERROR")
74-
        os.reboot()
74+
75-
    end
75+
print("Disco errato o danneggiato. Controllare il disco e ritentare l'operazione")
76
print("")
77-
    if sib.stato == "DI" then
77+
print("Premere un tasto qualsiasi per uscire.")
78-
        print("Disponibilità insufficiente")
78+
os.pullEvent("key")
79-
        sleep(5)
79+
disk.eject("left")
80-
    elseif sib.stato ~= "OK" then
80+
81-
        print(
81+
82-
            "\n\n\nLa carta non risulta nel sistema interbancario, potrebbe essere stata disabilitata per uso fraudolento")
82+
83-
        sleep(5)
83+
84-
        os.reboot()
84+
print("eRGB - Sistema Pagamento Bollette")
85-
    else
85+
86-
        print("Ritirare il denaro")
86+
print("Inserire il Disco Bolletta Elettronica nel lettore floppy a sinistra")
87-
        print("")
87+
88-
        for i = prelievo, 1, -64 do
88+
print("IMPORTANTE:")
89-
            redstone.setOutput("bottom", true)
89+
print("NON estrarre il disco manualmente dal lettore!")
90-
            sleep(0.25)
90+
print("Verrà riciclato o espulso automaticamente!")
91-
            erogati = erogati + 64
91+
os.pullEvent("disk")
92-
            print("Erogati " .. erogati .. " IC")
92+
etichetta = disk.getLabel("left")
93-
            redstone.setOutput("bottom", false)
93+
if etichetta ~= "DBE" then
94-
        end
94+
tocerror()
95-
        print("")
95+
96-
        term.setBackgroundColor(colors.white)
96+
 handle = assert(fs.open("disk/be", "r"), "ERRORE: disco non formattato")
97-
        term.setTextColor(colors.black)
97+
 bedisco = handle.readAll()
98-
        clear()
98+
handle.close()
99-
        print("Prelievo effettuato\n")
99+
 tab = textutils.unserialize(bedisco) -- Tabella contenente le variabili
100-
        print("Tra poco sarà possibile eseguire un'altra operazione.")
100+
 prelievo = tonumber(tab.totale)
101
102-
        term.setTextColor(colors.white)
102+
103
print("Inserire la carta di credito nel lettore a destra")
104-
        shell.run("pastebin get v84Q9wC1 startup2") -- Inserire paste di nPay
104+
105-
        if fs.exists("startup2") then
105+
za,rawcarta = os.pullEvent("mag_swipe")
106-
            shell.run("rm startup")
106+
107-
            shell.run("mv startup2 startup")
107+
108-
        end
108+
109-
    end
109+
cartaVuota()
110
end
111
112-
m = peripheral.wrap("right")
112+
tabc = textutils.unserialize(rawcarta)
113
114
if type(tabc) ~= "table" then
115
cartaNonValida()
116-
print("Banco di NEBRASKA - Sistema BANCOMAT(R)")
116+
117
118-
print("Inserire la carta")
118+
if tabc.t ~= "cc" then
119
cartaNonValida()
120-
za, rawcarta = os.pullEvent("mag_swipe")
120+
121
122
if tabc.e ~= "BN" then 
123
cartaNonValida()
124-
    cartaVuota()
124+
125
126
if tabc.p ~= "0000" then
127-
tab = textutils.unserialize(rawcarta)
127+
128
print("Inserire il PIN e premere ENTER")
129-
if type(tab) ~= "table" then
129+
130-
    cartaNonValida()
130+
 pinUtente = read("#")
131
if pinUtente ~= tabc.p then
132
pinErrato()
133-
if tab.t == "cc" then
133+
134-
    cartaVecchia()
134+
135
136
credito = tonumber(tabc.v)
137-
if tab.t ~= "cd" then
137+
138-
    cartaNonValida()
138+
139
140
while true do
141-
if tab.e ~= "BN" then
141+
print("La carta ha una disponibilità di "..credito.." IC.")
142-
    cartaNonValida()
142+
143
print("Bolletta del "..tab.date.." intestata a "..tab.UICnumber.." ")
144
print("")
145-
sibRaw = http.get("http://luanet.rgbcraft.com/servlets/carte_debito.php?richiesta=verifica&uuid=" .. tab.v).readAll()
145+
print("Totale da pagare: "..prelievo.." IC")
146-
sib = textutils.unserialize(sibRaw)
146+
147
print("")
148-
if type(sib) ~= "table" then
148+
print("Per favore scegliere un'opzione utilizzando i tasti numerici e confermare con ENTER:")
149-
    sibFail()
149+
150
print("[1] Pagare la bolletta SENZA ricevuta")
151-
if sib.stato ~= "OK" then
151+
print("[2] Pagare la bolletta CON ricevuta")
152-
    cartaNoSIB()
152+
print("[3] Esci senza pagare la bolletta")
153
num=tonumber(read())
154
if num == 1 then
155-
credito = tonumber(sib.saldo)
155+
if prelievo > credito then
156-
carta = string.sub(tostring(tab.v), -4)
156+
157
print("Disponibilità insufficiente")
158
print("")
159
print("Bolletta NON PAGATA.")
160
print("Riprovare con un'altra carta di credito.")
161-
    print("La carta *" .. carta .. " ha una disponibilità di " .. credito .. " IC.")
161+
162-
    print("")
162+
print("Premere un tasto qualsiasi per uscire")
163-
    print("Per favore scegliere un'opzione utilizzando i tasti numerici e confermare con ENTER:")
163+
os.pullEvent("key")
164-
    print("")
164+
disk.eject("left")
165-
    print("[1] Preleva   64 IC")
165+
print("Ritirare il Disco Bolletta Elettronica")
166-
    print("[2] Preleva  128 IC")
166+
sleep(5)
167-
    print("[3] Preleva  256 IC")
167+
168-
    print("[4] Preleva  512 IC")
168+
169-
    print("[5] Preleva 4096 IC")
169+
170-
    print("[6] Esci senza prelevare")
170+
print("Inserire nuovamente la carta per confermare il prelievo")
171-
    num = tonumber(read())
171+
preleva()
172-
    if num == 1 then
172+
173-
        preleva(64, tab.v)
173+
print("Attendere, autorizzazione pagamento in corso...")
174-
        break
174+
redstone.setOutput("top", true)
175-
    elseif num == 2 then
175+
sleep(5)
176-
        preleva(128, tab.v)
176+
redstone.setOutput("top", false)
177-
        break
177+
178-
    elseif num == 3 then
178+
print("Pagamento effettuato correttamente!")
179-
        preleva(256, tab.v)
179+
180-
        break
180+
print("La bolletta è stata registrata come 'pagata'")
181-
    elseif num == 4 then
181+
 mailsend = "mail send lego11 Bolletta PAGATA: "
182-
        preleva(512, tab.v)
182+
cb.setCommand(mailsend..tab.UICnumber)
183-
        break
183+
cb.runCommand()
184-
    elseif num == 5 then
184+
print("Grazie e arrivederci!")
185-
        preleva(4096, tab.v)
185+
186-
        break
186+
187-
    elseif num == 6 then
187+
sleep(5)
188-
        clear()
188+
189-
        break
189+
190-
    end
190+
elseif num == 2 then
191
if prelievo > credito then
192
clear()
193-
term.setBackgroundColor(colors.white)
193+
print("Disponibilità insufficiente")
194-
term.setTextColor(colors.black)
194+
195
print("Bolletta NON PAGATA.")
196
print("Riprovare con un'altra carta di credito.")
197
print("")
198-
term.setTextColor(colors.white)
198+
print("Premere un tasto qualsiasi per uscire")
199
os.pullEvent("key")
200-
shell.run("pastebin get v84Q9wC1 startup2") -- Inserire paste di nPay
200+
disk.eject("left")
201-
if fs.exists("startup2") then
201+
print("Ritirare il Disco Bolletta Elettronica")
202-
    shell.run("rm startup")
202+
sleep(5)
203-
    shell.run("mv startup2 startup")
203+
204
end
205
clear()
206
print("Inserire nuovamente la carta per confermare il prelievo")
207-
207+
preleva()
208
print("")
209
print("Attendere, autorizzazione pagamento in corso...")
210
redstone.setOutput("top", true)
211
sleep(3)
212
redstone.setOutput("top", false)
213
if printer.getPaperLevel() == 0 or printer.getInkLevel() == 0 then
214
 cartaInceppata = 0
215
print("")
216
print("Errore: Carta inceppata")
217
print("")
218
print("Impossibile stampare ricevuta. Il pagamento verrà comunque effettuato.")
219
print("")
220
else
221
print("Attendere, stampa in corso della ricevuta...")
222
printer.newPage()
223
printer.setPageTitle("Ricevuta eRGB")
224
printer.write("Ricevuta eRGB")
225
printer.setCursorPos(1, 2)
226
printer.setCursorPos(1, 4)
227
printer.write("La Bolletta del: ")
228
printer.setCursorPos(1, 6)
229
printer.write(tab.date)
230
printer.setCursorPos(1, 8)
231
printer.write("del cliente: ")
232
printer.setCursorPos(1, 10)
233
printer.write(tab.UICnumber)
234
printer.setCursorPos(1, 12)
235
printer.write("con un totale di:")
236
printer.setCursorPos(1, 14)
237
printer.write(prelievo)
238
printer.setCursorPos(10,14)
239
printer.write("IC")
240
printer.setCursorPos(1, 16)
241
printer.write("e' stata pagata")
242
printer.setCursorPos(1, 17)
243
printer.write("correttamente.")
244
printer.setCursorPos(1, 19)
245
printer.write("Grazie per aver scelto")
246
printer.setCursorPos(1, 20)
247
printer.write("eRGB!")
248
printer.endPage()
249
sleep(2)
250
print("Stampa: 25%")
251
sleep(2)
252
print("Stampa: 50%")
253
sleep(2)
254
print("Stampa: 75%")
255
sleep(2)
256
print("Stampa: 100%")
257
sleep(2)
258
print("")
259
print("Ritirare la ricevuta")
260
print("")
261
end
262
print("Pagamento effettuato correttamente!")
263
print("")
264
print("La bolletta è stata registrata come 'pagata'")
265
 mailsend = "mail send lego11 Bolletta PAGATA: "
266
cb.setCommand(mailsend..tab.UICnumber)
267
if cartaInceppata == 0 then
268
cb.runCommand()
269
end
270
print("Grazie e arrivederci!")
271
print("")
272
print("Tra poco sarà possibile eseguire un'altra operazione.")
273
sleep(5)
274
os.reboot()
275
elseif num == 3 then clear() break end
276
sleep(1)
277
clear()
278
end
279
clear()
280
print("Uscita comandata dall'utente")
281
print("")
282
print("Bolletta NON PAGATA.")
283
print("")
284
disk.eject("left")
285
print("Ritirare il Disco Bolletta Elettronica")
286
sleep(5)
287
os.reboot()