Я пытаюсь реализовать форму 3D Secure, но я застрял при отображении страницы банка пользователя.
Я отправляю запрос из моего бэкэнда, и мой ответ выглядит примерно так:
{
status: 'success',
locale: 'en',
systemTime: 1585266454071,
conversationId: '123456789',
threeDSHtmlContent: 'PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8dGl0bGU+aXl6aWNvIE1vY2sgM0QtU2VjdXJlIFByb2Nlc3NpbmcgUGFnZTwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+Cjxmb3JtIGlkPSJpeXppY28tM2RzLWZvcm0iIGFjdGlvbj0iaHR0cHM6Ly9zYW5kYm94LWFwaS5peXppcGF5LmNvbS9wYXltZW50L21vY2svaW5pdDNkcyIgbWV0aG9kPSJwb3N0Ij4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9yZGVySWQiIHZhbHVlPSJtb2NrNDYtOTUwODMyNjU0MjAzODIxOWl5emlvcmQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluIiB2YWx1ZT0iNTQwMDAxIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InN1Y2Nlc3NVcmwiIHZhbHVlPSJodHRwczovL3NhbmRib3gtYXBpLml5emlwYXkuY29tL3BheW1lbnQvaXl6aXBvcy9jYWxsYmFjazNkcy9zdWNjZXNzLzM0Ij4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhaWx1cmVVcmwiIHZhbHVlPSJodHRwczovL3NhbmRib3gtYXBpLml5emlwYXkuY29tL3BheW1lbnQvaXl6aXBvcy9jYWxsYmFjazNkcy9mYWlsdXJlLzM0Ij4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1hdGlvblVybCIgdmFsdWU9Imh0dHBzOi8vc2FuZGJveC1hcGkuaXl6aXBheS5jb20vcGF5bWVudC9tb2NrL2NvbmZpcm0zZHMiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUGFSZXEiIHZhbHVlPSJhZTJhZGQ4MC0zZTRiLTQ0OTQtOTdhYi1kMzk2YzA5ZWVkZmUiPgo8L2Zvcm0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpeXppY28tM2RzLWZvcm0iKS5zdWJtaXQoKTsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg=='
}
По сути, threeDSHtmlContent
- это строка в кодировке base64 страницы HTML. Который делает запрос на свой сервер и должен перенаправить мое приложение Nuxt на этот сервер. Я могу обработать после обратного вызова.
Мой компонент Nuxt:
<template>
<v-container pa-12>
<div :v-html="rawHTML"></div>
...
OTHER FORM DATA
...
</v-container>
</template>
export default {
computed: {
rawHTML() {
return this.$store.state.postAJob.rawHTML;
}
},
methods: {
submit() {
this.$store.dispatch("postAJob/sendPayment", { ... })
}
}
}
И мой магазин:
export const state = () => ({
rawHTML: ""
});
export const mutations = {
SET_RAWHTML(state, data) {
state.rawHTML = data;
},
SET_ERROR(state, data) {
state.error = data;
},
SET_LOADING(state, data) {
state.isLoading = data;
}
};
export const actions = {
async sendPayment({ commit }, payment) {
commit("SET_LOADING", true);
let response = await this.$axios.post(`/payment`, payment)
let buff = new Buffer.from(response.data.threeDSHtmlContent, "base64");
commit("SET_LOADING", false);
commit("SET_RAWHTML", buff.toString())
}
};
Мой компонент не отправляет форму, которая поставляется с поэтому я не могу видеть страницу 3D Secure.
Как заставить работать кнопку отправки этой формы возврата?
Спасибо.