Code Monkey home page Code Monkey logo

sumup-ios-sdk's Introduction

SumUp mPOS SDK - iOS

Platform Created Supports License CocoaPods SPM compatible

This repository provides a native iOS SDK that enables you to integrate SumUp's proprietary card terminal(s) and its payment platform to accept credit and debit card payments (incl. VISA, MasterCard, American Express and more). SumUp's SDK communicates transparently to the card terminal(s) via Bluetooth (BLE 4.0) or an audio cable connection. Upon initiating a checkout, the SDK guides your user using appropriate screens through each step of the payment process. As part of the process, SumUp also provides the card terminal setup screen, along with the cardholder signature verification screen. The checkout result is returned with the relevant data for your records.

No sensitive card data is ever passed through to or stored on the merchant’s phone. All data is encrypted by the card terminal, which has been fully certified to the highest industry standards (PCI, EMV I & II, Visa, MasterCard & Amex).

For more information, please refer to SumUp API documentation..

Prerequisites

  1. Registered for a merchant account via SumUp's country websites (or received a test account).
  2. Received SumUp card terminal: Solo, Air, Air Lite, PIN+ terminal, Chip & Signature reader, or SumUp Air Register.
  3. Requested an Affiliate (Access) Key via SumUp Dashboard for Developers.
  4. Deployment Target iOS 14.0 or later.
  5. Recommended to use on Xcode 14.3.1 and iOS SDK 16 or later.
  6. iPhone, iPad or iPod touch.

Compatibility

  • Starting with firmware version 1.0.1.84, Air card readers with serial numbers starting with 108, 109 or later require iOS SDK 4.3.0 and later. Please update to the latest iOS SDK version if you need to support these readers.
  • From version 4.4.0 of the SDK, iOS 14 or later is required

Tipping

There are three modes for tipping:

  1. No tipping. Leave tipAmount set to nil when creating the SMPCheckoutRequest object.

  2. Programmatic tipping via the tipAmount property. Ask the user in your own UI for an appropriate tip amount and then set the tipAmount property on SMPCheckoutRequest. This will be added to the total amount, but will be displayed to the user separately during checkout.

  3. Tip on Card Reader. TCR prompts the customer directly on the card reader's display for a tip amount, rather than prompting for a tip amount on the iPhone or iPad display.

Tip on Card Reader (TCR)

Important: Not all card readers support this feature. To find out if the feature is supported for the last-used card reader, you should always check SMPSumUpSDK.isTipOnCardReaderAvailable. You must handle this case yourself in order to avoid no tip from being prompted.

To do this:

Before calling SMPSumUpSDK checkoutWithRequest:fromViewController:completion:, check SMPSumUpSDK.isTipOnCardReaderAvailable:

  • If NO, you should prompt the user for a tip amount yourself and set tipAmount on SMPCheckoutRequest

  • If YES, you may set tipOnCardReaderIfAvailable on SMPCheckoutRequest to YES. Do not prompt the user for a tip amount or set tipAmount if you do this.

Table of Contents

Installation

Manual Integration

The SumUp SDK is provided as an XCFramework SumUpSDK.xcframework that contains the headers and bundles bundles containing resources such as images and localizations. Please follow the steps below to prepare your project:

  1. Drag and drop the SumUpSDK.xcframework to your Xcode project's "Frameworks, Libraries, and Embedded Content" on the General settings tab.
  2. Make sure the required Info.plist keys are present.

Note: You can use the sample app that is provided with the SumUp SDK as a reference project. The Xcode project contains sample apps written in Objective-C and Swift. See Test your integration for more information.

Integration via CocoaPods

The SumUp SDK can be integrated via CocoaPods.

target '<Your Target Name>' do
    pod 'SumUpSDK', '~> 4.0'
end

Make sure the required Info.plist keys are present.

To learn more about setting up your project for CocoaPods, please refer to the official documentation.

Integration via Carthage

⚠️ Distributing XCFrameworks with the latest Carthage version (0.35.0) is not yet available. There is an open issue (#2799) to solve this. Once that issue is fixed, we expect Carthage to work again.

The SumUp SDK can be integrated with Carthage by following the steps below:

  1. Add the following line to your Cartfile:

     github "sumup/sumup-ios-sdk"
    
  2. Run carthage update sumup-ios-sdk

  3. Drag and drop the Carthage/Build/iOS/SumUpSDK.xcframework to your Xcode project's "Frameworks, Libraries, and Embedded Content" on the General settings tab.

  4. Make sure the required Info.plist keys are present.

To learn more about setting up your project for Carthage, please refer to the official documentation.

Note: See Test your integration for more information.

Integration via Swift PM

The latest Swift Package Manager version added support to distribute binary frameworks as Swift Packages. Unfortunately there is a bug (Bug Report SR-13343), that adds the framework as a static library, not as an embedded dynamic framework. Follow this workaround to manage SumUp SDK versions via Swift PM:

Requirement: Xcode 12 beta 6 (swift-tools-version:5.3)

  1. Add the package dependency to the repository https://github.com/sumup/sumup-ios-sdk (File > Swift Packages > Add Package Dependency...) with the version Up to Next Major: 4.0.0
  2. Leave the checkbox unchecked for the SumUpSDK at the integration popup (Add Package to ...:) Swift PM - do not auto-integrate SDK
  3. From the Project Navigator, drag and drop the SumUpSDK/Referenced Binaries/SumUpSDK.xcframework to your Xcode project's "Frameworks, Libraries, and Embedded Content" on the General settings tab.
  4. Make sure the required Info.plist keys are present.

To learn more about adding Swift Package dependencies, please refer to the official documentation.

Test your integration

In your debug setup you can call +[SMPSumUpSDK testSDKIntegration]. It will run various checks and print its findings to the console. Please do not call it in your Release build.

Supported device orientation

The SDK supports all device orientations on iPad and portrait on iPhone. Feel free to support other orientations on iPhone but please keep in mind that the SDK's UI will be presented in portrait on iPhone. See UISupportedInterfaceOrientations in the sample app's Info.plist or the "General" tab in Xcode's Target Editor.

Privacy Info plist keys

The SumUp SDK requires access to the user's location and Bluetooth peripherals. If your app has not asked for the user's permission, the SumUp SDK will ask at the time of the first login or checkout attempt. Please add the following keys to your info plist file:

    NSLocationWhenInUseUsageDescription
    NSBluetoothAlwaysUsageDescription
    NSBluetoothPeripheralUsageDescription (unless your deployment target is at least iOS 13)

Note:

Getting started

Import the SDK

To import the SDK in Objective-C source files, you can use #import <SumUpSDK/SumUpSDK.h>. If module support is enabled in your project, you can use @import SumUpSDK; instead.

In Swift, use import SumUpSDK. You do not have to add any headers to your bridging header.

Authenticate app

Before calling any additional feature of the SumUp SDK, you are required to set up the SDK with your Affiliate (Access) Key:

[SMPSumUpSDK setupWithAPIKey:@"MyAPIKey"];

Note: setupWithAPIKey: checks for the user's location permission. Consequently, do not call this method as part of the app launch. This method must be called on the main queue.

Login

Following app authentication, a registered SumUp merchant account needs to be logged in. Present a login screen from your UIViewController, using the following method:

[SMPSumUpSDK presentLoginFromViewController:vc
                                   animated:YES
                            completionBlock:nil];

Note: It is also possible to login an account with a token, without the user entering their SumUp login credentials in the SDK. Please refer to section Transparent Authentication.

To log out of the SDK, please refer to logoutWithCompletionBlock:.

Accept card payments

Once logged in, you can start using the SumUp SDK to accept card payments.

Prepare checkout request

Prepare a checkout request that encapsulates the information regarding the transaction.

For this, you will need to create an instance of SMPCheckoutRequest:

SMPCheckoutRequest *request = [SMPCheckoutRequest requestWithTotal:[NSDecimalNumber decimalNumberWithString:@"10.00"]
                                                             title:@"your title"
                                                      currencyCode:[[SMPSumUpSDK currentMerchant] currencyCode]];

Please note that you need to pass an NSDecimalNumber as the total value. While NSDecimalNumber is a subclass of NSNumber it is not advised to use the convenience method of NSNumber to create an NSDecimalNumber.

Additional checkout parameters

When setting up the SMPCheckoutRequest object, the following optional parameters can be included:

Tip amount

A tip amount can be processed in addition to the totalAmount using the tipAmount parameter. The tip amount will then be shown during the checkout process and be included in the response. Please note that a tip amount cannot be changed during/after the checkout. Just like the totalAmount it is an NSDecimalNumber so make sure to not accidentally pass an NSNumber.

Transaction identifier

The foreignTransactionID identifier will be associated with the transaction and can be used to retrieve details related to the transaction. See API documentation for details. Please make sure that this ID is unique within the scope of the SumUp merchant account and sub-accounts. It must not be longer than 128 characters.

// set an optional identifier
[request setForeignTransactionID:@"my-unique-id"];
Skip success screen

To skip the screen shown at the end of a successful transaction, the SMPSkipScreenOptionSuccess option can be used. When setting this option your application is responsible for displaying the transaction result to the customer. In combination with the Receipts API, your application can also send your own receipts, see API documentation for details. Please note that success screens will still be shown when using the SumUp Air Lite readers.

Skip failed screen

To skip the screen shown at the end of a failed transaction, the SMPSkipScreenOptionFailed option can be used. When setting this option your application is responsible for displaying the transaction result to the customer. Please note that failed screens will still be shown when using the SumUp Air Lite readers.

Prepare the SumUp Card terminal in advance

In order to prepare a SumUp card terminal for checkout, prepareForCheckout can be called in advance. A registered SumUp merchant account needs to be logged in, and the card terminal must already be setup. You should use this method to let the SDK know that the user is most likely starting a checkout attempt soon; for example when entering an amount or adding products to a shopping cart. This allows the SDK to take appropriate measures, like attempting to wake a connected card terminal.

Transparent Authentication

To authenticate an account without the user typing in their SumUp credentials each time, you can generate an access token using OAuth2.0 and use it to transparently login to the SumUp SDK.

[SMPSumUpSDK loginWithToken:@"MY_ACCESS_TOKEN" 
                 completion:nil];

For information about how to obtain a token, please see the API Documentation.

If the token is invalid, SMPSumUpSDKErrorInvalidAccessToken will be returned.

Initiate Checkout Request

Start a payment by using the checkout request below:

[SMPSumUpSDK checkoutWithRequest:request
              fromViewController:vc
                      completion:^(SMPCheckoutResult *result, NSError *error) {
                      // handle completed and failed payments here
                      // retrieve information via result.additionalInfo
}];

Checkout Error Codes

Possible values of error code received in the checkoutWithRequest: completion block.

Update checkout preferences

When logged in you can let merchants check and update their checkout preferences. Merchants can select their preferred card terminal and set up a new one if needed. The preferences available to a merchant depend on their respective account settings.

[SMPSumUpSDK presentCheckoutPreferencesFromViewController:self
                                                 animated:YES
                                               completion:^(BOOL success, NSError * _Nullable error) {
                                                 if (!success) {
                                                   // there was a problem presenting the preferences
                                                 } else {
                                                   // next checkout will reflect the merchant's changes.
                                                 }
                                               }];

Out of Scope

The following functions are handled by the SumUp APIs:

Community

  • Questions? Get in contact with our integration team by sending an email to [email protected].
  • Found a bug? Open an issue. Please provide as much information as possible.

Changelog

SumUp iOS SDK Changelog

License

SumUp iOS SDK License

sumup-ios-sdk's People

Contributors

alexedunov avatar andraskadar avatar jadeburton-sumup avatar mollidor avatar scarbain avatar schneider-iosphere avatar sundusabrar-sumup avatar vfoixcable avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sumup-ios-sdk's Issues

Bit code support

Hi. Do you plan to compile your SDK with the ENABLE_BITCODE setting on? Most of the other SDKs that we are using have support for this.

Bypass SumUp Login Screen by Passing Credentials through code

Dear Support Team,

We are developing an ePOS app that runs as a WebView App in IOS and Android. We are now integrating SumUp Card Reader with this. The idea is to call javascript functions from the enclosed webpage in our app to call IOS and Android functions to make the payment.

But the Sample app that we downloaded as part of your SDK, shows a Login Screen for SumUp when the app opens and user has to login through this before making any transactions. Is it possible to pass the SumUp login Credentials through code in some way, so that the screens and flow match better to our App. Or any means we can customise that ?

Our IOS Container App is being developed in Swift 3 and XCode 8.2.1

As the development time is short, your help & suggestions will make the integration smoother...

Thanks & Regards
Developer

Device Screen

After clicking Charge, am not able to present that device showing screen.It doesn't error but its not showing device screen

Firemonkey issue

Hello,
I try to use static SumupSDK in Firemonkey(Delphi) project.
Do you have any idea what does this error mean?

[DCC Error] E2597 ld: 64-bit LDR/STR not 8-byte aligned: from -[ISHCarouselWithButtonsViewController initWithNibName:bundle:] (0x1008820D0) to l011@0x000007A8 (0x100AE4354) for architecture arm64

Add CocoaPods support

Please, register sumup-ios-sdk project in CocoaPods. This will help to keep SDK up to date in our projects.

Customize checkout screen

Is it possible to change the bg color and more on the screen that appears for a checkout ? i.e. after calling [SumupSDK checkoutWithRequest:request fromViewController:self ...] ?

Many thanks.

Information about sent payment confirmation from Sumup vc

When I receive callback after successful payment, SMPCheckoutResult should contain BOOL value indicating that payment confirmation was sent by email or SMS. In my application I print payment confirmations on fiscal printer, but when user requested SMS/email confirmation I would like to not print it on paper. Now I have to print all payment confirmations.

adding SDK

Hi

I usually use cocoapod and adding the SDK is more challeging than I tought I keep getting "no module SumupSDK"
I have copied the SumupSDK.embeddedframework to my project, as well as created a bridge file and ensure the framework was in linked Framework but to no avail. Am i missing something?

unrecognized selector sent to instance

Hi guys i'm implement sumup with a new framework for building apps called fusetools.
integration gone pretty good until now.

Payment works fine in simulator (open the payment view works fine without any crash) but when i try with real devices it crash just after showing me the payment view with this error -[uAppDelegate window]: unrecognized selector sent to instance 0x149e02d20

i did:
-Link my app against SumupSDK.framework

Link my app against the following system frameworks:
Accelerate
AVFoundation
MapKit

Added -ObjC to "Other Linker Flags"

Added the bundles below provided in SumupSDK.embeddedframework/Resources to my app target:
SumupSDK.embeddedframework/Resources/SMPSharedResources.bundle
SumupSDK.embeddedframework/Resources/YTLibResources.bundle

The test integration passed.

this what my code looks like

    [Foreign(Language.ObjC)]
    public  PayWithToken(string accessToken, string productAmount, string productTitle, string foreignRef)
    @{



      [SumupSDK loginWithToken:accessToken
                       completion: ^(BOOL success, NSError *error) {
                           if (error) {
                            @{PayWithToken:Of(_this).Reject(string):Call(@"token non obtenu")};                          
                           }else{

                                  [SumupSDK prepareForCheckout];
      SMPCheckoutRequest *request = [SMPCheckoutRequest requestWithTotal:[NSDecimalNumber decimalNumberWithString:productAmount]
                                                                   title:productTitle
                                                            currencyCode:[[SumupSDK currentMerchant] currencyCode]
                                                          paymentOptions:SMPPaymentOptionAny];

              [request setForeignTransactionID:foreignRef];

              [SumupSDK checkoutWithRequest: request
                          fromViewController: [UIApplication sharedApplication].keyWindow.rootViewController
                                    completion: ^(SMPCheckoutResult *result, NSError *error) {
                                              if(error)
                                          @{PayWithToken:Of(_this).Reject(string):Call(@"Vous devez etre connecter")};
                                                else
                                          @{PayWithToken:Of(_this).Resolve(string):Call(@"Le paiement a été effectué")};
                                        
                }];

        // something went wrong checkout was not started
        if (![SumupSDK checkoutInProgress]) {
           @{PayWithToken:Of(_this).Reject(string):Call(@"Une erreur de connard s'est produite")};
        }


          }

         }];
    @}

[UIApplication sharedApplication].keyWindow.rootViewController represent the iOS view controller.
can anyone help me here ?

Refund transaction

Hello team,

  Haven't found refund transaction in your SDK. Is it supported? If not, how merchant is supposed to refund charged funds from POS?

Thanks,
Ildar

BUG: Not able to cancel payment

When I call [SumupSDK checkoutWithRequest:fromViewController:completion:] presented view controlled sometimes doesn't have Cancel button - same problem exists on original Sumup.app. Only one way to cancel payment is to kill an app.

Skip "transaction successful" screen

Hi,

Is it possible to skip or at least to know when the the "transaction successful" window has been presented ?
Now, after the user has entered his pin code and everything gone right, the completion block with result.succes is called only when the user tapper the "Skip" button on the "transaction successful screen".

I want to know exactly when the user has correctly entered his pin code.

Is there a way to do it ?

ios 11.0.3 bug

login page cancel key click no response on ipod(ios version:11.0.3)
version 2.3.2

-[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance

Hi,

we are receiving this issue when we want to build the project:
-[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance 0x15f623b50
2015-12-08 16:34:32.408 POS[2873:762491] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance 0x15f623b50'

A bit frustrating.. :(
Our code is almost the same as the example project. But we don't use Storyboards in the project right now..

Login issues

Hello, I am having an issue with the login process.
After calling the [SumupSDK presentLoginFromViewController:self.viewController animated:YES completionBlock:nil]; it shows the login view but the login fails all the times, displaying the following message:

Server Error: These login details are not valid. Please check your username and password and try again.

I used the same login details with your sample app, and it works. Right now I am not sure, why it works with your sample app, but it does not work within our app, so I am assuming that I am doing something wrong or that I am missing something.... any advice?

`setupWithAPIKey` should handle error

Docs about setupWithAPIKey says

/**
...
 \returns YES if setup was successful. NO otherwise or if SDK has been set up before.
...
 */
+ (BOOL)setupWithAPIKey:(NSString *)apiKey;

So one cannot distinguish if the setup wasn't successful or if the SDK has been set up before. This becomes a problem when developing a React Native app, because the app is being "refreshed", not recompiled, thus making impossible to know if there was an error or not.

Error handling should be done through an NSError pointer, and the BOOL can be left to know whether the SDK has been setup or not.

checkout is crashing

hi guys, when i try to initiate a checkout my app crash with this error.
[SMPPaymentCardReaderVC topLayoutInset_ISH]: unrecognized selector sent to instance.

this is what my integration code look like where [UIApplication sharedApplication].keyWindow.rootViewController represent the view controller, i'm calling it from c++, the login and open preferences works well but not the checkout

      SMPCheckoutRequest *request = [SMPCheckoutRequest requestWithTotal:[NSDecimalNumber decimalNumberWithString:productAmount]
                                                                   title:productTitle
                                                            currencyCode:[[SumupSDK currentMerchant] currencyCode]
                                                          paymentOptions:SMPPaymentOptionAny];

              [request setForeignTransactionID:foreignRef];

              [SumupSDK checkoutWithRequest: request
                          fromViewController: [UIApplication sharedApplication].keyWindow.rootViewController
                                    completion: ^(SMPCheckoutResult *result, NSError *error) {
                                              if(error)
                                          @{Pay:Of(_this).Reject(string):Call(@"Vous devez etre connecter")};
                                                else
                                          @{Pay:Of(_this).Resolve(string):Call(@"Le paiement a été effectué")};
                                        
                }];

The operation couldn’t be completed. (SumupSDKError error 50.)

Hi,

Currently, we've created an test app for testing the SDK. However, after laucnhing the app for the first time, granting the location permission and logging in we receive the following error:

The operation couldn’t be completed. (SumupSDKError error 50.)

The login responds with success = 1, the checkoutInProgress = 1. The completion block is immediately executed. Result = 0.

What are reasons for error no. 50? There isn't any documentation for it except 'SMPSumupSDKErrorCheckoutGeneral'.

login issue

Issue : Not presenting checkout as user is not logged in. But am able to login

SSKeychain class in SumUp SDK breaks iOS 10

Hi,

Apparently SumUp's SDK declares a class called SSKeychain which is in conflict with the system one. This is causing us issues with key chain functions (i.e. our app doesn't work when compiled for iOS 10).

Could you remove this class from your SDK ?

objc[67397]: Class SSKeychain is implemented in both /Users/xx/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/StoreServices.framework/StoreServices (0x11752d490) and /Users/xx/Library/Developer/CoreSimulator/Devices/169BEXXX-11CC-41B7-AAD7-86A3A2C9B58E/data/Containers/Bundle/Application/E8F77XXX-4EEC-4D4F-B9B9-A6E7EB75C85E/xx.app/xxApp (0x1060ecf00). One of the two will be used. Which one is undefined.

Not Loaded

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Admin/Library/Developer/CoreSimulator/Devices/3AFB09B3-0750-4535-A92F-*************C/data/Containers/Bundle/Application/227D8BCB-55A9-4BE3-B192-72DB618477BA/SumUp.app> (loaded)' with name 'PECLoginSharedVC''

setupWithAPIKey should be called on main thread?

In our app we had some weird issues with SumUp not properly initializing. Most of the UI would work, but the login screen would always return an error.

We found out that the cause was that setupWithAPIKey was called on a background thread instead of the main thread. It would be very useful to add this to the README.

For UI methods it makes sense to be called on main.
For setupWithAPIKey this is not so apparent.

Fix Info.plist files for iOS 9.0

In order to be able to submit our app with XCode 7 we need the Info.plist files of the two resource packages found in the SumUp SDK to be fixed according to the new plist rules for bundle resources (remove the "Executable File" entry).

Thanks!

Crash reports SDK

Hello guys,
We received some crash reports, could you please help us investigating the cause of the issue?
We had four occurrences in the last week, and I am trying to understand if it is caused by us or it is from the SDK.

The following is the crash summary:
LOCATION: [SMPBluetoothManager connectToReader:hasBeenRetrieved:updateBlock:]
EXCEPTION: NSInternalInconsistencyException
MESSAGE: Invalid parameter not satisfying: peripheral != nil
LAST INTERACTION: Display SMPPaymentCardReaderVC

Thanks!

API Key Issue

You have mentioned that, you have to use your own API key to access sumup sdk methods. How to get my API key? Please help out.

`checkoutWithRequest:fromViewController:completion:` should use NSError default keys to provide concise error info

As per https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/index.html#//apple_ref/occ/cl/NSError, NSError has a default way to handle application errors with localized description keys. However, when performing a checkout with checkoutWithRequest:fromViewController:completion: that causes an error, localizedFailureReason, localizedRecoverySuggestion and localizedRecoveryOptions return nil.

Inside the error's userInfo there is useful information, this is the console output of a po [error userInfo] lldb command.

screen shot 2016-04-04 at 12 14 42

It's a bit tricky to access to the message key, which contains relevant localized information about the error.

screen shot 2016-04-04 at 12 17 32

Populating the localized keys with the info of the underlying error would be very helpful.

Ip in instellingen/printers wordt niet opgeslagen

New Account
Default printers, rekening, keuken 1, keuken 2

ga naar instellingen/printers in new account

de nieuwe printers worden gevonden en de default printers kleuren groen, maar geen ip
ga naar wijzigen en vul IP in en klik opslaan
wijzigingen worden niet opgeslagen

Sumup ios SDK issue -[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance 0x15f623b50

Hi,

we are receiving this issue when we want to build the project:
-[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance 0x15f623b50
2015-12-08 16:34:32.408 POS[2873:762491] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PECLoginSharedVC setAutomaticallyAdjustsScrollViewInsets_backwardCompatibly:]: unrecognized selector sent to instance 0x15f623b50'

we are not using storboard.

and we try your given solution -force_load/-all_load with path of sdk but these are giving linker error.

Cancel payment process while checkout

The user has no possibility to cancel the checkout from the iOS interface, he has either to wait until the process timeout or clicked on the cross of the sumup box which generate a transaction FAILED.

Isn't possible to add a simple cancel button in the checkout interface?

Network Error

I try to request a new SDK Key associated with my active account set in EURO currency but the system returns me Network Error.
I need a new SDK Key since the one you gave me corresponds to another account that defaults to GBP
network error

Extend SMPCheckoutResult additionalInfo

[SMPCheckoutResult additionalInfo] should contain card expiration date (YY/MM), AID, auth code, terminal ID and payment method (eg contactless). Some of these informations are already available at SMS/email confirmations and I would like to print them as well like on standard payment confirmations from other payment providers.

Error Code: 20 while Login

While Doing Login, Am getting this. But i have updated the Sumupsdk Framework...I am using swift2.0 xcode 7.3.1.

Error Domain=SumupSDKError Code=20 "(null)" UserInfo={NSUnderlyingError=0x79606f70 {Error Domain=JSONRPCServerError Code=-32006 "Version not supported" UserInfo={JSONObject={
code = "-32006";
data = {
message = "Sorry, but we've experienced an unexpected error. Please try closing the app and logging in again, or contact our Support Team (quote: UKN-3GBMG)";
};
message = "Version not supported";
}, NSLocalizedDescription=Version not supported}}})

Login problem

SumupSDK.presentLogin(from: self, animated: true) { (success, error) in

}

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/lukapenger/Library/Developer/CoreSimulator/Devices/D097268F-1F18-42E8-BF94-4EB915A382B6/data/Containers/Bundle/Application/96CEE263-956A-4B39-9EA3-F8AC346AAC61/Nettle Pay.app> (loaded)' with name 'SMPSDKWelcomeViewController''

Cancel payment while waiting for device

Hi!

Is it possible to cancel a payment while waiting for the device? Currently after opening the payment window, it is not possible to cancel it when connected to the device. The device is waiting on 'insert card'. The only possible solutions are:

  1. Insert card an press the X button
  2. Wait for the timeout

Is there any other possibility to cancel an ongoing transaction?

Checkout preferences not launching

dispatch_async(dispatch_get_main_queue(), ^{
        [SumupSDK presentCheckoutPreferencesFromViewController: controller
                                                      animated:NO
                                                    completion:^(BOOL success, NSError *error) {
            NSLog(@"Error", [error localizedDescription]);
        }];
    });

Does not work and neither shows a modal. However, the presentLoginFromViewController with the same arguments does work as expected..

Connecting to the sum up reader Air (AIRE000)

Hello,
Is it possible to connect to the new Air reader?
When we try to connect to a reader, it always looks for the pin+ devices, but we would like to use the new model. Any advice?

Thanks

Resource bundles required to copy to the main app

As SumUpSDK has not supported Cocapods yet, we had to make a local pod as a workaround. However, SumUpSDK requires its bundles to be copied to the main app and that's not a good idea for distributing a framework which should be self-contained. Can you please use [NSBundle bundleForClass:] so those bundles can live inside SumupSDK? More here https://developer.apple.com/reference/foundation/nsbundle/1417717-bundleforclass?language=objc
Thanks a lot.

Conflict with SBJson

SumupSDK.framework uses SBJson internally. It conflicts when developer also uses SBJson in his project. SBJson framework usage should be prefixed to internal namespace like SMPJson to avoid conflicts. For example, DropboxSDK also uses SBJson as DBJson.

IOS 11 issue

Hello guys,

We are currently not able to process transaction in IOS 11; it throws an exception whenever we call the SumupSDK checkoutWithRequest method:

[SumupSDK checkoutWithRequest:request fromViewController:self.viewController completion:^(SMPCheckoutResult *result, NSError *error){ ... }

The following is the exception:
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 24]'

It wasn't possible to fully symbolicate the crash details; here is a summary:
EXCEPTION: CALayerInvalidGeometry
MESSAGE: CALayer position contains NaN: [nan 24]
LAST INTERACTION: Display SMPPaymentOptionsVC

Could you please help us investigating the issue?

Thanks!

Insufficient transaction information

I would like to print payment confirmation for customer, but SMPCheckoutResult has only transactionCode. There should be also: card type (VISA, MasterCard, etc), card expiration (yy/mm), masked card number (last 4 digits), merchant name, terminal id, exact transaction timestamp, card issuer identification.

Backend modifications ?

Hi,

We have an application that hasn't changed since december 2016 and since a few days, we can't use the SDK like before.

The login screen is displayed but right after, we are getting this message in the log :

  • SumupSDK: Not presenting checkout as user is not logged in.

If I try again right after, I'm getting :

  • SumupSDK: Not presenting checkout as checkout is already in progress
  • SumupSDK: error: SDK has been setup before.

We are using the version 1.2.2 which was super stable since now and I'm using iOS 10.2.

Regards,

David

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.