Giter Site home page Giter Site 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%
accept-payments citruspay-ios-sdk cocoapods payment-methods 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

Crash

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

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.

'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.

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

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 : -----------------------------------------------

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!

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.}

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

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

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)

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

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

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.

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.

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

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}

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?

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

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

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 *

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

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

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 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

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.

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.