GithubHelp home page GithubHelp logo

Comments (3)

amritk avatar amritk commented on May 20, 2024 1

@hsmith825 I just found this fork which should work for you too https://github.com/monoku/cordova-plugin-applepay-stripe

from cordova-plugin-applepay.

samkelleher avatar samkelleher commented on May 20, 2024

Hi @hsmith825 -
Making progress I see, the paymentData is the token. It comes out of the device base64 encoded, so if I decode your value I get the full JSON token:

{
    "version": "EC_v1",
    "data": "WaQlMtFKllg2lHPhnjVJsFu9lZuoRUsvnoKxj7JCIqV623vW3+4Ws16VTemvaTMb5yP+iv8aNl3hS/v3mPhj9+xwQfFuT3dVxD3EJNrgg3dnmqbEL5SKrlUXN+DVj4TPAJFFvTmuE0L3FDh8K1mK+YtOb8RtsGBYirUoTKKyzjLmh4rSgGSpAZuQbO/GYUUS9wldf0Z/veZNcNJ33H1chbEHSG8TkySzSB0WvXcdyEVJ63JtaLCm/rB1DvsvLlQL5vD0Ec+yBHt1wzqYlRHfR6kIlWmCQl5c9YEQ2XO+sWGd8weK9TeOXambv0S3WLeh47uX2IHAdF+Ghbhjfr329x3eOJkaiLtKq0uhWcWhQAN2vAQmHdVa/6/OYV/GM3TBExiDEfKsCvaGMkmAR82QwyqEvkNHU15SEnF58UpNVw==",
    "signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID4jCCA4igAwIBAgIIJEPyqAad9XcwCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE0MDkyNTIyMDYxMVoXDTE5MDkyNDIyMDYxMVowXzElMCMGA1UEAwwcZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtUFJPRDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhV37evWx7Ihj2jdcJChIY3HsL1vLCg9hGCV2Ur0pUEbg0IO2BHzQH6DMx8cVMP36zIg1rrV1O/0komJPnwPE6OCAhEwggINMEUGCCsGAQUFBwEBBDkwNzA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZWFpY2EzMDEwHQYDVR0OBBYEFJRX22/VdIGGiYl2L35XhQfnm1gkMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUI/JJxE+T5O8n5sT2KGw/orv9LkswggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlYWljYTMuY3JsMA4GA1UdDwEB/wQEAwIHgDAPBgkqhkiG92NkBh0EAgUAMAoGCCqGSM49BAMCA0gAMEUCIHKKnw+Soyq5mXQr1V62c0BXKpaHodYu9TWXEPUWPpbpAiEAkTecfW6+W5l0r0ADfzTCPq2YtbS39w01XIayqBNy8bEwggLuMIICdaADAgECAghJbS+/OpjalzAKBggqhkjOPQQDAjBnMRswGQYDVQQDDBJBcHBsZSBSb290IENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xNDA1MDYyMzQ2MzBaFw0yOTA1MDYyMzQ2MzBaMHoxLjAsBgNVBAMMJUFwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPAXEYQZ12SF1RpeJYEHduiAou/ee65N4I38S5PhM1bVZls1riLQl3YNIk57ugj9dhfOiMt2u2ZwvsjoKYT/VEWjgfcwgfQwRgYIKwYBBQUHAQEEOjA4MDYGCCsGAQUFBzABhipodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDA0LWFwcGxlcm9vdGNhZzMwHQYDVR0OBBYEFCPyScRPk+TvJ+bE9ihsP6K7/S5LMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUu7DeoVgziJqkipnevr3rr9rLJKswNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDovL2NybC5hcHBsZS5jb20vYXBwbGVyb290Y2FnMy5jcmwwDgYDVR0PAQH/BAQDAgEGMBAGCiqGSIb3Y2QGAg4EAgUAMAoGCCqGSM49BAMCA2cAMGQCMDrPcoNRFpmxhvs1w1bKYr/0F+3ZD3VNoo6+8ZyBXkK3ifiY95tZn5jVQQ2PnenC/gIwMi3VRCGwowV3bF3zODuQZ/0XfCwhbZZPxnJpghJvVPh6fRuZy5sJiSFhBpkPCZIdAAAxggFgMIIBXAIBATCBhjB6MS4wLAYDVQQDDCVBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCCRD8qgGnfV3MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTYwNjAyMTEwMzMyWjAvBgkqhkiG9w0BCQQxIgQgRVkcPT1BoKeKsYfclkFNRcwNHzxVx98MP+7kVsZ9R8UwCgYIKoZIzj0EAwIESDBGAiEAvWew1gQ1FhltdGLa3Paz5qhsbqmcScmcNXovgUb9k8QCIQCWqBIreVFF1SgUYsep2JqbSmTAmMePoKl3evYIip0d9wAAAAAAAA==",
    "header": {
        "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8zPbOMOnQGLCaJb4/o72gOxRvl1am7EbWFVFzFhzFNdckxd5JIqn1cfPl6Cz6F+1iZY1wVUZG6ieLMzm3HiSYg==",
        "publicKeyHash": "+KRnYqDhOqtL9OW2mXHcQjtC0XDKhTneOZfcUijflik=",
        "transactionId": "74b674b2394728e699b07d27e168c77502a69ed4d6342988985c5515f852e3b9"
    }
}

You basically construct a Stripe token yourself and submit to them, depending on how you're going to handle the process. All this plugin does is expose the data from the payment sheet (such as name, address etc) and the payment token.

It's up to you to handle the token with whatever payment platform you use. If you use their native SDK, you can use something like createTokenWithPayment

In my projects, I actually pass the token to an HTTP API and relay to the payment provider that way. The token is encrypted and signed using the merchant certificate, so its safe to move online.

Hope this helps!

from cordova-plugin-applepay.

hsmith825 avatar hsmith825 commented on May 20, 2024

Hi Sam,

According to Stripe. You left the final step out of your plugin. That is the step that converts the Apple Pay token into a Stripe token. All the tools that interface to Stripe provide this step. Below is the code that will do this:
// ViewController.m

  • (void)handlePaymentAuthorizationWithPayment:(PKPayment )payment
    completion:(void (^)(PKPaymentAuthorizationStatus))completion {
    [[STPAPIClient sharedClient] createTokenWithPayment:payment
    completion:^(STPToken *token, NSError *error) {
    if (error) {
    completion(PKPaymentAuthorizationStatusFailure);
    return;
    }
    /

    We'll implement this below in "Sending the token to your server".
    Notice that we're passing the completion block through.
    See the above comment in didAuthorizePayment to learn why.
    */
    [self createBackendChargeWithToken:token completion:completion];
    }];
    }

I don't know how to add this to your plugin. Can you help? We have spend days trying to solve this ourselves.

Your help is appreciated.
Thanks!!!

from cordova-plugin-applepay.

Related Issues (20)

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.