Skip to main content

IPaymentVerifier

Overview

The IPaymentVerifier interface contract verifies off-chain payment proofs. This enables on-chain actions (such as releasing escrowed funds) once a valid proof that a payment occurred is provided. Verifiers can be added to the Escrow which unlock new payment platforms and currencies that users can transact with

Structs

struct VerifyPaymentData {
bytes paymentProof; // Payment proof
address depositToken; // Address of deposit token
uint256 amount; // Amount of deposit token
uint256 timestamp; // Timestamp of payment
string payeeDetails; // Payee details
bytes32 fiatCurrency; // Fiat currency
uint256 conversionRate; // Conversion rate of deposit token to fiat currency
bytes data; // Additional data
}

Additional data may include mail server key hash if using zkEmail, notary public key for TLSNotary or witness proxy for TLSProxy (Reclaim)

External Functions

verifyPayment

function verifyPayment(
IPaymentVerifier.VerifyPaymentData calldata _verifyPaymentData
)
external
override
returns (bool, bytes32)

Description: Override function that must be implemented when adding a new Verifier. The escrow contract calls this method to confirm that a payment was indeed made according to the provided proof. If successful:

  • The payment is nullified (cannot be claimed again).

  • Returns a boolean indicating success and the intentHash.