Я следую учебному пособию здесь , сделанному разработчиком из Google.
В статье говорится:
Stripe предлагает два способа созданияспособы оплаты: токены и источники.Токены одноразовые.При подключении к клиенту источники могут использоваться более одного раза.
То, что я делал, я создавал создание Token
через stripe.createToken(cardToSave, object : TokenCallback {...}
в моем приложении для Android и сохранялэто в мою БД.Это запускает облачную функцию addPaymentSource
, которая создает «источник платежа (карту)», который сохраняется в моей БД:
облачная функция addPaymentSource
exports.addPaymentSource = functions.database
.ref('/stripe_customers/{userId}/sources/{pushId}/token').onWrite((change, context) => {
const source = change.after.val();
if (source === null){
return null;
}
return admin.database().ref(`/stripe_customers/${context.params.userId}/customer_id`)
.once('value').then((snapshot) => {
return snapshot.val();
}).then((customer) => {
return stripe.customers.createSource(customer, {source:source});
}).then((response) => {
return change.after.ref.parent.set(response);
}, (error) => {
return change.after.ref.parent.child('error').set(userFacingMessage(error));
}).then(() => {
return reportError(error, {user: context.params.userId});
});
});
Итакэто «Источник», который я могу использовать для оплаты?Я думаю, это потому, что я могу создать несколько charges
, используя этот "источник".
Часть, в которой я запутался, это то, что я использовал токен для создания источника (или около того).я думаю это источник).Это правильно?
Кроме того, всякий раз, когда я добавляю другой источник / карту, новая карта добавляется в путь "stripe_customers/$currentUser/sources/"
рядом со старой картой.Теперь, когда я нажимаю, чтобы заплатить, он все еще заряжает старую карту.Как переключить карты на новую, которая была добавлена?
РЕДАКТИРОВАТЬ
На веб-сайте Stripe:
Если владелец картыне имеет карты по умолчанию, тогда новая карта станет стандартнойОднако, если у владельца уже есть значение по умолчанию, оно не изменится.Чтобы изменить значение по умолчанию, вы должны либо обновить клиента, чтобы он имел новый источник по умолчанию, либо обновить получателя, чтобы иметь новый
, поэтому я попытался обновить default_source
, но это неРабота.Честно говоря, я не обладаю знаниями в JS, и я просто делаю это здесь ... этот код выдает мне ошибку
exports.addPaymentSource = functions.database
.ref('/stripe_customers/{userId}/sources/{pushId}/token').onWrite((change, context) => {
const source = change.after.val();
if (source === null){
return null;
}
return admin.database().ref(`/stripe_customers/${context.params.userId}/customer_id`)
.once('value').then((snapshot) => {
return snapshot.val();
}).then((customer) => {
return stripe.customers.createSource(customer, {source:source});
}).then((customer) =>{ // look here
return stripe.customers.update(customer.customer_id,{default_source: source}) // and here
}).then((response) => {
return change.after.ref.parent.set(response);
}, (error) => {
return change.after.ref.parent.child('error').set(userFacingMessage(error));
}).then(() => {
return reportError(error, {user: context.params.userId});
});
});