Merge pull request 'feat(tpv): integrar ID de empresa en el proceso de pago y actualizar llamadas a la API' (!144) from golguin/hedera-web:migrate-tpv-store into beta
gitea/hedera-web/pipeline/head There was a failure building this commit
Details
gitea/hedera-web/pipeline/head There was a failure building this commit
Details
Reviewed-on: #144 Reviewed-by: Javier Segarra <jsegarra@verdnatura.es>
This commit is contained in:
commit
f6e60b73c6
|
@ -13,6 +13,7 @@ import useNotify from 'src/composables/useNotify.js';
|
||||||
import { currency, formatDateTitle } from 'src/lib/filters.js';
|
import { currency, formatDateTitle } from 'src/lib/filters.js';
|
||||||
import { tpvStore } from 'stores/tpv';
|
import { tpvStore } from 'stores/tpv';
|
||||||
import { useAppStore } from 'stores/app';
|
import { useAppStore } from 'stores/app';
|
||||||
|
import { useUserStore } from 'stores/user';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -26,6 +27,7 @@ const showAmountToPayDialog = ref(null);
|
||||||
const amountToPay = ref(null);
|
const amountToPay = ref(null);
|
||||||
const orders = ref(null);
|
const orders = ref(null);
|
||||||
const debt = ref(0);
|
const debt = ref(0);
|
||||||
|
const userStore = useUserStore();
|
||||||
const tpv = tpvStore();
|
const tpv = tpvStore();
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
@ -57,9 +59,14 @@ const onConfirmPay = async () => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!userStore.companyId) {
|
||||||
|
notify(t('companyConfigError'), 'negative');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const amount = amountToPay.value.toString().replace('.', ',');
|
const amount = amountToPay.value.toString().replace('.', ',');
|
||||||
amountToPay.value = parseFloat(amount);
|
amountToPay.value = parseFloat(amount);
|
||||||
await tpv.pay(amountToPay.value);
|
await tpv.pay(amountToPay.value, userStore.companyId);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { jApi } from 'boot/axios';
|
import { api } from 'boot/axios';
|
||||||
|
|
||||||
export const tpvStore = defineStore('tpv', {
|
export const tpvStore = defineStore('tpv', {
|
||||||
actions: {
|
actions: {
|
||||||
async check(route) {
|
async check(route) {
|
||||||
const order = route.query.tpvOrder;
|
const orderId = route.query.tpvOrder;
|
||||||
const status = route.query.tpvStatus;
|
const status = route.query.tpvStatus;
|
||||||
if (!(order && status)) return null;
|
if (!(orderId && status)) return null;
|
||||||
|
|
||||||
await jApi.execQuery('CALL myTpvTransaction_end(#order, #status)', {
|
await api.post('tpvTransactions/end', {
|
||||||
order,
|
orderId,
|
||||||
status
|
status
|
||||||
});
|
});
|
||||||
|
|
||||||
if (status === 'ko') {
|
if (status === 'ko') {
|
||||||
const retry = confirm('retryPayQuestion');
|
const retry = confirm('retryPayQuestion');
|
||||||
if (retry) {
|
if (retry) {
|
||||||
this.retryPay(order);
|
this.retryPay(orderId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,27 +27,33 @@ export const tpvStore = defineStore('tpv', {
|
||||||
await this.realPay(amount * 100, company);
|
await this.realPay(amount * 100, company);
|
||||||
},
|
},
|
||||||
|
|
||||||
async retryPay(order) {
|
async retryPay(orderId) {
|
||||||
const payment = await jApi.getObject(
|
const { data: transactions } = await api.get(
|
||||||
`SELECT t.amount, m.companyFk
|
'clients/transactions',
|
||||||
FROM myTpvTransaction t
|
{
|
||||||
JOIN tpvMerchant m ON m.id = t.merchantFk
|
params: {
|
||||||
WHERE t.id = #order`,
|
orderFk: orderId
|
||||||
{ order }
|
}
|
||||||
|
}
|
||||||
);
|
);
|
||||||
await this.realPay(payment.amount, payment.companyFk);
|
if (transactions && transactions.length > 0) {
|
||||||
|
const [transaction] = transactions;
|
||||||
|
await this.realPay(
|
||||||
|
transaction.amount * 100,
|
||||||
|
transaction.merchantFk
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async realPay(amount, company) {
|
async realPay(amount, companyId) {
|
||||||
if (!isNumeric(amount) || amount <= 0) {
|
if (!isNumeric(amount) || amount <= 0) {
|
||||||
throw new Error('payAmountError');
|
throw new Error('payAmountError');
|
||||||
}
|
}
|
||||||
|
const { data: json } = await api.post('tpvTransactions/start', {
|
||||||
const json = await jApi.send('tpv/transaction', {
|
amount,
|
||||||
amount: parseInt(amount),
|
companyId,
|
||||||
urlOk: this.makeUrl('ok'),
|
urlOk: this.makeUrl('ok'),
|
||||||
urlKo: this.makeUrl('ko'),
|
urlKo: this.makeUrl('ko')
|
||||||
company
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const postValues = json.postValues;
|
const postValues = json.postValues;
|
||||||
|
|
|
@ -8,6 +8,7 @@ const { notify } = useNotify();
|
||||||
const TOKEN_MULTIMEDIA = 'tokenMultimedia';
|
const TOKEN_MULTIMEDIA = 'tokenMultimedia';
|
||||||
const TOKEN = 'token';
|
const TOKEN = 'token';
|
||||||
|
|
||||||
|
|
||||||
export const useUserStore = defineStore('user', () => {
|
export const useUserStore = defineStore('user', () => {
|
||||||
const token = ref('');
|
const token = ref('');
|
||||||
const tokenMultimedia = ref('');
|
const tokenMultimedia = ref('');
|
||||||
|
@ -15,7 +16,7 @@ export const useUserStore = defineStore('user', () => {
|
||||||
const user = ref(null); // Usuario en uso => supplantedUser || mainUser
|
const user = ref(null); // Usuario en uso => supplantedUser || mainUser
|
||||||
const supplantedUser = ref(null); // Usuario suplantado
|
const supplantedUser = ref(null); // Usuario suplantado
|
||||||
const mainUser = ref(null); // Usuario principal logueado
|
const mainUser = ref(null); // Usuario principal logueado
|
||||||
|
const companyId = ref(null);
|
||||||
const keepLogin = ref(false);
|
const keepLogin = ref(false);
|
||||||
const intervalId = ref(null);
|
const intervalId = ref(null);
|
||||||
const isCheckingToken = ref(false);
|
const isCheckingToken = ref(false);
|
||||||
|
@ -40,6 +41,7 @@ export const useUserStore = defineStore('user', () => {
|
||||||
} else {
|
} else {
|
||||||
await fetchUser();
|
await fetchUser();
|
||||||
await fetchTokenConfig();
|
await fetchTokenConfig();
|
||||||
|
await fetchCompanyId();
|
||||||
await supplantInit();
|
await supplantInit();
|
||||||
startInterval();
|
startInterval();
|
||||||
}
|
}
|
||||||
|
@ -154,6 +156,7 @@ export const useUserStore = defineStore('user', () => {
|
||||||
await fetchTokenConfig();
|
await fetchTokenConfig();
|
||||||
startInterval();
|
startInterval();
|
||||||
await onLogin();
|
await onLogin();
|
||||||
|
await fetchCompanyId();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error('Error logging in');
|
throw new Error('Error logging in');
|
||||||
}
|
}
|
||||||
|
@ -283,6 +286,12 @@ export const useUserStore = defineStore('user', () => {
|
||||||
user.value.lang = lang;
|
user.value.lang = lang;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fetchCompanyId = async () => {
|
||||||
|
const { data } = await api.get('UserConfigs/getUserConfig');
|
||||||
|
companyId.value = data.companyFk;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const $reset = () => {
|
const $reset = () => {
|
||||||
token.value = '';
|
token.value = '';
|
||||||
tokenMultimedia.value = '';
|
tokenMultimedia.value = '';
|
||||||
|
@ -317,6 +326,7 @@ export const useUserStore = defineStore('user', () => {
|
||||||
tokenConfig,
|
tokenConfig,
|
||||||
isLoggedIn,
|
isLoggedIn,
|
||||||
storage,
|
storage,
|
||||||
|
companyId,
|
||||||
getToken,
|
getToken,
|
||||||
getTokenMultimedia,
|
getTokenMultimedia,
|
||||||
setToken,
|
setToken,
|
||||||
|
|
Loading…
Reference in New Issue