карта ПВЗ
Some checks failed
Deploy / build (push) Failing after 24s

This commit is contained in:
alsaze 2025-10-17 03:32:57 +03:00
parent c38b6ba6a9
commit 887ea75e8b
10 changed files with 64 additions and 36 deletions

View File

@ -1 +0,0 @@
export * from './postOrdersCreate'

View File

@ -1,4 +0,0 @@
import api from '~/api/instance'
export const postOrdersCreate = async (line_items: object[]) =>
await api.wc.v3OrdersCreate({ line_items })

View File

@ -1 +0,0 @@
export * from './wp/index'

View File

@ -1,2 +0,0 @@
export * from './usePostOrdersCreate'
export * from '~/api/endpoints/bspb'

View File

@ -1,19 +0,0 @@
import type { MaybeRef } from 'vue'
import { useMutation, useQueryClient } from '@tanstack/vue-query'
import { unref } from 'vue'
import { postOrdersCreate } from '~/api/endpoints/wp/orders'
export const usePostOrdersCreate = () => {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (params: { line_items: MaybeRef<object[]> }) =>
postOrdersCreate(unref(params.line_items)),
onSuccess: (data, variables) => {
queryClient.invalidateQueries({
queryKey: ['post-orders-create', unref(variables.line_items)],
})
},
})
}

View File

@ -27,6 +27,9 @@ export const useCheckout = createSharedComposable(() => {
currentCheckoutStep.value = checkoutSteps[findIndex - 1]
router.push(`/checkout/${currentCheckoutStep?.value.title}`)
}
else {
router.push(`/cart`)
}
}
function nextStep() {

View File

@ -1,5 +1,6 @@
<template>
<div class="cart">
</pre>
<div class="cart__items">
<div
v-for="cartItem in cart?.line_items"
@ -26,7 +27,34 @@
import { useCart } from '~/composables'
const router = useRouter()
const route = useRoute()
const { cart } = useCart()
onMounted(async () => {
if (!route?.query?.ID)
return
await $fetch('/api/create', {
method: 'POST',
body: {
payment_method: 'bacs',
payment_method_title: 'Оплата по реквизитам',
set_paid: false,
billing: {
first_name: 'Иван',
last_name: 'Иванов',
address_1: 'ул. Ленина, 1',
city: 'Москва',
country: 'RU',
email: 'ivan@example.com',
phone: '+79990000000',
},
transaction_id: route?.query?.ID,
line_items: cart.value.line_items,
status: 'processing',
},
})
})
</script>
<style lang="scss">

View File

@ -4,16 +4,8 @@
<script setup lang="ts">
import type { IBspb } from '~/server/shared/types/bspb'
import { usePostOrdersCreate } from '~/api/mutations/wp/usePostOrdersCreate'
import { useCart } from '~/composables'
const router = useRouter()
const { cart } = useCart()
const { mutateAsync } = usePostOrdersCreate()
const createOrder = async () => {
await mutateAsync({ line_items: cart.value.line_items })
const { data } = await useFetch<IBspb>('/api/bspb')
const redirectUrl = `${data?.value?.order?.hppUrl}?orderId=${data?.value?.order?.id}&password=${data.value?.order?.password}`

View File

@ -15,7 +15,7 @@ export default defineEventHandler(async () => {
const agent = new https.Agent({
key: bspbKey!,
cert: bspbCert!,
rejectUnauthorized: false, // ⚠️ только для теста!
rejectUnauthorized: false,
})
const data = {

32
server/api/create.ts Normal file
View File

@ -0,0 +1,32 @@
import axios from 'axios'
import { defineEventHandler, readBody } from 'h3'
export default defineEventHandler(async (event) => {
try {
const orderData = await readBody(event)
const requestUrl = 'https://wp.koptilnya.xyz/wp-json/wc/v3/orders'
const consumerKey = 'ck_8b5477a1573ce6038ef1367f25d95cede1de4559'
const consumerSecret = 'cs_d0ccaa93e8efe4f76eef0b70c9828a58fc53459f'
const encodedAuth = Buffer.from(`${consumerKey}:${consumerSecret}`).toString('base64')
const response = await axios.post(requestUrl, orderData, {
headers: {
'Authorization': `Basic ${encodedAuth}`,
'Content-Type': 'application/json',
},
})
return response.data
}
catch (error: any) {
console.error('Ошибка при создании заказа WooCommerce:', error)
return {
error: true,
message: error.response?.data?.message || 'Ошибка при создании заказа',
details: error.response?.data,
}
}
})