Sajad Jaward
Sajad Jaward

Reputation: 357

Stripe SDK integration using swift and flutter

I am trying to integrate Apple Pay in iOS using flutter. I am using method channels to communicate with swift and get the payment process completed. I have followed the documentation which is in this link

However, I believe I have stuck in the very ending part which I don't understand how to continue the flow. Since I am using flutter UIs, I don't need iOS ViewControllers.

This is the code that I have tried so far in the AppDelegate.swift:

func handleApplePayButtonTapped(result: FlutterResult){
    let merchantIdentifier = "my.apple.merchant.id"
    let paymentRequest = Stripe.paymentRequest(withMerchantIdentifier:merchantIdentifier, country:"US", currency:"USD")
    paymentRequest.paymentSummaryItems = [
    PKPaymentSummaryItem(label:"Fancy Hat", amount:50.00),
    PKPaymentSummaryItem(label:"iHats, Inc", amount:50.00),
    ]

    if Stripe.canSubmitPaymentRequest(paymentRequest){
        //next steps ???
        result(String("Can submit payment request"))
    }else{
        result(String("Can't submit payment request"))
    }
}

I am calling this code in flutter UI using this code:

Future<void> _doPayment() async {
String returnMsg;
try {
  final bool result = await platform.invokeMethod('checkIfDeviceSupportsApplePay');
  if(result){
    final String status = await platform.invokeMethod('handleApplePayButtonTapped');
    print(status);
  }
  returnMsg = '$result';
} on PlatformException catch (e) {
  returnMsg = "Failed: '${e.message}'.";
}
print(returnMsg);}

I already have a Stripe publishable key as well as a Heroku deployed backend. If you checked my swift code, you will see where I am stuck at the moment.

As I have understood the flow, what is remaining to be done is

I am very new to swift language and code samples will be greatly helpful for me to continue with.

Thank you.

Upvotes: 2

Views: 1399

Answers (1)

hmunoz
hmunoz

Reputation: 3341

It looks like you're following the Stripe Custom iOS Integration, using the native PKPaymentAuthorizationViewController.

You should read through the integration steps here: https://stripe.com/docs/mobile/ios/custom#apple-pay

Basically, your next steps would be

  • instantiate a PKPaymentAuthorizationViewController with the paymentRequest
  • Set yourself to its delegate
  • present the PKPaymentAuthorizationViewController
  • implement the relevant delegate methods to get back an Apple Pay token (PKToken)
  • convert PKToken to STPToken (a Stripe token)

All these steps and more are detailed in the link above.

Upvotes: 2

Related Questions