EmptyPockets
EmptyPockets

Reputation: 727

Cannot add metadata to stripe customer subscription creation using nodejs?

I can't add metadata to the customer object when creating a new subscription/customer with stripe. Update: The problem I'm having is that the metadata does not save to the customer object. I don't see it in stripe in the logs/events.

// Stripe Response Handler
      $scope.stripeCallback = function (code, result) {
        result.email = $scope.email;
        result.metadata = {'team': $scope.team};
        if (result.error) {
          window.alert('it failed! error: ' + result.error.message);
        } else {
        $http.post('/charge', result)
        .success(function(data, status, headers, config) {
          alert('success');
        })
        .error(function(data, status, headers, config) {
          // console.log(status);
          alert('error');
        });
        }
      };

//on the server
app.post('/charge', function(req, res) {
    var stripeToken = req.body.id;
    var email = req.body.email;
    var team = req.body.team;
    subscribeUser(stripeToken, res, email, team);
});

// for subscriptions:
function subscribeUser(token, res, email, team){
    stripe.customers.create({
        card: token,
        plan: '001',
    email: email,
    metadata: team
    }, function(err, customer) {
    var cust = customer.id;
        // you'll probably want to store a reference (customer.id) to the customer
        if (err) {
            res.send({
        ok: false, message: 'There was a problem processing your card (error: ' + JSON.stringify(err) + ')'});
        } else {
            res.send({
        ok: true, message: 'You have been subscribed to a plan!'});
        }
    });
}

Any ideas would be much appreciated.

Upvotes: 2

Views: 3869

Answers (1)

EmptyPockets
EmptyPockets

Reputation: 727

In case this helps somebody else, I made a few dumb mistakes:

You need to be sure you are added it to the metadata property

result.metadata = {'team': $scope.team};

You need to make sure you grab the metadata

var team = req.body.metadata;

You need to pass it in as metadata

metadata: team

Upvotes: 4

Related Questions