Skip to content

Instantly share code, notes, and snippets.

@ajtransak
Created August 29, 2024 10:09
Show Gist options
  • Save ajtransak/6a890129006053c4f60bd8ea843eca07 to your computer and use it in GitHub Desktop.
Save ajtransak/6a890129006053c4f60bd8ea843eca07 to your computer and use it in GitHub Desktop.
Webhook Maven Decryption
package com.transak.webhookjavamaven;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import javax.crypto.SecretKey;
@SpringBootApplication
public class WebhookJavaMavenApplication {
public static void main(String[] args) {
String secret = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBUElfS0VZIjoiMmM0M2RiMzktOTRkYi00MDE4LThhZDItNjhiZmRhNWJiYjg3IiwiaWF0IjoxNzAxMDY4NjY0fQ.SbaFw6Q06xOrc9qbzRi6r2HvxunYK1nKyxz_Stax7VE";
String jwt = "eyJhbGciOiJIUzI1NiJ9.eyJ3ZWJob29rRGF0YSI6eyJpZCI6Ijg0YjhlYjU0LTY1MjYtNGQwNC05ZGRiLTBhNTQxNzc2YjAzOCIsIndhbGxldEFkZHJlc3MiOiIweDU1NjViMmE0NGQ4QTUyZkY2YjM0NDdlOUZhQTg1NjFENWM1MDZCMTAiLCJjcmVhdGVkQXQiOiIyMDI0LTA4LTI4VDA5OjI4OjQ2Ljc2OVoiLCJzdGF0dXMiOiJBV0FJVElOR19QQVlNRU5UX0ZST01fVVNFUiIsImZpYXRDdXJyZW5jeSI6IkdCUCIsInVzZXJJZCI6ImMyMDgwZTJlLWYwMDMtNGJlYS04NjVjLTAyNTZiYzVkNWEwYSIsImNyeXB0b0N1cnJlbmN5IjoiRVRIIiwiaXNCdXlPclNlbGwiOiJCVVkiLCJmaWF0QW1vdW50Ijo0MCwiaXBBZGRyZXNzIjoiMzUuMTc3LjE1OC45IiwiYW1vdW50UGFpZCI6MCwicGF5bWVudE9wdGlvbklkIjoiZ2JwX2JhbmtfdHJhbnNmZXIiLCJ3YWxsZXRMaW5rIjoiaHR0cHM6Ly9zZXBvbGlhLmV0aGVyc2Nhbi5pby9hZGRyZXNzLzB4NTU2NWIyYTQ0ZDhBNTJmRjZiMzQ0N2U5RmFBODU2MUQ1YzUwNkIxMCIsInF1b3RlSWQiOiI4OGYwNTI4NS1kYjBiLTQyZjctYTUyYy05MWYxMWEyMjI5NmQiLCJvcmRlclByb2Nlc3NpbmdUeXBlIjoiTk9STUFMIiwiYWRkcmVzc0FkZGl0aW9uYWxEYXRhIjpmYWxzZSwibmV0d29yayI6ImV0aGVyZXVtIiwiY29udmVyc2lvblByaWNlIjowLjAwMDUxODUxMjQxNjc2NTQ1NzcsImNyeXB0b0Ftb3VudCI6MC4wMTkxMTc1NSwidG90YWxGZWVJbkZpYXQiOjMuMTMsImZpYXRBbW91bnRJblVzZCI6NTIuOTIsImNvdW50cnlDb2RlIjoiSU4iLCJzdGF0ZUNvZGUiOiJqc2J4Iiwib3JkZXJDaGFubmVsVHlwZSI6IldJREdFVCIsInVzZXJLeWNUeXBlIjoiU1RBTkRBUkQiLCJjYXJkUGF5bWVudERhdGEiOnsib3JkZXJJZCI6Ijg0YjhlYjU0LTY1MjYtNGQwNC05ZGRiLTBhNTQxNzc2YjAzOCIsInBheW1lbnRJZCI6IjY2Y2VlZGNmNTljMTNjNDM1OTRlZjliYyIsInBnRGF0YSI6eyJwYXltZW50T3B0aW9ucyI6W3siY3VycmVuY3kiOiJHQlAiLCJpZCI6ImdicF9iYW5rX3RyYW5zZmVyIiwibmFtZSI6IkJhbmsgVHJhbnNmZXIgRGV0YWlscyIsImZpZWxkcyI6W3sibmFtZSI6IkJhbmsgTmFtZSIsInZhbHVlIjoiVHJhbnNhayBMaW1pdGVkIn0seyJuYW1lIjoiQWNjb3VudCBOdW1iZXIiLCJ2YWx1ZSI6IjA0MDExNTQ0In0seyJuYW1lIjoiU29ydCBDb2RlIiwidmFsdWUiOiIwMDAwMDAifSx7Im5hbWUiOiJCYW5rIE5hbWUiLCJ2YWx1ZSI6Ik1vZHVsciJ9LHsibmFtZSI6IkJhbmsgQWRkcmVzcyIsInZhbHVlIjoiU2NhbGUgU3BhY2UsIDU4IFdvb2QgTGFuZSwgTG9uZG9uLCBXMTIgN1JaIn1dfV0sImxpcXVpZGl0eVByb3ZpZGVyIjoiTU9EVUxSIiwic3RhdHVzIjoiQ1JFQVRFRCJ9LCJsaXF1aWRpdHlQcm92aWRlciI6Ik1PRFVMUiIsInVwZGF0ZWRBdCI6IjIwMjQtMDgtMjhUMDk6Mjg6NDcuOTAzWiJ9LCJjb252ZXJzaW9uUHJpY2VEYXRhIjp7Il9pZCI6IjViOGU5ZDY0LTJlMTctNGQzNC1hMTM1LTVhMjY5ZmY3ZWNmMCIsImlkIjoiNWI4ZTlkNjQtMmUxNy00ZDM0LWExMzUtNWEyNjlmZjdlY2YwIiwiY3JlYXRlZEF0IjoiMjAyNC0wOC0yOFQwOToyODo0Ni42NjBaIiwiZmlhdEN1cnJlbmN5IjoiR0JQIiwiY3J5cHRvQ3VycmVuY3kiOiJFVEgiLCJwYXltZW50TWV0aG9kIjoiZ2JwX2JhbmtfdHJhbnNmZXIiLCJmaWF0QW1vdW50Ijo0MCwibmV0d29yayI6ImV0aGVyZXVtIiwiY3J5cHRvQW1vdW50IjowLjAxOTExNzU1LCJpc0J1eU9yU2VsbCI6IkJVWSIsImNvbnZlcnNpb25QcmljZSI6MC4wMDA1MTg1MTI0MTY3NjU0NTc3LCJtYXJrZXRDb252ZXJzaW9uUHJpY2UiOjAuMDAwNTM0NTk2OTkyNjYyODUyMSwic2xpcHBhZ2UiOjMuMDEsImNyeXB0b0xpcXVpZGl0eVByb3ZpZGVyIjoidHJhbnNhayIsImZpYXRMaXF1aWRpdHlQcm92aWRlciI6ImNvaW5iYXNlIiwicGFydG5lckFwaUtleSI6IjJjNDNkYjM5LTk0ZGItNDAxOC04YWQyLTY4YmZkYTViYmI4NyIsInNvdXJjZVRva2VuQW1vdW50IjowLjAxOTExNzU1MjgwNjE0MjQyMywic291cmNlVG9rZW4iOiJFVEgiLCJub3RlcyI6W10sImZpYXRGZWVBbW91bnQiOjMuMTMsImZlZURlY2ltYWwiOjAuMDc4MjUsInN3YXBzIjpbeyJzb3VyY2VDdXJyZW5jeSI6IkdCUCIsImRlc3RpbmF0aW9uQ3VycmVuY3kiOiJVU0RUIiwic291cmNlQW1vdW50Ijo0MCwiZGVzdGluYXRpb25BbW91bnQiOjUyLjkxNjQ5MDY5MTExMywicGF5bWVudE1ldGhvZCI6ImdicF9iYW5rX3RyYW5zZmVyIiwibGlxdWlkaXR5UHJvdmlkZXIiOiJjb2luYmFzZSIsImNvbnZlcnNpb25QcmljZSI6MS4zMjI5MTIyNjcyNzc4MjQ4LCJmZWVJblNvdXJjZUFtb3VudCI6MCwibmV0d29ya0ZlZUluU291cmNlQW1vdW50IjowLCJtYXJrZXRDb252ZXJzaW9uUHJpY2UiOjEuMzIyOTEyMjY3Mjc3ODI0OCwiaXNOb25DdXN0b2RpYWwiOmZhbHNlLCJpc0ZpYXRsaXF1aWRpdHlQcm92aWRlciI6dHJ1ZSwiaXNGaWF0UGFydG5lckRpcmVjdENyeXB0b0RlcG9zaXQiOmZhbHNlLCJpc0ZpYXRQYXJ0bmVyQWNjb3VudFdhbGxldERlcG9zaXQiOmZhbHNlLCJsaXF1aWRpdHlQcm92aWRlckRhdGEiOmZhbHNlLCJvcmlnaW5hbERlc3RpbmF0aW9uQW1vdW50Ijo1Mi45MTY0OTA2OTExMTN9LHsic291cmNlQ3VycmVuY3kiOiJVU0RUIiwiZGVzdGluYXRpb25DdXJyZW5jeSI6IkVUSCIsInNvdXJjZUFtb3VudCI6NTIuOTE2NDkwNjkxMTEzLCJkZXN0aW5hdGlvbkFtb3VudCI6MC4wMjA3NDA0OTY2NzA2MTgzMDgsImxpcXVpZGl0eVByb3ZpZGVyIjoidHJhbnNhayIsImNvbnZlcnNpb25QcmljZSI6MC4wMDAzOTE5NDc2OTcyMDYyNjE0NCwibmV0d29ya0ZlZUluU291cmNlQW1vdW50IjowLCJuZXR3b3JrRmVlSW5EZXN0aW5hdGlvbkFtb3VudCI6MCwibWFya2V0Q29udmVyc2lvblByaWNlIjowLjAwMDM5MTk0NzY5NzIwNjI2MTQ0LCJsaXF1aWRpdHlQcm92aWRlckRhdGEiOmZhbHNlLCJpc05vbkN1c3RvZGlhbCI6ZmFsc2V9LHsic291cmNlQ3VycmVuY3kiOiJFVEgiLCJkZXN0aW5hdGlvbkN1cnJlbmN5IjoiRVRIIiwic291cmNlQW1vdW50IjowLjAyMDc0MDQ5NjY3MDYxODMwOCwiZGVzdGluYXRpb25BbW91bnQiOjAuMDIwNzQwNDk2NjcwNjE4MzA4LCJsaXF1aWRpdHlQcm92aWRlciI6InRyYW5zYWsiLCJjb252ZXJzaW9uUHJpY2UiOjEsImlzQ3J5cHRvbGlxdWlkaXR5UHJvdmlkZXIiOnRydWUsIm5ldHdvcmtGZWVJblNvdXJjZUFtb3VudCI6MC4wMDAwNjU5NiwibmV0d29ya0ZlZUluRGVzdGluYXRpb25BbW91bnQiOjAuMDAwMDY1OTYsIm1hcmtldENvbnZlcnNpb25QcmljZSI6MSwibGlxdWlkaXR5UHJvdmlkZXJEYXRhIjpmYWxzZSwiaXNGaWF0UGFydG5lckFjY291bnRXYWxsZXREZXBvc2l0IjpmYWxzZX1dLCJmZWVzIjpbeyJuYW1lIjoiVHJhbnNha0xlZ2VuZDEwMDcyMDI0IGZlZSIsInZhbHVlIjoyLCJpZCI6InBhcnRuZXJfZmVlIiwiaWRzIjpbInBhcnRuZXJfZmVlIl19LHsibmFtZSI6IlRyYW5zYWsgZmVlIiwidmFsdWUiOjEsImlkIjoidHJhbnNha19mZWUiLCJpZHMiOlsidHJhbnNha19mZWUiXX0seyJuYW1lIjoiTmV0d29yay9FeGNoYW5nZSBmZWUiLCJ2YWx1ZSI6MC4xMywiaWQiOiJuZXR3b3JrX2ZlZSIsImlkcyI6WyJuZXR3b3JrX2ZlZSJdfV0sImZpYXRBbW91bnRJblVzZCI6NTIuOTIsImludGVybmFsRmVlcyI6W3sibmFtZSI6Ik5ldHdvcmsvRXhjaGFuZ2UgZmVlIiwiaWQiOiJuZXR3b3JrX2ZlZSIsInZhbHVlIjowLjEzfSx7Im5hbWUiOiJUcmFuc2FrIGZlZSIsImlkIjoidHJhbnNha19mZWUiLCJ2YWx1ZSI6MX0seyJuYW1lIjoiVHJhbnNha0xlZ2VuZDEwMDcyMDI0IGZlZSIsImlkIjoicGFydG5lcl9mZWUiLCJ2YWx1ZSI6Mn1dLCJjb3N0Ijp7ImV0aFByaWNlSW5Mb2NhbEN1cnJlbmN5IjoxODcwLjU2Nzk0ODgsImdhc0Nvc3RpbkxvY2FsQ3VycmVuY3kiOjAuMTI3MTk4NjIwNTE4NCwidHJhbnNha01pbmltdW1GZWUiOjEsInRyYW5zYWtGZWVBbW91bnQiOjEsImZpYXRMaXF1aWRpdHlQcm92aWRlckZlZSI6MCwiZ2FzQ29zdGluTG9jYWxDdXJyZW5jeUJ5RmlhdFBhcnRuZXIiOjAsImdhc0Nvc3RpbkxvY2FsQ3VycmVuY3lCeUNyeXB0b1BhcnRuZXIiOjAsInBhcnRuZXJGZWVEZWNpbWFsIjowLjA1LCJwYXJ0bmVyRmVlSW5Mb2NhbEN1cnJlbmN5IjoyLCJ0b3RhbEZlZURlY2ltYWwiOjAuMDc4MjUsInRvdGFsRmVlQW1vdW50IjozLjEzLCJnYXNDdXJyZW5jeSI6IkVUSCIsImdhc0luTmF0aXZlVG9rZW4iOjAuMDAwMDY4LCJnYXNDdXJyZW5jeVJhdGVJblVzZCI6MC4wMDA0MDQwNjk3OTA5MzQyOTAxMywidG90YWxBbW91bnRDaGFyZ2VkQnlUcmFuc2FrIjozLjEyNzE5ODYyMDUxODR9fSwicGFydG5lckZlZUluTG9jYWxDdXJyZW5jeSI6Miwic3RhdHVzSGlzdG9yaWVzIjpbXX0sImV2ZW50SUQiOiJPUkRFUl9DUkVBVEVEIiwiY3JlYXRlZEF0IjoiMjAyNC0wOC0yOFQwOToyODo0OC4wOTZaIn0.xMR-NawkaGMQHVR1eXBHy1KRoa-ojx1zINAgtwTiAHY";
// Decode the secret
SecretKey key = Keys.hmacShaKeyFor(secret.getBytes());
// Parse the JWT
Claims claims = Jwts.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(jwt)
.getBody();
// Output the claims
System.out.println("Claims: " + claims);
SpringApplication.run(WebhookJavaMavenApplication.class, args);
}
}
@ajtransak
Copy link
Author

Response:

Claims: {webhookData={id=84b8eb54-6526-4d04-9ddb-0a541776b038, walletAddress=0x5565b2a44d8A52fF6b3447e9FaA8561D5c506B10, createdAt=2024-08-28T09:28:46.769Z, status=AWAITING_PAYMENT_FROM_USER, fiatCurrency=GBP, userId=c2080e2e-f003-4bea-865c-0256bc5d5a0a, cryptoCurrency=ETH, isBuyOrSell=BUY, fiatAmount=40, ipAddress=35.177.158.9, amountPaid=0, paymentOptionId=gbp_bank_transfer, walletLink=https://sepolia.etherscan.io/address/0x5565b2a44d8A52fF6b3447e9FaA8561D5c506B10, quoteId=88f05285-db0b-42f7-a52c-91f11a22296d, orderProcessingType=NORMAL, addressAdditionalData=false, network=ethereum, conversionPrice=5.185124167654577E-4, cryptoAmount=0.01911755, totalFeeInFiat=3.13, fiatAmountInUsd=52.92, countryCode=IN, stateCode=jsbx, orderChannelType=WIDGET, userKycType=STANDARD, cardPaymentData={orderId=84b8eb54-6526-4d04-9ddb-0a541776b038, paymentId=66ceedcf59c13c43594ef9bc, pgData={paymentOptions=[{currency=GBP, id=gbp_bank_transfer, name=Bank Transfer Details, fields=[{name=Bank Name, value=Transak Limited}, {name=Account Number, value=04011544}, {name=Sort Code, value=000000}, {name=Bank Name, value=Modulr}, {name=Bank Address, value=Scale Space, 58 Wood Lane, London, W12 7RZ}]}], liquidityProvider=MODULR, status=CREATED}, liquidityProvider=MODULR, updatedAt=2024-08-28T09:28:47.903Z}, conversionPriceData={_id=5b8e9d64-2e17-4d34-a135-5a269ff7ecf0, id=5b8e9d64-2e17-4d34-a135-5a269ff7ecf0, createdAt=2024-08-28T09:28:46.660Z, fiatCurrency=GBP, cryptoCurrency=ETH, paymentMethod=gbp_bank_transfer, fiatAmount=40, network=ethereum, cryptoAmount=0.01911755, isBuyOrSell=BUY, conversionPrice=5.185124167654577E-4, marketConversionPrice=5.345969926628521E-4, slippage=3.01, cryptoLiquidityProvider=transak, fiatLiquidityProvider=coinbase, partnerApiKey=2c43db39-94db-4018-8ad2-68bfda5bbb87, sourceTokenAmount=0.019117552806142423, sourceToken=ETH, notes=[], fiatFeeAmount=3.13, feeDecimal=0.07825, swaps=[{sourceCurrency=GBP, destinationCurrency=USDT, sourceAmount=40, destinationAmount=52.916490691113, paymentMethod=gbp_bank_transfer, liquidityProvider=coinbase, conversionPrice=1.3229122672778248, feeInSourceAmount=0, networkFeeInSourceAmount=0, marketConversionPrice=1.3229122672778248, isNonCustodial=false, isFiatliquidityProvider=true, isFiatPartnerDirectCryptoDeposit=false, isFiatPartnerAccountWalletDeposit=false, liquidityProviderData=false, originalDestinationAmount=52.916490691113}, {sourceCurrency=USDT, destinationCurrency=ETH, sourceAmount=52.916490691113, destinationAmount=0.020740496670618308, liquidityProvider=transak, conversionPrice=3.9194769720626144E-4, networkFeeInSourceAmount=0, networkFeeInDestinationAmount=0, marketConversionPrice=3.9194769720626144E-4, liquidityProviderData=false, isNonCustodial=false}, {sourceCurrency=ETH, destinationCurrency=ETH, sourceAmount=0.020740496670618308, destinationAmount=0.020740496670618308, liquidityProvider=transak, conversionPrice=1, isCryptoliquidityProvider=true, networkFeeInSourceAmount=6.596E-5, networkFeeInDestinationAmount=6.596E-5, marketConversionPrice=1, liquidityProviderData=false, isFiatPartnerAccountWalletDeposit=false}], fees=[{name=TransakLegend10072024 fee, value=2, id=partner_fee, ids=[partner_fee]}, {name=Transak fee, value=1, id=transak_fee, ids=[transak_fee]}, {name=Network/Exchange fee, value=0.13, id=network_fee, ids=[network_fee]}], fiatAmountInUsd=52.92, internalFees=[{name=Network/Exchange fee, id=network_fee, value=0.13}, {name=Transak fee, id=transak_fee, value=1}, {name=TransakLegend10072024 fee, id=partner_fee, value=2}], cost={ethPriceInLocalCurrency=1870.5679488, gasCostinLocalCurrency=0.1271986205184, transakMinimumFee=1, transakFeeAmount=1, fiatLiquidityProviderFee=0, gasCostinLocalCurrencyByFiatPartner=0, gasCostinLocalCurrencyByCryptoPartner=0, partnerFeeDecimal=0.05, partnerFeeInLocalCurrency=2, totalFeeDecimal=0.07825, totalFeeAmount=3.13, gasCurrency=ETH, gasInNativeToken=6.8E-5, gasCurrencyRateInUsd=4.0406979093429013E-4, totalAmountChargedByTransak=3.1271986205184}}, partnerFeeInLocalCurrency=2, statusHistories=[]}, eventID=ORDER_CREATED, createdAt=2024-08-28T09:28:48.096Z}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment