Partner applications enabling sellers to take payments in person use the Reader SDK. The App Marketplace requirements described in this topic apply to partner applications that use the Reader SDK.
Access tokens must not be stored on mobile devices. They must be stored securely on a server and requests to the Square API must be proxied through that server.
Partner applications must be authorized to take payments on behalf of a seller account. The Mobile Authorization API returns a short-lived authorization code that cannot be stored or reused. The application server must send a Square Mobile Auth Code request that has an OAuth granted access token with the PAYMENTS_WRITE_IN_PERSON
scope parameter. The application server sends the returned Auth Code to the mobile client for use in the ReaderSdk.authorizationManager().authorize(authorizationCode)
call.
Partner applications must submit checkout parameters that match the seller experiences in both the partner platform application and on Square. For example, if the partner application manages receipts, the [checkoutParameters.builder.skipReceipt](https://developer.squareup.com/docs/api/reader/ios/index.html /android/com/squareup/sdk/reader/checkout/CheckoutParameters.Builder.html#skipReceipt-boolean-) value must be true
so that the receipt functionality isn't duplicated.
If the integration must support the delayed capture of payments, partners must use the Transactions API to capture the payment.
If the integration supports refunds, partners must use the Transactions API to perform refunds.
The Reader SDK is currently not available outside the United States.
If you're testing your Reader SDK integration on a personal iOS device, you could encounter undesired behavior in your application if you have Apple Pay installed. This can happen when your device is in proximity to an NFC or RF card reader. The device senses the reader and might open the Apple Pay wallet over your Reader SDK application, making it difficult to enter a payment card in the application.
Reader SDK logic attempts to suppress the display of the Apple Pay wallet but can only do so if your application has the com.apple.developer.passkit.pass-presentation-suppression
entitlement installed. Complete the following steps to do so:
- Request an entitlement to disable Apple Pay by contacting [email protected].
- In your Xcode project entitlements file, add a new key (
com.apple.developer.passkit.pass-presentation-suppression
) and set the value type toBoolean
and the value toYES
.