braintree / braintree_ios

Braintree SDK for iOS
https://developer.paypal.com/braintree/docs/start/hello-client/ios/v5
MIT License
560 stars 294 forks source link

Apple Review Rejection for saving the payment method for future transaction #1084

Closed userException closed 1 year ago

userException commented 1 year ago

Braintree SDK Version

5.20.1

Environment

Production

Xcode Version

14.2

OS Version & Device

iOS 16

Integration type

CocoaPods

Development Processor

Both

Describe the bug

Apple rejected our app which is using the Braintree SDK for processing Apple Pay payments with the below reason:

Guideline 3.1.6 - Business - Payments - Apple Pay Your app allows the user to temporarily authorize future Apple Pay purchases to be made in the app, which is not appropriate for the App Store. It is not appropriate to use temporary authorization for a product or service as a blanket authorization for all future purchases. Next Steps To resolve this issue, please revise your app to ensure that the user authorizes each Apple Pay transaction.

Our app lets the user pay utility payments like electricity bill, EMI every month/14day/7day. Note that this is not a subscription but the general frequency of payment. We did get approval for some of our apps with this flow only but recently one was rejected with above reason.

We are using iOS v5 SDK and using Custom UI.

We present PKPaymentAuthorizationViewController with the PKPaymentRequest where the amount is shown as "Amount Pending".

We get the nonce back and we send it to our server which inturn sends back a payment-method-token associated with the current logged in user. This token is used for future payments.

Please let us know if this is not the right use case for using payment method tokens for future payments.

To reproduce

This was an app review rejection so can't be reproduced.

Expected behavior

The app should pass the apple review

Screenshots

No response

jaxdesmarais commented 1 year ago

Hello @userException -

Apple Pay cards can only be saved to your Vault for specific use cases; see the support article for details. You can find additional information about Vaulting Apple Pay in our developer documentation on this topic. Ultimately these use cases are controlled and verified by Apple and not the Braintree SDK. You will need to work with Apple directly if your use case fits the above acceptable Vaulting use case to verify you meet their requirements.

I will be closing this issue as it is not an issue with the SDK and you need to work with Apple directly to resolve this matter.