LogoAwesome Skills
  • Search
  • Category
  • Tag
  • Blog
LogoAwesome Skills
LogoAwesome Skills

Discover Open-Source Agent Skills for AI Coding Assistants

Product

  • Search
  • Category
  • Tag
  • Blog

Resources

  • Claude Skill Docs
  • Antigravity Skills Docs

Tools

  • Claude Code
  • OpenCode
  • Cursor
  • Codex
  • Antigravity

Company

  • Privacy Policy
  • Terms of Service
  • Sitemap

©2026 Awesome Skills. All rights reserved.

Privacy PolicyTerms
Back to Skills

passkit

Integrate Apple Pay payments and Wallet passes using PassKit. Use when adding Apple Pay buttons, creating payment requests, handling payment authorization, adding passes to Wallet, configuring merchant capabilities, managing shipping/contact fields, or working with PKPaymentRequest, PKPaymentAuthorizationController, PKPaymentButton, AddPassToWalletButton, PKPass, PKAddPassesViewController, PKPassLibrary, Wallet pass distribution, or Apple Pay checkout flows for physical goods, real-world service

857stars43forksUpdated 7/9/2026
Developer Tools#ios#apple-pay#wallet#swift#payments#checkout

Security Assessment

Safe(100/100)
Security Score100/100

About passkit

A hands-on reference for integrating Apple Pay payments and Wallet passes with PassKit, targeting Swift 6.3 and iOS 26+. It covers accepting Apple Pay for physical goods, real-world services, donations, and eligible recurring payments, and adding passes to a user's Wallet, spanning payment buttons, requests, authorization, passes, and merchant configuration. Setup walks through enabling the Apple Pay capability, creating a Merchant ID (merchant.com.example.app format), installing a Payment Processing Certificate, and adding the merchant ID to entitlements. It stresses checking device eligibility with PKPaymentAuthorizationController.canMakePayments() and canMakePayments(usingNetworks:capabilities:) before showing Apple Pay UI, noting Apple's HIG expectation that Apple Pay be a prominent option wherever the active-card check is used. Button guidance shows the SwiftUI PayWithApplePayButton and UIKit PKPaymentButton, the full list of button types (such as .buy, .donate, .subscribe, .checkout), and the rule that custom buttons must not carry the Apple Pay logo or wordmark. Building a PKPaymentRequest is detailed with merchant identifier, country and currency codes, supported networks, and merchant capabilities, using NSDecimalNumber rather than Double for amounts, with the last paymentSummaryItem treated as the total. Requesting shipping and contact fields, defining PKShippingMethod options, and setting shippingType are shown, along with the supported-network table and runtime querying via availableNetworks(). Presentation uses PKPaymentAuthorizationController, retained for the sheet's lifetime because its delegate is weak, and authorization is handled through PKPaymentAuthorizationControllerDelegate, forwarding payment.token to a processor and returning a PKPaymentAuthorizationResult, plus handling shipping changes and finishing and dismissing. It also notes that a single PKPaymentRequest may set only one advanced request type (recurring, automatic reload, deferred, Apple Pay Later availability, or multi-token) and to use separate requests otherwise. Useful for building checkout flows or Wallet pass distribution.

FAQ

How do I check whether a device can use Apple Pay?

Verify PKPaymentAuthorizationController.canMakePayments(), then canMakePayments(usingNetworks:capabilities:) for the specific networks you support, before showing any Apple Pay UI.

What type should payment amounts be?

PassKit amount APIs take NSDecimalNumber, not Double; construct them with NSDecimalNumber(string:).

Which paymentSummaryItem is the total?

The last item in paymentSummaryItems is treated as the total, and its label appears on the Pay line of the payment sheet.

Why must I retain the PKPaymentAuthorizationController?

Because its delegate is weak, so you must hold the controller for the life of the sheet or the payment flow will break.

Can one payment request combine recurring and deferred modes?

No. A single PKPaymentRequest can set only one advanced request type; use separate payment requests when a checkout needs more than one mode.

All Files

3 files
evals/evals.json4.8 KB
View
references/wallet-passes.md9.8 KB
View
SKILL.md16.8 KB
View

Install passkit

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill

Repository

dpearson2699/swift-ios-skills

Related Skills

ccf-idea-reviewer

2,958

ccf-integrity-auditor

2,958

finance-sentiment

3,382

ccf-humanization

2,958