예제 #1
0
        public async Task <string> GenerateSignature(EtnPayload payload)
        {
            if (string.IsNullOrEmpty(ApiSecret))
            {
                throw new VendorException("No vendor API secret set");
            }
            var json = JsonConvert.SerializeObject(payload);
            var sig  = HashHmac(json, ApiSecret);

            return(await Task.FromResult(sig));
        }
예제 #2
0
        /// <summary>
        /// Generate signature to validate with verify signature
        /// This is not used for payment, better for testing purposes
        /// </summary>
        /// <param name="customer"></param>
        /// <param name="amount"></param>
        /// <param name="currency"></param>
        /// <param name="reference"></param>
        /// <param name="paymentId"></param>
        /// <returns></returns>
        public async Task <string> GenerateSignature(string customer, decimal amount, string currency, string reference, string paymentId = null)
        {
            if (string.IsNullOrEmpty(ApiSecret))
            {
                throw new VendorException("No vendor API secret set");
            }
            var payload = new EtnPayload()
            {
                PaymentId = paymentId ?? GeneratePaymentId(),
                Customer  = customer,
                Amount    = await CurrencyToEtnAsync(amount, currency),
                Key       = ApiKey,
                Ref       = reference,
                TimeStamp = DateTime.Now
            };

            return(await GenerateSignature(payload));
        }
예제 #3
0
 public bool VerifySignature(EtnPayload payload, string signature)
 {
     return(VerifySignature(JsonConvert.SerializeObject(payload), signature));
 }
        public async Task <EtnPayload> ValidateEtnWebHookPayloadAsync(string userAgent, EtnPayload payload, string signature)
        {
            if (!userAgent.StartsWith("Electroneum"))
            {
                throw new VendorException("invalid useragent on webhook");
            }

            var isValid = _vendor.VerifySignature(payload, signature);

            if (!isValid)
            {
                throw new VendorException("invalid signature");
            }

            return(await Task.FromResult(payload));
        }