With Apple Pay, you can make instant payments in a single flow. Please check settings:
https://stripe.com/docs/apple-payhttps://stripe.com/docs/apple-pay
🐾 Implements Guide
Prepare settings
For using Apple Pay, you need some settings.
- Register for an Apple Merchant ID
- Create a new Apple Pay certificate
- Integrate with Xcode
Detail information is here:
https://stripe.com/docs/apple-pay#merchantidhttps://stripe.com/docs/apple-pay#merchantid
If these are not done correctly and are different from the options given to
createApplePay
, this method will not be able to run.
1. isApplePayAvailable
First, you should check to be able to use Apple Pay on device.
import { Stripe, ApplePayEventsEnum } from '@capacitor-community/stripe';
(async() => {
const isAvailable = Stripe.isApplePayAvailable().catch(() => undefined);
if (isAvailable === undefined) {
return;
}
})();
This method return resolve(): void
or
reject('Not implemented on Device.')
.
method
isApplePayAvailable()
isApplePayAvailable() => Promise<void>
2. createApplePay
You should connect to your backend endpoint, and get every key. This is "not" function at this Plugin. So you can use
HTTPClient
,
Axios
, Ajax
, and so on.
Stripe provide how to implement backend:
https://stripe.com/docs/payments/accept-a-payment?platform=ios#add-server-endpointhttps://stripe.com/docs/payments/accept-a-payment?platform=ios#add-server-endpoint
After that, you set these key to createApplePay
method.
(async() => {
const { paymentIntent } = await this.http.post<{
paymentIntent: string;
}>(environment.api + 'payment-sheet', {}).pipe(first()).toPromise(Promise);
await Stripe.createApplePay({
paymentIntentClientSecret: paymentIntent,
paymentSummaryItems: [{
label: 'Product Name',
amount: 1099.00
}],
merchantDisplayName: 'rdlabo',
countryCode: 'US',
currency: 'USD',
});
})();
method
createApplePay(...)
createApplePay(options: CreateApplePayOption) => Promise<void>
You can use options of CreateApplePayOption
on createApplePay
.
merchantIdentifier
must be the same as the value registered in Apple Developer Website.
interface
CreateApplePayOption
Prop | Type |
paymentIntentClientSecret |
string |
paymentSummaryItems | { label: string; amount: number; }[] |
merchantIdentifier | string |
countryCode | string |
currency |
string |
requiredShippingContactFields |
('postalAddress' | 'phoneNumber' | 'emailAddress' | 'name')[] |
allowedCountries |
string[] |
allowedCountriesErrorDescription |
string |
3. presentApplePay
present in
createApplePay
is single flow. You don't need to confirm method.
(async() => {
const result = await Stripe.presentApplePay();
if (result.paymentResult === ApplePayEventsEnum.Completed) {
}
})();
method
presentApplePay()
presentApplePay() => Promise<{ paymentResult: ApplePayResultInterface; }>
ApplePayResultInterface
is created from Enum of ApplePayEventsEnum
. So you should import and check result.
type alias
ApplePayResultInterface
ApplePayEventsEnum.Completed | ApplePayEventsEnum.Canceled | ApplePayEventsEnum.Failed | ApplePayEventsEnum.DidSelectShippingContact | ApplePayEventsEnum.DidCreatePaymentMethod
4. addListener
Method of Apple Pay notify any listeners. If you want to get event of payment process is 'Completed', you should add
ApplePayEventsEnum.Completed
listener to
Stripe
object:
Stripe.addListener(ApplePayEventsEnum.Completed, () => {
console.log('ApplePayEventsEnum.Completed');
});
The event name you can use is
ApplePayEventsEnum
.
enum
ApplePayEventsEnum
Members | Value |
Loaded |
"applePayLoaded" |
FailedToLoad |
"applePayFailedToLoad" |
Completed |
"applePayCompleted" |
Canceled |
"applePayCanceled" |
Failed | "applePayFailed" |
DidSelectShippingContact | "applePayDidSelectShippingContact" |
DidCreatePaymentMethod | "applePayDidCreatePaymentMethod" |
📖 Reference
See the Stripe Documentation for more information. This plugin is wrapper, so there information seems useful for you.
Apple Pay(iOS)
This plugin use STPApplePayContext on pod 'Stripe'
:
https://stripe.com/docs/apple-payhttps://stripe.com/docs/apple-pay
"Merchant name" on the apple pay payment sheet #115
This is good issue for setting "Merchant name".
https://github.com/capacitor-community/stripe/issues/115https://github.com/capacitor-community/stripe/issues/115