Most likely the checksum is just that - a check to make sure that none of the parameters changed in transit. The simplest way to do something like that is with a SHA256 (or even) MD5 hash of the URL parameters. For something like this, even MD5 can be a reasonable choice for hashing algorithm (we're not talking passwords here). A hashing algorithm is used because if you change a single character you change the output hash, and (even with MD5) it can be difficult to find another set of inputs that will match the given output.
With a hash function you will absolutely get gibberish if you base64 decode the results. The hash function is effectively generating "random" bits of data, so there is a small chance of generating ASCII characters with the raw binary data itself. Instead you get gibberish. That's okay though, because the exact value of the hash doesn't matter - just that whoever takes the GET data on the other end and hashes it gets exactly the same hash as what was passed along in the request.
I'm not sure off the top of my head what hash function would generate a 28 character string when base64 encoded (MD5 generates 22 or 24 character strings). It could be a custom hash. It could be something else all together, but best guess is it is just the output of some kind of hashing algorithm.
when I decode it, gibberish characters come out?You can base64 arbitrary data. To represent, say, a md5 hash safely in a URL, you could display the bytes as ascii letters and numbers, but you could also base64-encode it. If you base64-decode the sequence to ascii, you may randomly get printable characters or not. – Arminius Oct 25 '18 at 15:59