naoufal / react-native-payments

Accept Payments with Apple Pay and Android Pay using the Payment Request API.
https://www.npmjs.com/package/react-native-payments
1.59k stars 413 forks source link

This library is dead #224

Closed l1fe closed 3 years ago

l1fe commented 4 years ago

I feel very annoyed! Looks like it's the only library that implements Apple Pay in React Native. It has a lot of stars but in fact it's dead. I already encountered a lot of problems and had to fix it with custom forks. However, i don't have enough knowledge in native app development, to come up with a stable build.

Are there any other options to use?

nabilfreeman commented 4 years ago

We've managed to use this library with great success at https://lesalon.com/app with the fork I made here: https://github.com/naoufal/react-native-payments/pull/133

Which worked perfectly up to RN 59. I'm actually here because I'm in the middle of an app rewrite to 0.61 and this is not compatible with autolinking any more so I'm going to patch my library more.

I'll post here if I can get it stable, otherwise I'm in the same boat.

l1fe commented 4 years ago

I am trying to make it work with 0.61 without success :/

On Mon, 30 Mar 2020 at 11:34, Freeman notifications@github.com wrote:

We've managed to use this library with great success with the fork I made here: #133 https://github.com/naoufal/react-native-payments/pull/133

Which worked perfectly up to RN 59. I'm actually here because I'm in the middle of an app rewrite to 0.61 and this is not compatible with autolinking any more so I'm going to patch my library more.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/naoufal/react-native-payments/issues/224#issuecomment-605890777, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBU4MWAQKQP4N73I7AQXVTRKBRRJANCNFSM4LV7KODQ .

-- All best, Igor Naumov

nabilfreeman commented 4 years ago

Try changing your package.json to this:

"react-native-payments": "github:nabilfreeman/react-native-payments#package-json-hack",

I managed to get autolinking working. There might be some more changes to make. Just testing in simulator now.

If I get it working I'm going to kill all the old Carthage stuff and probably temporarily drop Android support so we can get a polished RN60+ library working for Apple Pay.

At my business we've got the resources to maintain this going forward which we'll either do via a fork or maybe @naoufal could set us up as a maintainer on this project (and npm).

ssolders commented 4 years ago

Thanks @nabilfreeman! Got it to work, but had to manually update the path in my Podfile

From

pod 'ReactNativePayments', :path => '../node_modules/react-native-payments'

To

pod 'ReactNativePayments', :path => '../node_modules/react-native-payments/lib/ios'

Then clean Xcode build folder (cmd+shift+alt+k) and build.

maljuburi commented 4 years ago

@nabilfreeman @ssolders Thanks guys, I was pulling my hair out.

you saved my life 🚀 . Those were my steps:

Those should have it running.

Happy coding!

nabilfreeman commented 4 years ago

Hi all, just an update on my work on this library...

If you are working with my fork, please keep using the #package-json-hack branch and you will get the necessary fixes for Android (working on this now) and I will make sure there are no breaking changes there.

To be honest the library has been built very well so I have only had to make small adjustments so far.

My plan is to:

1) Get Android autolinking and builds passing (but not verified to be working) 2) Update documentation for RN60+ steps, both iOS and Android 3) Do outstanding jobs on iOS implementation

If I can pull that off successfully then I think we will have a really high quality library and then we can think about unit testing and regular updates to keep up with React Native.

I'll maintain the fork as long as https://lesalon.com/app is operating.

Ideally we can get this merged here and a major npm version published. @naoufal

chrisparton1991 commented 4 years ago

@nabilfreeman Thanks for sharing your fork!

I sent a tweet to @naoufal (and messaged you on LinkedIn). To be clear, I have no authority here whatsoever.

I feel bad about prodding an OSS maintainer since I know how draining OSS can be, especially when life is busy with more important things. That said, if we can find an arrangement that will keep this library alive, it will be a big win for the community.

The only current alternative I'm aware of is the Expo Payments library. It requires Expo or ExpoKit so it's a non-starter for a lot of projects.

QuintonC commented 4 years ago

Chiming in here as well.

We're working on an application that allows users to make payments on orders and have been through quite a few packages already.

Starting with react-native-braintree-dropin-ui, then react-native-braintree-xplat, then to this one. This one has seemed most promising so far until I ran into some issues. Then I found @nabilfreeman 's comment which is a working solution so far.

We normally only use Braintree, but have had to resort to Stripe for the time being. Any timeline for Braintree support, Nabil?

esinanturan commented 4 years ago

I am having problem on android ( havent tested yet on ios ) when I call show method I get promise rejection error and it doesnt have any error message in it "Possible Unhandled Promise Rejection (id: 0): 10" and when i invoke the method second time it gies invalidState error I am using https://payments.developers.google.com/paymentmethodtoken/test/keys.json this as public key for testing but still recieving this problem and not sure if this is the right public key to use

I solved the problem using another public key which given here : https://developers.google.com/pay/api/android/guides/resources/payment-data-cryptography#using-openssl

payment screen appears but none of my credit cards appear to make payment and it just says " to make purchaces using android pay set up your cards in the Android pay app" but my cards are already set in the app

ryanvanderpol commented 4 years ago

@esinanturan were you able to resolve the Android issue? Based on an earlier comment from @nabilfreeman it seems that Android / Google Pay is currently not supported.

Have there been any changes in RN support for Apple Pay/Google Pay? As @chrisparton1991 noted, the only other library I've found is Expo Payments, which, as stated, is a non-starter for me.

nabilfreeman commented 4 years ago

Hey all, I'll just respond to some questions: @QuintonC I've set the Podfile to implement the Braintree SDK as a dependency and looking through the native iOS code there were some fairly good provisions for Braintree. What error are you having? Would be interesting to know if it's crash, not responding, JS error etc. The SDK might have changed a lot and bridge needs adjusting.

Google Pay hasn't come up on our roadmap yet (we have a few things to sort out first to relaunch post-lockdown in July) so I haven't looked at it, but can confirm that cross-platform apps will build without failure on Android if you forgo Google Pay.

@ryanvanderpol I think the best alternative at this time is https://github.com/tipsi/tipsi-stripe who are very active. Stripe-only. You can try these examples: https://github.com/tipsi/tipsi-stripe/blob/master/example/src/scenes/ApplePayScreen.js https://github.com/tipsi/tipsi-stripe/blob/master/example/src/scenes/AndroidPayScreen.js

I considered switching over to them when we did our RN upgrade in April but decided it was easier to fix this library which suits our needs really well.

@esinanturan that's really great progress. Did you have to make any changes to the code for this library? The way I'd approach this is to look at the Java library here and compare to the main Google Pay documentation to see if implementation has changed in the last couple of years. We might be quite close to a working solution.

Very happy that this is working for at least a few of you!!! 🎉

ryanvanderpol commented 4 years ago

Thanks for the quick and detailed reply, @nabilfreeman! Unfortunately, Stripe won't work for my use case. In fact Braintree won't either; I'm going to have to write a new integration with WorldPay, so I'm not sure I have much of a choice but to get this working. I would certainly appreciate any help!

esinanturan commented 4 years ago

Hey all, I'll just respond to some questions: @QuintonC I've set the Podfile to implement the Braintree SDK as a dependency and looking through the native iOS code there were some fairly good provisions for Braintree. What error are you having? Would be interesting to know if it's crash, not responding, JS error etc. The SDK might have changed a lot and bridge needs adjusting.

Google Pay hasn't come up on our roadmap yet (we have a few things to sort out first to relaunch post-lockdown in July) so I haven't looked at it, but can confirm that cross-platform apps will build without failure on Android if you forgo Google Pay.

@ryanvanderpol I think the best alternative at this time is https://github.com/tipsi/tipsi-stripe who are very active. Stripe-only. You can try these examples: https://github.com/tipsi/tipsi-stripe/blob/master/example/src/scenes/ApplePayScreen.js https://github.com/tipsi/tipsi-stripe/blob/master/example/src/scenes/AndroidPayScreen.js

I considered switching over to them when we did our RN upgrade in April but decided it was easier to fix this library which suits our needs really well.

@esinanturan that's really great progress. Did you have to make any changes to the code for this library? The way I'd approach this is to look at the Java library here and compare to the main Google Pay documentation to see if implementation has changed in the last couple of years. We might be quite close to a working solution.

Very happy that this is working for at least a few of you!!! 🎉

I didn't make any changes just used the branch that you shared up there but could not succeed none of the credit or debit cards associated with my account appears for payment or testing. and I think android google payment library changed i see native apps using 'com.android.billingclient:billing:3.0.0' dependency for payments, I think we should implement a package for this dependency

Bensigo commented 4 years ago

@nabilfreeman I followed you step but when I click on the Apple Pay button my app crashes.

Bensigo commented 4 years ago

?

nabilfreeman commented 4 years ago

Hey Bensigo,

Not sure why it’s trying to open an App Store URL. Not what I’d expect at all. Did you integrate Stripe or Braintree?

Feel free to paste the payment request options here and the code you are using the invoke Apple Pay and I’ll try and advise.

Nabil Try my at-home beauty app, LeSalon. £29 off your first booking using code FREEMAN at checkout! Google it for web / app store links. ( https://freemans.website/ )

On Sat, 15 Aug 2020 at 12:05 Bensigo Egwey < Bensigo Egwey ( Bensigo Egwey notifications@github.com ) > wrote:

?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub ( https://github.com/naoufal/react-native-payments/issues/224#issuecomment-674383253 ) , or unsubscribe ( https://github.com/notifications/unsubscribe-auth/AAS3GA26G7X4MEKC5COMBXLSAZTWHANCNFSM4LV7KODQ ).

Bensigo commented 4 years ago

Hey Bensigo, Not sure why it’s trying to open an App Store URL. Not what I’d expect at all. Did you integrate Stripe or Braintree? Feel free to paste the payment request options here and the code you are using the invoke Apple Pay and I’ll try and advise. Nabil Try my at-home beauty app, LeSalon. £29 off your first booking using code FREEMAN at checkout! Google it for web / app store links. ( https://freemans.website/ ) On Sat, 15 Aug 2020 at 12:05 Bensigo Egwey < Bensigo Egwey ( Bensigo Egwey @.***> ) > wrote: ? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub ( #224 (comment) ) , or unsubscribe ( https://github.com/notifications/unsubscribe-auth/AAS3GA26G7X4MEKC5COMBXLSAZTWHANCNFSM4LV7KODQ ).

I'm trying to use it with a third party payment processor, I have the code below on button click by app crashes instead of rendering the Apple pay view @nabilfreeman


const METHOD_DATA = [
      {
        supportedMethods: ['apple-pay'],
        data: {
          merchantIdentifier: 'XXXX.XXX.XXX.app',
          supportedNetworks: ['visa', 'mastercard', 'mada'],
          countryCode: 'US',
          currencyCode: 'USD',
        },
      },
    ];
    const DETAILS = {
      id: 'test-example',
      displayItems: [
        {
          label: 'Movie Ticket',
          amount: { currency: 'USD', value: '15.00' },
        },
      ],
      total: {
        label: 'XXX HQ',
        amount: { currency: 'USD', value: '215.00' },
      },
    }; 
try {
      const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS);
      const paymentResponse = await paymentRequest.show();
      if (paymentResponse) {
        const { paymentToken } = paymentResponse.details;
        console.log(paymentToken);
      }
    } catch (err) {
      console.log(err);
    }```
Bensigo commented 4 years ago

please is something missing?

ssolders commented 4 years ago

Experiencing the same after upgrading to ios 13.6.1

nabilfreeman commented 4 years ago

Uh oh... Maybe something broke. I think we are still compiling on an older SDK version. Tomorrow we are doing a native release so I'll reply with some more info then.

If anybody debugs and finds any helpful errors or crashes let me know!

Nabil Try my at-home beauty app, LeSalon. £29 off your first booking using code FREEMAN at checkout! Google it for web / app store links. ( https://freemans.website/ )

On Thu, Sep 3rd, 2020 at 12:49 PM, Simon Solders notifications@github.com wrote:

Experiencing the same after upgrading to ios 13.6.1

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub ( https://github.com/naoufal/react-native-payments/issues/224#issuecomment-686435631 ) , or unsubscribe ( https://github.com/notifications/unsubscribe-auth/AAS3GA5UBSTMJZZB5ZUPMPDSD57EHANCNFSM4LV7KODQ ).

ssolders commented 4 years ago

This is the stack trace I get when running the app in simulator - same crash behaviour. The apple pay gui shows up briefly before the app crashes.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <PKPaymentAuthorizationViewController: 0x7feed9d27040>.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23c7127e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff513fbb20 objc_exception_throw + 48
    2   UIKitCore                           0x00007fff47a25b1a -[UIViewController _presentViewController:withAnimationController:completion:] + 5247
    3   UIKitCore                           0x00007fff47a2801b __63-[UIViewController _presentViewController:animated:completion:]_block_invoke + 98
    4   UIKitCore                           0x00007fff47a42124 -[_UIViewControllerTransitionCoordinator _applyBlocks:releaseBlocks:] + 294
    5   UIKitCore                           0x00007fff47a3e1f2 -[_UIViewControllerTransitionContext _runAlongsideCompletions] + 126
    6   UIKitCore                           0x00007fff47a3df57 -[_UIViewControllerTransitionContext completeTransition:] + 104
    7   UIKitCore                           0x00007fff485316a4 -[UITransitionView notifyDidCompleteTransition:] + 247
    8   UIKitCore                           0x00007fff48531327 -[UITransitionView _didCompleteTransition:] + 1423
    9   UIKitCore                           0x00007fff4856b908 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 671
    10  UIKitCore                           0x00007fff4853bf31 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 268
    11  UIKitCore                           0x00007fff4853c4a3 -[UIViewAnimationState animationDidStop:finished:] + 259
    12  UIKitCore                           0x00007fff4853c62a -[UIViewAnimationState animationDidStop:finished:] + 650
    13  QuartzCore                          0x00007fff2b14496c _ZN2CA5Layer23run_animation_callbacksEPv + 306
    14  libdispatch.dylib                   0x000000011064dd48 _dispatch_client_callout + 8
    15  libdispatch.dylib                   0x000000011065bde6 _dispatch_main_queue_callback_4CF + 1500
    16  CoreFoundation                      0x00007fff23bd4049 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    17  CoreFoundation                      0x00007fff23bceca9 __CFRunLoopRun + 2329
    18  CoreFoundation                      0x00007fff23bce066 CFRunLoopRunSpecific + 438
    19  GraphicsServices                    0x00007fff384c0bb0 GSEventRunModal + 65
    20  UIKitCore                           0x00007fff48092d4d UIApplicationMain + 1621
    21  cashierapp                          0x000000010f01efd1 main + 97
    22  libdyld.dylib                       0x00007fff5227ec25 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
kowalski commented 4 years ago

For anyone who stumbles upon this issue: I was able to get Apple Pay + Stripe to work following the steps from https://github.com/naoufal/react-native-payments/issues/224#issuecomment-618535392 @maljuburi post from April. Thanks!

ssolders commented 4 years ago

@kowalski even for iOS 13.x? Without your app crashing on applepay init?

kowalski commented 4 years ago

@ssolders I'm testing this on 13.6.1 and it didn't crash. Perhaps the trick is that I'm not calling applepay init.

My whole interaction to show the payment looks as follows:

  const merchantOptions = [{
    supportedMethods: ['apple-pay'],
    data: {
      merchantIdentifier: 'merchant.id.verifi.guestapp',
      supportedNetworks: ['visa', 'mastercard'],
      countryCode: 'GB',
      currencyCode: 'GBP',
      paymentMethodTokenizationParameters: {
        parameters: {
          gateway: 'stripe',
          'stripe:publishableKey': Config.STRIPE_PUB_KEY,
        }
      }
    }
  }];
  const summaryItems = {
    id: 'selfi-purchase',
    displayItems: [
      {
        label: 'Additional Selfi',
        amount: { currency: 'GBP', value: '0.99'},
      }
    ],
    total: {
      label: 'VerifiId',
      amount: { currency: 'GBP', value: '0.99'},

    }
  }
  const paymentRequest = new PaymentRequest(merchantOptions, summaryItems);
  const paymentResponse = await paymentRequest.show();
giautm commented 4 years ago

please try another library from Expo team: https://docs.expo.io/versions/latest/sdk/in-app-purchases/

nabilfreeman commented 4 years ago

Awesome, thank you for sharing that @kowalski!

I'm really interested to see Carthage being used because I did my refactor with Cocoapods in mind - if you use Pods it actually installs the Stripe and Braintree dependencies automatically. So anybody using Carthage, YMMV because I don't have any experience with it.

Just for some extra context here's my code...

const config = {
    supportedMethods: ['apple-pay'],
    data: {
        merchantIdentifier: 'merchant.com.example.bundle',
        merchantId: 'merchant.com.example.bundle',
        supportedNetworks: ['visa', 'mastercard', 'amex'],
        countryCode: 'GB',
        currencyCode: 'GBP',
        paymentMethodTokenizationParameters: {
            parameters: {
                gateway: 'stripe',
                'stripe:publishableKey': Config.STRIPE_KEY,
                'stripe:version': '14.0.0', // Required for Android according to docs, seems to do nothing on iOS but I'm scared to delete
            },
        },
    },
};

const details = {
    id: 'lesalon-checkout',
    displayItems,
    total: {
        label: 'LeSalon',
        amount: { currency: 'GBP', value: price / 100 },
    },
};

let card_token = null;

try {
    const paymentRequest = new PaymentRequest(config, details);

    const result = await paymentRequest.show();

    card_token = result.details.paymentToken;

    // dismiss the window.
    result.complete('success');

    // seems that we need to wait a bit for the sheet to dismiss without interruption.
    await new Promise(resolve => setTimeout(resolve, 2000));
} catch (error) {
    console.log('Failed to process Apple Pay:', error.message);

    switch (error.message) {
        case 'AbortError':
            // we need to cancel the Apple Pay request, but not send an error message.
            dispatch(applePayCardCreateError(null));
            break;
        default:
            dispatch(applePayCardCreateError(error.message));
            break;
    }

    return;
}

console.log(card_token) // send this to server to create a payment source or one-off charge

There's no other setup anywhere in JS code. Just configuring Stripe in AppDelegate and merchant settings in Xcode.

ramisalem commented 3 years ago

@nabilfreeman Thanks for the fork, I have a question, please Can I use this package with the Payfort payment gateway? or only it supports Stripe and Braintree

Thanks

nabilfreeman commented 3 years ago

@ramisalem no problem, currently only Stripe and Braintree are supported. To integrate Payfort you would need to add its SDK as a dependency to Podfile and edit the bridge library here:

https://github.com/nabilfreeman/react-native-payments/blob/master/packages/react-native-payments/lib/ios/GatewayManager.m

nabilfreeman commented 3 years ago

Hi all, after a few months neither I nor a few other collaborators have managed to make contact with @naoufal.

I think the best step is to re-launch this library with code fixes as a new Node module. Then we can have a fresh slate of issues to integrate other payment processors, easily keep things compatible with iOS 14 and onwards, and get Google Pay verified to be working.

I'm having trouble picking a library name. How does react-native-biometric-payments sound?

I think it would help keep the scope of the library specific.

Let me know your thoughts!

p.s. Naoufal, thanks for everything so far, we'll do our best to carry on the legacy!

ssolders commented 3 years ago

Hi, think that's reasonable, and thanks for doing this! Naming is hard, especially when the ideal name is already taken by this lib :)

How about react-native-origin-payments, or react-native-endemic-payments

A bit of double layering with native/origin/endemic but could work?

Guess the payments can be verified using biometric but not required and not used by all. For me naming the module biometric is a bit confusing to what the module actually does.

kowalski commented 3 years ago

Throwing in: react-native-pay ?

ssolders commented 3 years ago

Throwing in: react-native-pay ?

Taken by @naoufal I'm afraid :(

https://www.npmjs.com/package/react-native-pay

kowalski commented 3 years ago

Throwing in: react-native-pay ?

Taken by @naoufal I'm afraid :(

https://www.npmjs.com/package/react-native-pay

Oops!

kowalski commented 3 years ago

Maybe @react-native/payments ?

ramisalem commented 3 years ago

@nabilfreeman here are some thoughts

ramisalem commented 3 years ago

Awesome, thank you for sharing that @kowalski!

I'm really interested to see Carthage being used because I did my refactor with Cocoapods in mind - if you use Pods it actually installs the Stripe and Braintree dependencies automatically. So anybody using Carthage, YMMV because I don't have any experience with it.

Just for some extra context here's my code...

const config = {
  supportedMethods: ['apple-pay'],
  data: {
      merchantIdentifier: 'merchant.com.example.bundle',
      merchantId: 'merchant.com.example.bundle',
      supportedNetworks: ['visa', 'mastercard', 'amex'],
      countryCode: 'GB',
      currencyCode: 'GBP',
      paymentMethodTokenizationParameters: {
          parameters: {
              gateway: 'stripe',
              'stripe:publishableKey': Config.STRIPE_KEY,
              'stripe:version': '14.0.0', // Required for Android according to docs, seems to do nothing on iOS but I'm scared to delete
          },
      },
  },
};

const details = {
  id: 'lesalon-checkout',
  displayItems,
  total: {
      label: 'LeSalon',
      amount: { currency: 'GBP', value: price / 100 },
  },
};

let card_token = null;

try {
  const paymentRequest = new PaymentRequest(config, details);

  const result = await paymentRequest.show();

  card_token = result.details.paymentToken;

  // dismiss the window.
  result.complete('success');

  // seems that we need to wait a bit for the sheet to dismiss without interruption.
  await new Promise(resolve => setTimeout(resolve, 2000));
} catch (error) {
  console.log('Failed to process Apple Pay:', error.message);

  switch (error.message) {
      case 'AbortError':
          // we need to cancel the Apple Pay request, but not send an error message.
          dispatch(applePayCardCreateError(null));
          break;
      default:
          dispatch(applePayCardCreateError(error.message));
          break;
  }

  return;
}

console.log(card_token) // send this to server to create a payment source or one-off charge

There's no other setup anywhere in JS code. Just configuring Stripe in AppDelegate and merchant settings in Xcode.

so far I got the payment sheat showing up in my simulator but after building the app I got an Abort error without showing the payment sheat I did check if the user can make a payment or not by the following code

const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS, OPTIONS);
 const  canMakePayment  = await  paymentRequest.canMakePayments(); 

The vlaue of canMakePayment is ture

l1fe commented 3 years ago

react-native-pay is okay

On Thu, 17 Sep 2020 at 12:21, Rami Bamaas notifications@github.com wrote:

@nabilfreeman https://github.com/nabilfreeman here are some thoughts -react-native-fun-payments

  • react-native-paymetns-intigration
  • react-native-hanlde-payments
  • easy-react-native-payments
  • react-native-made-easy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/naoufal/react-native-payments/issues/224#issuecomment-694140294, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBU4MWFWTLDQK3RNJC3UFTSGHPJ7ANCNFSM4LV7KODQ .

-- All best, Igor Naumov

nabilfreeman commented 3 years ago

@ramisalem AbortError is ok, this has happened in Simulator for the last couple of iOS versions. You need to use a real iOS device to test the tokenization part (use staging mode on Stripe/Braintree to prevent your card getting charged)

Thanks for the name ideas team!

kowalski commented 3 years ago

@ramisalem

I'm really interested to see Carthage being used because I did my refactor with Cocoapods in mind - if you use Pods it actually installs the Stripe and Braintree dependencies automatically. So anybody using Carthage, YMMV because I don't have any experience with it.

I noticed this comment of yours. I can confirm I'm not using Carthage in my build. The Stripe package is installed from Cocoapods and I think it's much better this way.

ramisalem commented 3 years ago

@nabilfreeman @klapperkopp Thanks guys my issue with the abort error was because of the merchantIdentifier, now I am able to show the payment sheat

ramisalem commented 3 years ago

@kowalski @nabilfreeman Is there anyone who is able to get payment method data in my case it is missing? The following is an example of “paymentMethod” :

“apple_paymentMethod”: {
“apple_displayName”: “Visa 0492”,
“apple_network”: “Visa”,
“apple_type”: “debit”
}  

what I obtained from the paymentRequest is

{
"paymentData": {
"version": "EC_v1",
"data": "string",
"signature": "string",
"header": {
"ephemeralPublicKey": "string",
"publicKeyHash": "string",
"transactionId": "string"
}
},
"transactionIdentifier": "string"
}

no payment method at all, earlier I integrated apple pay in the web and I was able to get it, any tips

Thanks

kowalski commented 3 years ago

I think that's what you get when not using payment processor. So assumption is that you act as payment proccesor. I think you should use Stripe, in which case you'll get a token that you can charge on your backend.

pt., 18 wrz 2020, 05:26 użytkownik Rami Bamaas notifications@github.com napisał:

@kowalski https://github.com/kowalski @nabilfreeman https://github.com/nabilfreeman Is there anyone who is able to get payment method data in my case it is missing? The following is an example of “paymentMethod” :

“apple_paymentMethod”: {

“apple_displayName”: “Visa 0492”,

“apple_network”: “Visa”,

“apple_type”: “debit”

}

what I obtained from the paymentRequest is

{

"paymentData": {

"version": "EC_v1",

"data": "string",

"signature": "string",

"header": {

"ephemeralPublicKey": "string",

"publicKeyHash": "string",

"transactionId": "string"

}

},

"transactionIdentifier": "string"

}

no payment method at all, earlier I integrated apple pay in the web and I was able to get it, any tips

Thanks

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/naoufal/react-native-payments/issues/224#issuecomment-694626462, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACGF6PQ6HU3S54W36L4DLTSGLHNTANCNFSM4LV7KODQ .

ramisalem commented 3 years ago

@kowalski Thanks for the answer I am using Payfort payment gateway, PaymentMethod is mandatory filed in Payfort request so I have to get it and send it along with paymentData to the back-end where the back-end sends the whole request to Payfort

I have a doubt if this library destructure the payment response and does not return PaymentMethod

kowalski commented 3 years ago

Honestly I don't know how to use this library with a different payment provider than Stripe. Looking how Stripe works, my guess would be that there are some native libraries for Payfort that have a method like "createFromApplePay" that would give you the PaymentMethod that you can use in charge request for Payfort.

So it would seem you are missing a layer, that translates ApplePay response to what Payfort expects.

ramisalem commented 3 years ago

@kowalski hmm one more question please I do not use PKPaymentButton from the library is that Okay?

kowalski commented 3 years ago

@ramisalem I'm not using it either

ramisalem commented 3 years ago

@kowalski Thanks

ramisalem commented 3 years ago

@kowalski @nabilfreeman Anyone knows what does this lib do when I do not pass the paymentMethodTokenizationParameters filed?

mrwerner392 commented 3 years ago

@nabilfreeman Thanks for all the work you have done to resurrect this! Have you released it as its own library yet? If not, are you still planning to do so?

ccanalesdote commented 3 years ago

I am very attentive to the launch of the new library @nabilfreeman thanks in advance