2015-09-12 9 views
6

Naprawdę walczę, aby program Parse + Stripe działał w moim projekcie. W tym momencie chcę najprostszą działającą wersję, która pozwala mi obciążać użytkownika.Parse + Stripe iOS main.js

Najbliższy rzeczą znalazłem na odpowiedź jest następująca: Simplest Example I've Found

Gdy używam poprawiony kod z linku powyżej, z moim ukryciu I pojawia się następujący błąd:

Input: {"token":"tok_16kNOcIPNR1PIJsTyhvwTFJ9"} 
    Result: TypeError: Object [object Object] has no method 'isString' 
at request (stripe.js:49:25) 
at post (stripe.js:117:12) 
at Object.module.exports.Charges.create (stripe.js:157:16) 
at main.js:19:31 

Proszę o pomoc = ** (jest to tak frustrujące.

------------- UPDATE ----------------

Kilka inne posty miały podobne błędy i wygląda na to, że za błąd odpowiada najnowsza wersja kodu Parse Cloud: 1.6.0. Powrócić do wersji 1.5.0 używając następującej linii poleceń w widoku konsoli:

parse jssdk 1.5.0 

Teraz, niestety nadal pojawia się następujący błąd (ale myślę, że to z powodu mojego kodu cloud main.js plik teraz . będę ten wątek zaktualizowaną kiedy w końcu dowiedzieć się, jak wypełnić plik kodu chmura.

Error Domain=Parse Code=141 "success/error was not called" UserInfo=0x1740e5700 {code=141, temporary=0, error=success/error was not called, NSLocalizedDescription=success/error was not called} 

Odpowiedz

9

końcu. OK, więc tutaj jest najbardziej podstawowy kod, który działa za korzystanie Parse + paskiem.

Kod iOS

- (IBAction)save:(id)sender { 
STPCard *card = [[STPCard alloc] init]; 
card.number = self.paymentTextField.cardNumber; 
card.expMonth = self.paymentTextField.expirationMonth; 
card.expYear = self.paymentTextField.expirationYear; 
card.cvc = self.paymentTextField.cvc; 

NSLog(@"%@, %@", self.paymentTextField.cvc, self.paymentTextField.cardNumber); 
[[STPAPIClient sharedClient] createTokenWithCard:card 
             completion:^(STPToken *token, NSError *error) { 
              if (error) { 
               NSLog(@"up here"); 
               NSLog(@"error - %@", error); 
              } else { 
              //[self createBackendChargeWithToken:token]; 
               NSLog(@"down here"); 
               NSString *myVal = token.tokenId; 


               NSLog(@"%@",token); 
               [PFCloud callFunctionInBackground:@"hello" withParameters:@{@"token":myVal} 
                      block:^(NSString *result, NSError *error) { 
                       if (!error) { 
                        NSLog(@"from Cloud Code Res: %@",result); 
                       } 
                       else 
                       { 
                        NSLog(@"from Cloud Code: %@",error); 
                       } 

                      }]; 
              } 
             }]; 
} 

A potem kod main.js:

var Stripe = require('stripe'); 
Stripe.initialize('sk_test_********'); //replace *** with your key values 


Parse.Cloud.define(“hello”, function(request, response) { 

var stripeToken = request.params.token; 

var charge = Stripe.Charges.create({ 
amount: 1000, // express dollars in cents 
currency: 'usd', 
card: stripeToken 
}).then(null, function(error) { 
console.log('Charging with stripe failed. Error: ' + error); 
}).then(function() { 
    // And we're done! 
    response.success('Success'); 

    }); 
    }); 

Teraz znowu, to działa tylko jeśli REVERT chmurze kod do wersji 1.5.0 (jak inne pomogły mi). Mam nadzieję, że to pomoże komuś innemu.

+1

Dzięki, wpadłem na ten sam problem. Co zrobili z tymi modułami n 1.6.X? Dokumentacja jest częściowo przerwana w odniesieniu do dowolnego z modułów. Czy istnieje inny sposób wymagania modułów? – jeveloper

+0

Masz ten sam problem! cokolwiek, co może pomóc? –

+2

TYLKO DZIAŁA, jeśli REVERT YOUR CLOUD CODE do wersji 1.5.0 pomogło to –

3

Wystarczy być nieco bardziej wyraźne niż powyżej:

cd do swojego kodu cloud katalogu i uruchomić parse jssdk 1.5.0 i parse deploy.