/// <summary>
        ///  Adds a ApplePay request .
        /// </summary>
        /// <param name="appePayRequest"></param>
        /// <returns></returns>
        public MessageBuilder WithApplePay(ApplePayRequest applePayRequest)
        {
            if (this._richContent == null)
            {
                this._richContent = new RichContent();
            }

            this._richContent.AddConversationPart(applePayRequest);
            return(this);
        }
        static void Main(string[] args)
        {
            var encryptedToken = JsonConvert.DeserializeObject <ApplePaymentToken>(File.ReadAllText(paymentToken));

            var aRequest = new ApplePayRequest()
            {
                ApplePayHeader = new ApplePayHeader()
                {
                    TransactionId      = encryptedToken.paymentData.header.transactionId,
                    EphemeralPublicKey = encryptedToken.paymentData.header.ephemeralPublicKey,
                    PublicKeyHash      = encryptedToken.paymentData.header.publicKeyHash,
                },
                Data            = encryptedToken.paymentData.data,
                PrivateKeyBytes = File.ReadAllBytes(privateKey),
                ApplePayP12Path = p12FileLocation
            };

            var aPay          = new ApplePayDecrypter.ApplePayDecrypt(aRequest);
            var result        = aPay.Decrypt();
            var decryptedData = JsonConvert.DeserializeObject <AppleDecryptedPayment>(result);

            Console.WriteLine(result);
            Console.ReadLine();
        }
 public ApplePayDecrypt(ApplePayRequest applePayRequest)
 {
     this.applePayRequest = applePayRequest;
     symmetricIv          = Hex.Decode("00000000000000000000000000000000");
 }