Coder Social home page Coder Social logo

citruspay / citruspay-ios-sdk Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 165.94 MB

Enhanced iOS SDK for Superior Native Payments Experience

License: MIT License

Objective-C 90.47% C 0.16% Ruby 0.77% Swift 8.60%
sdk accept-payments citruspay-ios-sdk payment-methods cocoapods

citruspay-ios-sdk's Introduction

Getting Started

CitrusPay logo

CitrusPay iOS SDK's

Introduction

The CitrusPay iOS SDK enables collection of payments via various payment methods.

The SDK is designed for CitrusPay partners who are developing their own iOS apps. The SDK provides a native integration to accept payments within these apps that is easy to integration and provides a high performance, functional checkout experience.

##Features CitrusPay iOS SDK broadly offers following features.

Core SDK V 4.1.5 - CitrusPay.framework

  • Creating Citrus account for the user
  • Prepaid Payments
  • Payments via credit/debit card (CC, DC) or netbanking payments (NB)
  • Saving Credit/Debit cards into user's account for easier future payments by abiding The Payment Card Industry Data Security Standard (PCI DSS)
  • Loading Money into users Citrus prepaid account for Prepaid facility
  • Withdraw the money back into User's bank account from the Prepaid account
  • On-Demand asset loading (Via CitrusGraphics library)
  • One Tap payments for the Saved Cards
  • Subscribe to periodic autoload of Citrus Wallet
  • Split payments
  • Dynamic Pricing, offer coupons, surcharge
  • SDK support login screen to simplify Login
  • Swift Version 3.1 Support with Xcode 8.3

CitrusGraphics SDK V 1.1.2 - CitrusGraphics.framework

  • A lightweight, pure-Swift library for downloading and caching images from the Citrus cloud
  • Swift Version 3.1 Support with Xcode 8.3
  • Dynamic Assets available to module for their assets requirements
  • SDK have both default & low resolution image for it which will be replaced by high resolution image once asset is downloaded and cached based on device specification

LazyPay SDK V 1.0.1 - LazyPay.framework

  • LazyPay checkout - Buy now, Pay Later!
  • Native iOS integration
  • Simple lightweight integration
  • Enable seamless payments for low value online purchases
  • Faster transactions and with higher transaction success rates for merchants

PlugNPlay SDK V 1.1.0 - PlugNPlay.framework

  • Native iOS integration
  • Simple lightweight integration
  • Easy to integrate and use library
  • Provides a ready to use, drop in set of User Screens to enable payments with iOS Apps
  • Provide an end to end payment experience with all the features offered by the Citrus SDK
  • Reduces integration friction as merchants do not have to worry about designing the checkout screen, bank assets, or deal with complexity required to handle different payments methods
  • The payment component enables you to accept payments from your users through a wide variety of payment instruments such as Citrus Wallet, Virtual Currency, Cards or Netbanking
  • The Wallet/User profile component provides a single user interface to users and enables them to:
    1. Load Money in user’s Citrus Wallet
    2. Subscribe to periodic autoload of Citrus Wallet
    3. Manage saved cards
    4. Withdraw money from his Citrus Wallet to the bank account

####The full SDK ChangeLog is also available

Example Project

An example project is available via CocoaPods or manual-inclusion to try out and familiarize yourself with the Citrus Payments SDK. This project comes bundled with the SDK.

via CocoaPods - To run the example project, clone the repo, and run pod install from the Example directory first.

Example App Requirements

  • Xcode 8 or higher.

###Prerequisites to integrating with Citrus PG

  • You need to enroll with Citrus as a merchant.
  • You need to host Bill generator on your server
  • You need to host Return Url Page on your server. (After the transaction is complete, Citrus posts a response to this URL.)
  • Make sure that you have obtained following parameters from your Citrus admin panel
  • Merchant Secret Key
  • Merchant Access Key
  • SignIn Key
  • SignIn Secret
  • SignUp Key
  • SignUp Secret

Note: Please ensure all the requirements mentioned above are met before proceeding.

Setup

Everything has a beginning. For using a framework, it's installation.

Using CocoaPods (recommended)

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate CitrusPay into your Xcode project using CocoaPods, specify it to a target in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
# your other pod
# ...
pod 'CitrusPay', '~> 4.1.5'
end

Then, run the following command:

$ pod install
  • Done!

You should open the {Project}.xcworkspace instead of the {Project}.xcodeproj after you installed anything from CocoaPods.

Including the SDK as a Git Submodule

If you do not wish to use CocoaPods then the secondary recommendation is to use a submodule. This allows you to easily track updates using standard Git commands. The first step to installation is to add the submodule to your project:

$ cd /path/to/MyApplication
# If this is a new project, initialize git...
$ git init
$ git submodule add git://github.com/citruspay/citruspay-ios-sdk.git
$ git submodule update --init --recursive
$ open citruspay-ios-sdk
  • Navigate to "Framework" folder & drag "core-sdk" folder into your existing Xcode project
  • Select the target and Navigate to Build Phases tab and expand the Link Binary With Libraries section
  • Click the + and CitrusPay.framework appropriate to your target's platform
  • Then navigate to General tab and expand the Embedded Binaries section
  • Click the + and CitrusPay.framework appropriate to your target's platform

Manual inclusion

If you’d like to download and maintain the SDK manually, please follow the steps listed below:

  • Clone it using following command
$ git clone --recursive https://github.com/citruspay/citruspay-ios-sdk.git
$ open citruspay-ios-sdk
  • Navigate to the Citrus "Framework" folder & drag the "core-sdk" folder into your existing Xcode project
  • In Xcode, go to your app's target settings. Under the Build Phases tab, expand the Link Binary With Libraries section.
  • Include the following framework:
  • CitrusPay.framework
  • In Xcode, go to your app's target settings. Under the General tab, expand the Embedded Binaries section.
  • Include the following framework:
  • CitrusPay.framework

Adding dependencies (required when including the SDK as a Submodule including it manual)

JSONModel
  • Navigate to "Dependency" folder & drag the JSONModel.xcodeproj from sub-folder into your Xcode project (i.e using direct project dependency)
  • Select the target and Navigate to Build Phases tab and expand the Link Binary With Libraries section
  • Click the + and JSONModel.framework appropriate to your target's platform
  • Then navigate to General tab and expand the Embedded Binaries section
  • Click the + and JSONModel.framework appropriate to your target's platform
CitrusGraphics
  • Navigate to "Framework" folder & drag "graphics-sdk" folder into your existing Xcode project
  • Select the target and Navigate to Build Phases tab and expand the Link Binary With Libraries section
  • Click the + and CitrusGraphics.framework appropriate to your target's platform
  • Then navigate to General tab and expand the Embedded Binaries section
  • Click the + and CitrusGraphics.framework appropriate to your target's platform
Kingfisher
  • Navigate to "Dependency" folder & drag the Kingfisher.xcodeproj from sub-folder into your Xcode project (i.e using direct project dependency)

  • Select the target and Navigate to Build Phases tab and expand the Link Binary With Libraries section

  • Click the + and Kingfisher.framework appropriate to your target's platform

  • Then navigate to General tab and expand the Embedded Binaries section

  • Click the + and Kingfisher.framework appropriate to your target's platform

  • Link your app to SystemConfiguration.framework

  • Done!

Next

After installation, you must import the CitrusPay SDK in your project by adding this:

Swift

import CitrusPay

Objective-C

#import <CitrusPay/CitrusPay.h>

to the files in which you want to use this framework.

Once you prepared, continue to have a look at the Documentation to see how to use CitrusPay.

Documentation

HTML documentation is hosted on our CitrusPay Developer Guide.

Git Wiki documentation is available on the Git Wiki Documentation.

SDK Organization

CitrusPay.h

CitrusPay.h is the starting point for consuming the SDK, and contains the primary class you will interact with. It exposes all the methods you can call to accept payments via the supported payment methods. Detailed reference documentation is available on the reference page for the CitrusPay class.

Data Models

All other classes in the SDK are data models that are used to exchange data between your app and the SDK. Detailed reference documentation is available on the reference page for each class.

Next Steps

Head over to the Git Wiki Documentation to see all the API methods available.

See the the latest releases page

Next Steps

Head over to the Git Wiki Documentation to see all the API methods available. When you are ready, look at the samples below to learn how to interact with the SDK.

citruspay-ios-sdk's People

Contributors

imrankhanpayu avatar mukesh122 avatar yadneshcitrus avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

appbootup

citruspay-ios-sdk's Issues

Error compiling code with CitrusSDK in Xcode 8.3

@mukesh122 I'm getting error while compiling my code with Citrus SDK in Xcode 8.3. Seems like you have to recompile the framework in Xcode 8.3. Please find the error below.
module compiled with Swift 3.0.2 cannot be imported in Swift 3.1: /Pods/CitrusGraphics/Framework/graphics-sdk/CitrusGraphics.framework/Modules/CitrusGraphics.swiftmodule/x86_64.swiftmodule
Please let me know the ETA for this

CitrusPay.framework incompatible with swift4.0

ProjectPath/CitrusPay.framework/CitrusPay compiled with older version of Swift language (3.0) than previous files (4.0)

file 'ProjectPath/Swift4.0/eCube/Pods/CitrusPay/Framework/core-sdk/CitrusPay.framework/CitrusPay' for architecture x86_64

SDK not compiling in swift 3.0.2

Unable to compile in swift 3.0.2,
"Module compiled with Swift 3.0 cannot be imported in Swift 3.0.2"
I think the problem is with pre-built binaries.

Error while doing test transaction

Hello There ,

I am integrating Citrus Payment gateway to our iOS application . I am trying to use PlugNPlay framework for payments but i am facing an issue while doing a test transaction receiving below error .

"value":null,"currency":"INR" . - Value going null
2017-02-06 16:27:19.760 [Verbose] > [CitrusPay SDK] Version 4.1.2 : billJson {"merchantTxnId":"xxxxxxxxxxxxxxx","amount":{"value":null,"currency":"INR"},"requestSignature":"xxxxxxxxxxxxxxx","merchantAccessKey":"xxxxxxxxxxxxxx","returnUrl":"https://eventdex.com/citrus-mobile/requestData.php?secret_key=xxxxxxxxxxxxxx?amount=1.00"}

2017-02-06 16:27:19.760 [Verbose] > [CitrusPay SDK] Version 4.1.2 : signature (null)

2017-02-06 16:27:19.760 CitrusTestApp[5510:214817] error Invalid JSON data: Value of required model key value is null

Pods/CitrusGraphics/Framework

:0: error: module compiled with Swift 3.1 cannot be imported in Swift 3.2.3: /Users/maheshkumar/Documents/Mac Data/SanyogTravel/Pods/CitrusGraphics/Framework/graphics-sdk/CitrusGraphics.framework/Modules/CitrusGraphics.swiftmodule/x86_64.swiftmodule

Server threw an error code 500

on requestPaymentsModes() method, I get following error:

Error Domain=com.citrus.errorDomain Code=7007 "Server threw an error
code 500

Authorization = "Bearer (null)";

restRequest JSON> {"email":"[email protected]","client_id":"7lz1x66n40-sdk-merchant","mobile":"8102057040","scope":"LIMITED","client_secret":"56d4588916815c6564726ce273edbc73"}
2018-04-06 16:09:49:475 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : allHeaderFields {
"Access-Control-Allow-Headers" = "Authorization,Origin,X-Requested-With,Content-Type,Accept,merchantAccessKey,requestSignature,access_key";
"Access-Control-Allow-Methods" = "POST, GET, PUT, OPTIONS, DELETE";
"Access-Control-Allow-Origin" = "*";
"Access-Control-Max-Age" = 3600;
"Cache-Control" = "no-cache, no-store, max-age=0, must-revalidate, no-store";
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 84;
"Content-Security-Policy" = "default-src https: data: 'unsafe-inline' 'unsafe-eval'";
"Content-Type" = "application/json;charset=UTF-8";
Date = "Fri, 06 Apr 2018 10:39:49 GMT";
Expires = 0;
"Keep-Alive" = "timeout=5, max=99";
Pragma = "no-cache, no-cache";
"Public-Key-Pins" = "pin-sha256="WGpYij0OXdgfaAwkCOf3Mtt9WJKZxTf01t6XamZCx0U="; pin-sha256="HpP5E4a6KAA3cQ2JCKHmUEruEFo7dTWVt/Em0HWkL0Y="; max-age=15768000; includeSubDomains";
"Strict-Transport-Security" = "max-age=31536000;includeSubDomains;preload";
Vary = "Accept-Encoding";
"Www-Authenticate" = "Bearer realm="oauth", error="invalid_token", error_description="Invalid access token: (null)"";
"X-Content-Type-Options" = "nosniff, nosniff";
"X-Frame-Options" = "DENY, SAMEORIGIN";
"X-Xss-Protection" = "1; mode=block, 1; mode=block";
}
2018-04-06 16:09:49:475 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : updated 1
2018-04-06 16:09:49:475 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : ----------------------------------------------- Properties for object <CTSRestCoreResponse: 0x60400065ca10>
2018-04-06 16:09:49:476 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property responseString Value: {"error":"invalid_token","error_description":"Invalid access token: (null)"}
2018-04-06 16:09:49:476 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property requestId Value: -1
2018-04-06 16:09:49:477 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property indexData Value: -1
2018-04-06 16:09:49:477 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property data Value: (null)
2018-04-06 16:09:49:478 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property error Value: Error Domain=com.citrus.errorDomain Code=7007 "Server threw an error
code 401" UserInfo={NSLocalizedDescription=Server threw an error
code 401}
2018-04-06 16:09:49:478 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : -----------------------------------------------
2018-04-06 16:09:49:478 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : ----------------------------------------------- Properties for object nil description
2018-04-06 16:09:49:479 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property errorDescription Value: Invalid access token: (null)
2018-04-06 16:09:49:479 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property description Value: (null)
2018-04-06 16:09:49:479 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property error Value: invalid_token
2018-04-06 16:09:49:480 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property type Value: (null)
2018-04-06 16:09:49:480 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property serverResponse Value: (null)
2018-04-06 16:09:49:480 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property errorCode Value: (null)
2018-04-06 16:09:49:481 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property errorMessage Value: (null)
2018-04-06 16:09:49:481 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : Property error_desc Value: (null)
2018-04-06 16:09:49:482 SanyogTravel[9343:225124] [CitrusPay SDK] Version 4.1.8 : -----------------------------------------------

JSON Model is directly added in framework

Hi

JSONModel is directly added in framework causing error while using with project with jsonmodel as dependency, can you remove it from framework and add as dependency in podspec?

full bitcode issue while generating bundle

Encountered issue when archived with bitcode.

bitcode bundle could not be generated because '/Users/sarav/Desktop/housejoy/Pods/CitrusPay/CitrusPay-Framework/CitrusPay.framework/CitrusPay(CTSProfilePrepaidRes.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture armv7

Issue while Initialising

While Initialising

Error im getting

*** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
*** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
*** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL

And it crashes while binding user (requestBindUsername)

dyld: Library not loaded: Error

dyld: Library not loaded: @rpath/JSONModel.framework/JSONModel
Referenced from: /Users/ajayjha/Library/Developer/Xcode/DerivedData/CitrusDemoX-dleqkcznphjcmhcvcffxqczmrlpt/Build/Products/Debug-iphonesimulator/PlugNPlay.framework/PlugNPlay
Reason: image not found
Also added inside the Embedded Binaries section located in the Xcode project under the tab Target / General.

CRASH while initiating payment v4.1.7

There is a crash while calling the method

- (void)requestSimpliPay:(PaymentType *)paymentType
 andParentViewController:(UIViewController *)controller
       completionHandler:(CTSSimpliPayCompletionHandler)completion

in the latest version 4.1.7.

The console shows the following logs -

2017-10-31 00:07:24.569 [Warning] > [CitrusPay SDK] Version 4.1.7 : prepaid signin token Expired
2017-10-31 00:07:24.571 [Error] > [CitrusPay SDK] Version 4.1.7 : validation error 7000

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<CitrusPay.CTSHUDSystemActivityIndicatorView: 0x7f8b335072f0; frame = (0 0; 125 100); clipsToBounds = YES; layer = <CALayer: 0x60c00042ffa0>> has been added as a subview to <CitrusPay.FrameView: 0x7f8b2a27d6e0; baseClass = UIVisualEffectView; frame = (0 0; 125 100); clipsToBounds = YES; alpha = 0.6; autoresize = LM+RM+TM+BM; layer = <CALayer: 0x6040004221e0>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView.'

Here is stack trace

*** First throw call stack:

(

0   CoreFoundation                      0x00000001095101cb __exceptionPreprocess + 171

1   libobjc.A.dylib                     0x000000010e6baf41 objc_exception_throw + 48

2   CoreFoundation                      0x0000000109515362 +[NSException raise:format:arguments:] + 98

3   Foundation                          0x000000010abd2089 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193

4   UIKit                               0x000000010c70443f -[UIVisualEffectView _addSubview:positioned:relativeTo:] + 379

5   CitrusPay                           0x0000000108deefed _T09CitrusPay6CTSHUDC11contentViewSo6UIViewCfsTf4gn_n + 349

6   CitrusPay                           0x0000000108deb73e _T09CitrusPay14CTSProgressHUDC18showSystemActivityyyFZTo + 142

7   libdispatch.dylib                   0x00000001105103f7 _dispatch_call_block_and_release + 12

8   libdispatch.dylib                   0x000000011051143c _dispatch_client_callout + 8

9   libdispatch.dylib                   0x000000011051c6f0 _dispatch_main_queue_callback_4CF + 628

10  CoreFoundation                      0x00000001094d2ef9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9

11  CoreFoundation                      0x0000000109497662 __CFRunLoopRun + 2402

12  CoreFoundation                      0x0000000109496a89 CFRunLoopRunSpecific + 409

13  GraphicsServices                    0x000000011293a9c6 GSEventRunModal + 62

14  UIKit                               0x000000010c116d30 UIApplicationMain + 159

15  iOSConsumerApp                      0x0000000106bb67d7 main + 55

16  libdyld.dylib                       0x000000011058dd81 start + 1

)

libc++abi.dylib: terminating with uncaught exception of type NSException

@vipin04 @mukesh122 @YadneshCitrus Please look into this!

'JSONModel.h' file not found

I tried installing using cocoa pods. After installing, I imported bridging header as #import "CitrusPay/CitrusPay.h"
After compiling it gives an error as 'JSONModel.h' file not found so I had to add this framework manually by dragging respective files and folders.

Crash

[NSTaggedPointerString rangeOfString:options:range:locale:]: nil argument'

Token expiry issue

I'm trying to sign the user in through requestMasterLink and get a limited access token . The SDK prints that the user is signed in and I receive the token successfully, but am not able to use it further since the SDK shows it as expired. For example, isLoggedIn prints prepaid signin token Expired.

Here's the debug output. I have scrubbed sensitive info off it.
Debug output:

2016-09-07 13:37:39.085 *[11605:746377] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-07 13:37:39.085 *[11605:746377] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-07 13:37:39.085 *[11605:746377] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-07 13:37:39.087 *[11605:746377] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-07 13:37:39.087 *[11605:746377] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2016-09-07 13:37:39.087 *[11605:746377] CitrusPay SDK v4.0.0 : Key signup_oauth_token value ********************
2016-09-07 13:37:39.088 *[11605:746377] CitrusPay SDK v4.0.0 : ----------------------------------------------- Properties for object <CTSRestCoreRequest: 0x7fb57dd94c70>
2016-09-07 13:37:39.088 *[11605:746377] CitrusPay SDK v4.0.0 : Property requestJson Value: {"email":"*","client_id":"**********-signin","mobile":"*","scope":"LIMITED","client_secret":"**********************"}
2016-09-07 13:37:39.088 *[11605:746377] CitrusPay SDK v4.0.0 : Property urlPath Value: /service/um/find_or_create/user
2016-09-07 13:37:39.089 *[11605:746377] CitrusPay SDK v4.0.0 : Property parameters Value: (null)
2016-09-07 13:37:39.089 *[11605:746377] CitrusPay SDK v4.0.0 : Property headers Value: {
    Authorization = "Bearer *******************";
}
2016-09-07 13:37:39.089 *[11605:746377] CitrusPay SDK v4.0.0 : Property requestId Value: -1
2016-09-07 13:37:39.089 *[11605:746377] CitrusPay SDK v4.0.0 : Property httpMethod Value: 1
2016-09-07 13:37:39.090 *[11605:746377] CitrusPay SDK v4.0.0 : Property index Value: -1
2016-09-07 13:37:39.090 *[11605:746377] CitrusPay SDK v4.0.0 : Property isAlternatePath Value: 0
2016-09-07 13:37:39.090 *[11605:746377] CitrusPay SDK v4.0.0 : -----------------------------------------------
2016-09-07 13:37:39.091 *[11605:746377] CitrusPay SDK v4.0.0 :  setting header Bearer ***************, for key Authorization
2016-09-07 13:37:39.091 *[11605:746377] CitrusPay SDK v4.0.0 :  setting header application/json, for key Content-Type
2016-09-07 13:37:39.091 *[11605:746377] CitrusPay SDK v4.0.0 : URL > <NSMutableURLRequest: 0x7fb57de34220> { URL: https://admin.citruspay.com/service/um/find_or_create/user } 
2016-09-07 13:37:39.091 *[11605:746377] CitrusPay SDK v4.0.0 : restRequest JSON> {"email":"roshan@*.com","client_id":"*********-signin","mobile":"*","scope":"LIMITED","client_secret":"***************"}
2016-09-07 13:37:39.224 *[11605:748452] CitrusPay SDK v4.0.0 : allHeaderFields {
    "Access-Control-Allow-Headers" = "Authorization,Origin,X-Requested-With,Content-Type,Accept,merchantAccessKey,requestSignature,access_key";
    "Access-Control-Allow-Methods" = "POST, GET, OPTIONS, DELETE, PUT";
    "Access-Control-Allow-Origin" = "*";
    "Access-Control-Max-Age" = 3600;
    Connection = "Keep-Alive";
    "Content-Encoding" = gzip;
    "Content-Type" = "application/json;charset=UTF-8";
    Date = "Wed, 07 Sep 2016 08:02:27 GMT";
    "Keep-Alive" = "timeout=5, max=100";
    Server = Apache;
    "Transfer-Encoding" = Identity;
    Vary = "Accept-Encoding";
}
2016-09-07 13:37:39.224 *[11605:748452] CitrusPay SDK v4.0.0 : updated 1
2016-09-07 13:37:39.224 *[11605:748452] CitrusPay SDK v4.0.0 : ----------------------------------------------- Properties for object <CTSRestCoreResponse: 0x7fb57d9e1660>
2016-09-07 13:37:39.224 *[11605:748452] CitrusPay SDK v4.0.0 : Property responseString Value: {"responseCode":"R-222-03","responseMessage":"User signed in with limited scope token","responseData":{"limitedAccessToken":{"access_token":"*","token_type":"bearer","refresh_token":"*","expires_in":10035206,"scope":"identity merchant_wallet profile prepaid_merchant"},"profileData":{"email":"*","emailVerified":1,"emailVerifiedDate":1467718554000,"mobile":"*","mobileVerified":1,"mobileVerifiedDate":1472737037000,"firstName":"","lastName":"","uuid":"*"}}}
2016-09-07 13:37:39.225 *[11605:748452] CitrusPay SDK v4.0.0 : Property requestId Value: -1
2016-09-07 13:37:39.225 *[11605:748452] CitrusPay SDK v4.0.0 : Property indexData Value: -1
2016-09-07 13:37:39.225 *[11605:748452] CitrusPay SDK v4.0.0 : Property data Value: (null)
2016-09-07 13:37:39.225 *[11605:748452] CitrusPay SDK v4.0.0 : Property error Value: (null)
2016-09-07 13:37:39.225 *[11605:748452] CitrusPay SDK v4.0.0 : -----------------------------------------------
2016-09-07 13:37:39.226 *[11605:748452] CitrusPay SDK v4.0.0 : genResponse <CTSResponse> 
   [responseCode]: R-222-03
   [responseData]: {
       limitedAccessToken =     {
           "access_token" = "*";
           "expires_in" = 10035206;
           "refresh_token" = "*";
           scope = "identity merchant_wallet profile prepaid_merchant";
           "token_type" = bearer;
       };
       profileData =     {
           email = "*";
           emailVerified = 1;
           emailVerifiedDate = 1467718554000;
           firstName = "";
           lastName = "";
           mobile = *;
           mobileVerified = 1;
           mobileVerifiedDate = 1472737037000;
           uuid = *;
       };
   }
   [responseMessage]: User signed in with limited scope token
</CTSResponse>
2016-09-07 13:37:39.226 *[11605:748452] CitrusPay SDK v4.0.0 : genResponse {
    "access_token" = "*";
    "expires_in" = 10035206;
    "refresh_token" = "*";
    scope = "identity merchant_wallet profile prepaid_merchant";
    "token_type" = bearer;
}
2016-09-07 13:37:39.226 *[11605:748452] CitrusPay SDK v4.0.0 : genResponse {
    email = "*";
    emailVerified = 1;
    emailVerifiedDate = 1467718554000;
    firstName = "";
    lastName = "";
    mobile = *;
    mobileVerified = 1;
    mobileVerifiedDate = 1472737037000;
    uuid = *;
}
2016-09-07 13:37:39.227 *[11605:748452] CitrusPay SDK v4.0.0 : Storing Login Id *

PlugNPlay sdk framework can't be imported in xcode 8.3.2

Module compiled with Swift 3.0.2 cannot be imported in Swift 3.1 For PlugNPlay SDK. Please provide a new release for PlugNPlay SDK with swift 3.1 support.
it is working fine in Simulator but it showing an error if you run in device Module compiled with Swift 3.0.2 cannot be imported in Swift 3.1

My Xcode version is 8.3.2
iPhone Device version is 10.3.1 and 10.2.1

screen shot 2017-05-04 at 5 35 40 pm

Thanks

How to integrate Citrus Quick payment for credit card and debit card without asking user to login in IOS?

I am trying to integrate CitrusPay SDK to my iPhone application. How can i integrate CitrusPay Direct payment without asking user to login to citrus pay.

I want to give options to user like :

Pay using Citrus Wallet
Pay using Creditcard/Debit Card
Pay using Net banking
If user would like to pay using Citrus Wallet then i will ask user to login to citrus using their credentials. If they will go with 2nd or 3rd option like pay using Credit Card/Debit Card or net banking then they don't need to login.

I want to implement this function in my app using CitrusPay SDK. Can you point out me for the code of this?

I already have a demo of the Citrus pay and i already checked it.

https://github.com/citruspay/citruspay-ios-sdk

I downloaded the demo from the above link.

Please help me out for this.

ERROR WHILE DOING PAYMENT

2017-07-28 12:22:53.841 Citrus[3130:652924] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2017-07-28 12:22:53.841 Citrus[3130:652924] *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
2017-07-28 12:22:53.842 [Warning] > [CitrusPay SDK] Version 4.1.6 : prepaid signin token Expired
success: Optional(Error Domain=com.citrus.errorDomain Code=7018 "Zero or More than one payment instruments.
Please setup only one payment instrument." UserInfo={NSLocalizedDescription=Zero or More than one payment instruments.
Please setup only one payment instrument.})
2017-07-28 12:22:53.868 [Error] > [CitrusPay SDK] Version 4.1.6 : Local Validation error : Error Domain=com.citrus.errorDomain Code=7018 "Zero or More than one payment instruments.
Please setup only one payment instrument." UserInfo={NSLocalizedDescription=Zero or More than one payment instruments.
Please setup only one payment instrument.}

Server threw an error code 500

Citrus login and every thing is working as expected. Now i am getting 500 server error on login.
Please resolve the issue as soon as possible. Let me know why this happen.

Server threw an error code 500

[CitrusGraphics] Version 1.1.2 : Prefetched : MCRD, MTRO, VISA, RPAY & AMEX
[CitrusGraphics] Version 1.1.2 : Prefetched : CID005, CID010, CID001, CID002, CID033 & CID036
2017-06-22 14:52:21.430 [Warning] > [CitrusPay SDK] Version 4.1.5 : no encryption key found
2017-06-22 14:52:21.457 [Warning] > [CitrusPay SDK] Version 4.1.5 : prepaid signin token Expired
2017-06-22 14:52:25.649 [Error] > [CitrusPay SDK] Version 4.1.5 : validation error 7000

Bill URL generate for ios

[CitrusPay SDK] Version 4.1.8 : Property error Value: Error Domain=com.citrus.errorDomain Code=7007 "Server threw an error
code 401" UserInfo={NSLocalizedDescription=Server threw an error
code 401}

Bill URL issue

I am trying append custom parameters to the bill url and pass that bill
url to the sdk.
e.g.
https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php?id=10

In Android CitrusPaySDK on doing this way the amount parameter is appended to the url as
[https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php
?id=10&amount=3.00](https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php
?id=10&amount=3.00)

But iOS SDK is not checking whether there is already a parameter in url and it appends amount to the url to form the request url like below
[https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php
?id=10?amount=3.00](https://salty-plateau-1529.herokuapp.com/billGenerator.sandbox.php
?id=10?amount=3.00)

Because of this error is occurring in Bill Generator. Please fix this logic issue in your SDK ASAP.

CitrusGraphics do not works with xcode 9.1 and Swift 4.0.2

module compiled with Swift 4.0 cannot be imported in Swift 4.0.2: /Users/dhaval.sabhaya/Desktop/Swift4.0/eCube/Pods/CitrusGraphics/Framework/graphics-sdk/CitrusGraphics.framework/Modules/CitrusGraphics.swiftmodule/x86_64.swiftmodule

Support for Swift 4.0.3

We are unable to use CitrusPay in the latest version of Xcode (9.2).
Please release a new version complied with the latest Xcode using Swift 4.0.3

Module compiled with Swift 4.0 cannot be imported in Swift 4.0.3: /Users/Shantanu/Documents/Demo/Pods/CitrusPay/Framework/core-sdk/CitrusPay.framework/Modules/CitrusPay.swiftmodule/arm64.swiftmodule

getting this issue [CitrusPay SDK v3.1.3]

[CitrusPay SDK v3.1.3]
Error Domain=com.citrus.errorDomain Code=7007 "Server threw an error
code 500" UserInfo={NSLocalizedDescription=Server threw an error
code 500, CTSServerErrorDescription=(null description)}
i am getting this issue

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.