Я новичок в использовании полосовых платежей, поэтому я решил упростить и внедрил redirectToCheckout и веб-перехватчики полосы из документации полосы, я выполнил шаги, сначала я создал продукт из панели инструментов полосы, затем я добавил несколько ключей метаданных и value, наконец, я написал свой код на Angular, и все работало отлично, пока я не понял, что я не получаю ожидаемые метаданные, на самом деле они были пустыми.
Я использую облачные функции Firebase как бэкэнд и Angular, это мой код:
Angular
stripe.redirectToCheckout({
lineItems: [{ price: itemSku, quantity: 1}],
mode: 'payment',
customerEmail: this.userEmail,
successUrl: 'http://localhost:4200/purchase/success',
cancelUrl: 'http://localhost:4200/purchase/failed'
})
Облачная функция Firebase
app.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => {
const sig = request.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(request.rawBody, sig, endpointSecret);
} catch (err) {
response.status(404).end()
}
const intent = event.data.object
switch (event.type) {
case constants.INTENT_SUCCESS:
// it prints the object with empty metadata
console.log('Success object:', intent); <- metadata:{}
break;
case constants.INTENT_FAILED:
console.log('Failed:', intent.id);
break;
}
response.json({received: true});
response.sendStatus(200)
});