standard - Parse+Stripe iOS main.js
stripe payment tutorial (2)
Realmente estoy luchando para que Parse + Stripe funcione en mi proyecto. En este punto, quiero la versión de trabajo más simple que me permita cobrar al usuario.
Lo más parecido que he encontrado a una respuesta es la siguiente: Ejemplo más simple que he encontrado
Cuando uso el código corregido desde el enlace de arriba, con mi secreto obtengo el siguiente error:
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
Por favor, ayuda = ** (esto es muy frustrante.
------------- ACTUALIZACIÓN ----------------
Algunas otras publicaciones tuvieron errores similares y parece que la última versión del código de Parse Cloud es la culpable: 1.6.0. Vuelva a la versión 1.5.0 utilizando la siguiente solicitud de línea de comando en la vista de la consola:
parse jssdk 1.5.0
Ahora, desafortunadamente sigo recibiendo el siguiente error (pero creo que esto se debe ahora a mi archivo main.js de código de nube. Mantendré este hilo actualizado cuando finalmente descubra cómo completar el archivo de código de nube.
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}
Finalmente. OK, aquí está el código más básico que FUNCIONA para usar Parse + Stripe.
Código de 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);
}
}];
}
}];
}
Y luego el código 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'');
});
});
Ahora, de nuevo, esto SÓLO FUNCIONA si REVERTIRÁS EL CÓDIGO DE LA NUBE a la Versión 1.5.0 (como otros me han ayudado). Espero que esto ayude a alguien más también.
Solo para ser un poco más explícito desde arriba:
cd
en su directorio de código de nube y ejecute parse jssdk 1.5.0
y parse deploy
.