Parse.com создает токен страйп-карты в облачном коде (main.js)

Я хочу создать токен полосы в облачном коде синтаксического анализа.

Я не хочу создавать токен на HTML-странице на стороне клиента. Мое полное веб-приложение находится в HTML + Javascript, поэтому я не хочу раскрывать мой Stripe.setPublishableKey('pk_test_xxxxxxx');

По этой причине интерес определить функцию в облачном коде.

Parse.Cloud.define("addCreditCard", function(request, response) {
    var token;
    var group;

    var Stripe = require('https://js.stripe.com/v2/');
    Stripe.setPublishableKey('pk_test_xxxxxxxxx');

    Stripe.card.createToken({
        number : request.params.number,
        cvc : request.params.cvc,
        exp_month : request.params.month,
        exp_year : request.params.year
    }, {
        sucsess: function(result) { response.success("Ok"); },
        error : function(error) { response.error(error); }
    });
});

Здесь облако синтаксического анализа не может вызвать var Stripe = require('https://js.stripe.com/v2/');

Если во многих местах предлагается использовать модуль parse cloud stripe var Stripe = require('stripe'); var STRIPE_SECRET_KEY = 'sk_test_xxxxxxxxxx';

Но здесь функция Stripe.card.createToken не определена


person Neelabh    schedule 27.12.2014    source источник
comment
попробуйте использовать Stripe.tokens.create вместо Stripe.cart.createToken? stripe.com/docs/api#token_object   -  person Alex    schedule 27.12.2014
comment
Нет такого метода createToken, на который я ссылаюсь parse.com/docs/js/symbols /Stripe.Tokens.html   -  person Neelabh    schedule 27.12.2014
comment
Почему вы не хотите раскрывать свой публикуемый ключ? Это абсолютно безопасно, как описано здесь: support.stripe.com /questions/ Чтобы выполнить то, что вы планируете, потребуются данные карты для доступа к вашему серверу, и вы должны будете самостоятельно соответствовать требованиям PCI, что требует большой работы.   -  person koopajah    schedule 27.12.2014
comment
Я хочу свести к минимуму работу на стороне клиента и спланировать большую часть работы в облаке. Поскольку исходный код на стороне клиента открыт   -  person Neelabh    schedule 27.12.2014


Ответы (1)


Наконец, мои исследования закончились, и я получил решение:

Parse.Cloud.httpRequest({
    method : 'POST',
    url : 'https://api.stripe.com/v1/tokens',
    headers : {
        'Authorization' : 'Bearer sk_test_xxxxxxxxxxxxxx'
    },
    body : {
        "card[number]" : request.params.number,
        "card[exp_month]" : request.params.month,
        "card[exp_year]" : request.params.year,
        "card[cvc]" : request.params.cvc
    },
    success : function(httpResponse) {
        token = httpResponse.data.id; // Its token which required for create payment/charge
    },
    error : function(httpResponse) {
        // Error
    }
})

Приведенный выше код можно использовать в любой облачной функции, написанной на main.js.

person Neelabh    schedule 27.12.2014
comment
Как сказал кто-то другой, для этого потребуется, чтобы вы были совместимы с PCI. Это выходит далеко за рамки всего, что стоит за SSL - person Alex; 27.12.2014
comment
В любом случае, если мы принимаем платежную информацию на нашей странице, нам требуется сертификат, совместимый с PCI, и SSL. В противном случае мы должны перенаправить на страницу платежного шлюза, потому что они совместимы с PCI. - person Neelabh; 27.12.2014
comment
На самом деле не совсем правильно. Если вы использовали чередование по назначению, конфиденциальные данные кредитной карты никогда не передаются на сервер, поэтому никогда не покидайте клиент, поэтому отмените необходимость соответствия PCI. - person Alex; 27.12.2014