/// <inheritdoc />
        public async Task <bool> VerifyPaymentAsync(IAgentContext context, PaymentRecord paymentRecord)
        {
            if (paymentRecord.State != PaymentState.Paid && paymentRecord.State != PaymentState.ReceiptReceived)
            {
                throw new AriesFrameworkException(ErrorCode.RecordInInvalidState,
                                                  "Payment record must be in state Paid or ReceiptReceived to verify it");
            }

            var req = await IndyPayments.BuildVerifyPaymentRequestAsync(context.Wallet, null, paymentRecord.ReceiptId);

            var res = await IndyLedger.SubmitRequestAsync(await context.Pool, req.Result);

            var resParsed = JObject.Parse(await IndyPayments.ParseVerifyPaymentResponseAsync("sov", res));
            var receipts  = resParsed["receipts"].ToObject <IList <IndyPaymentOutputSource> >()
                            .Where(x => x.Recipient == paymentRecord.Address)
                            .ToList();

            if (receipts.Any() && receipts.Select(x => x.Amount).Aggregate((x, y) => x + y) == paymentRecord.Amount)
            {
                return(true);
            }
            return(false);
        }