parent
c38b6ba6a9
commit
887ea75e8b
@ -1 +0,0 @@
|
||||
export * from './postOrdersCreate'
|
||||
@ -1,4 +0,0 @@
|
||||
import api from '~/api/instance'
|
||||
|
||||
export const postOrdersCreate = async (line_items: object[]) =>
|
||||
await api.wc.v3OrdersCreate({ line_items })
|
||||
@ -1 +0,0 @@
|
||||
export * from './wp/index'
|
||||
@ -1,2 +0,0 @@
|
||||
export * from './usePostOrdersCreate'
|
||||
export * from '~/api/endpoints/bspb'
|
||||
@ -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)],
|
||||
})
|
||||
},
|
||||
})
|
||||
}
|
||||
@ -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() {
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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}`
|
||||
|
||||
@ -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
32
server/api/create.ts
Normal 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,
|
||||
}
|
||||
}
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user