docs: codify paykit issuer contract - #719
Open
ovitrif wants to merge 3 commits into
Open
Conversation
ovitrif
marked this pull request as ready for review
September 1, 2026 23:57
Greptile SummaryThe PR codifies Bitkit’s existing one-time Paykit issuer contract without changing production parsing behavior.
Confidence Score: 5/5The PR appears safe to merge because the production changes preserve existing validation behavior while adding focused contract coverage and documentation. Production callers continue to use the same environment network and parsing rules, the new files are automatically included through synchronized Xcode groups, and no concrete changed-code failure remains.
|
| Filename | Overview |
|---|---|
| Bitkit/Services/PaykitIssuerInterop.swift | Centralizes the existing asset, network-aware endpoint filtering, deduplication, and JSON payload parsing behavior. |
| Bitkit/Services/PaykitPaymentRequestService.swift | Uses the centralized issuer contract while retaining Env.network as the production default. |
| Bitkit/Services/PublicPaykitService.swift | Delegates endpoint payload parsing to the shared interop helper without changing the resulting endpoint shape. |
| Bitkit/Views/PaymentRequests/PaymentRequestsView.swift | Adds stable accessibility identifiers directly to actionable Pay and Reject buttons. |
| Bitkit/Views/Wallets/Send/SendConfirmationView.swift | Distinguishes ordinary and payment-request confirmation screens in the accessibility tree while preserving child elements. |
| BitkitTests/PaykitIssuerInteropTests.swift | Exercises the production request and endpoint parsers against the versioned cross-platform fixture. |
| BitkitTests/Fixtures/paykit-issuer-interoperability.json | Defines accepted and rejected issuer-contract cases for Bitcoin, testnet, signet, and regtest. |
| Docs/paykit-issuer-interoperability.md | Documents the exact request terms, endpoint identifiers, payload shape, and delivery prerequisites enforced by Bitkit. |
| journeys/payment-requests/issuer-interoperability.xml | Records the repeatable regtest journey from incoming request presentation to payment confirmation. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Issuer Payment Request] --> B[Validate btc asset and one-time terms]
B --> C[Filter endpoint identifiers for wallet network]
C --> D[Present incoming request]
D --> E[Resolve JSON endpoint payload]
E --> F[Open send confirmation]
F --> G[Pay or reject request]
Reviews (1): Last reviewed commit: "docs: codify Paykit issuer contract (#71..." | Re-trigger Greptile
2 tasks
# Conflicts: # Bitkit/Views/PaymentRequests/PaymentRequestsView.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #713
Description
Codifies the issuer contract Bitkit applies to one-time Paykit Payment Requests:
Paykit protocol and SDK policy remain owned by Paykit.
Linked Issues/Tasks
Preview
N/A — no user-visible changes.
QA Notes
Product journey / regtest evidence
cc85df0e24b54be353a57700429d144b35264c1af97f3de41c503dc52f1e4792at height77318.journeys/payment-requests/issuer-interoperability.xmlrecords the repeatable path with a linked fixture issuer, exact request data, and stable accessibility identifiers.btc, and a JSON object endpoint payload containing a non-empty stringvalue.Automated checks
git diff --checkpassed.