3

I'm working a project to integrate Stripe's payment service to my android app. I have the basic client code setup.

    Card card = new Card("4242424242424242", 12, 2016, "123");

    boolean validate = card.validateCard();

    if (validate) {
        try {
            new Stripe(TEST_PUBLUSHABLE_KEY).createToken(card, new TokenCallback() {
                @Override
                public void onError(Exception e) {
                    System.out.println("ERROR");
                }

                @Override
                public void onSuccess(Token token) {
                    System.out.println("SUCCESS");
                }
            });
        } catch (AuthenticationException e) {
            e.printStackTrace();
        }

    }

Now I need to setup a server, which I plan on using Node.js and Express. I followed their sample code on: https://stripe.com/docs/tutorials/charges

var express = require('express');
var bodyParser = require('body-parser');
var stripe = require('stripe')('sk_test_sGyqMsiFmf45xoZrDCy5ItcU'); // Test Secret Key

var app = express();
app.use(bodyParser());

app.post('/charge', function(req, res) {
    var stripeToken = request.body.stripeToken;

    var charge = stripe.charges.create({
        amount: 1000, // amount in cents, again
        currency: "cad",
        card: stripeToken,
        description: "payinguser@example.com"
    }, 
    function(err, charge) {
        if (err && err.type === 'StripeCardError') {
            console.log("The card has been declined");
        }
    });
});

app.use(express.static(__dirname + '/public'));
app.listen(3000);

I have never worked with servers, so I think I'm having trouble communicating between the android app and the server that is on my computer's localhost:3000. According to Stripe's documentation, I need to have my server accept a HTTP POST call for the token, but I'm not quite sure how to do that.

Really appreciate your help.

Update #1:

Use Ultrahook to forward Stripe's POST to my localhost.

I use Node.js to setup my server, which receives all Stripe's requests and then get the information I need from the request body.

Still having trouble getting the onSuccess callback on Android to work, it always go to the onError callback.

Update #2:

Solved the onError callback error by printing the error message to console.

Permission denied (missing INTERNET permission?

Turns out I need to include this line to the AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

Link to the Stack Overflow post that solved this part of my problem: What permission do I need to access Internet from an android application?

Community
  • 1
  • 1
lhsieh814
  • 31
  • 1
  • 4

0 Answers0