Seeing that TTN was able to map the device to your application implies it has checked the MIC, so the DevAddr and NwkSKey are okay. The MIC is calculated for the encrypted payload, so TTN won’t notice if you’re using the wrong AppSKey in your device, but then you’d simply see random data after decrypting. So all fine as for the keys.
However, an online decoder shows that you’re sending on port 0. That’s not good; the LoRaWAN specifications state:
If present, an
FPort
value of 0 indicates that the FRMPayload contains MAC commands only
So: use a different value.
I’ve changed my dummy decoder that you found to support empty data, but it’s probably not even invoked when the port is 0.
(As an aside: never send text, and never ever send JSON text. But that is unrelated to your problem. Also, LoRaWAN does not convert anything to Base64; that’s the gateway doing that before sending it to TTN in a JSON message with additional metadata, and TTN might also display bytes in Base64 to get something that is always human readable.)