import api from '@/services/apiServcie';
import { FetchedLogginedUserDataType } from '@/types/global/fetchedLogginedUserData.type';
import { BuyCheckoutFormDataType } from '@/types/routes/buy/buyCheckoutFormData.type';
import { BookType } from '@/types/routes/global/book.type';
import { AxiosResponse } from 'axios';
type AxiosResponseType = {
data: string | null;
msg: string;
errorCode: 0 | 103;
};
export const APIvalidateCartItemsAndGetZarinpalUrlForPayment = async (args: {
token: string | undefined;
totalBookPrice: number;
formData: BuyCheckoutFormDataType;
totalWeight: number;
phoneNumber: string;
fetchedLogginedUserData: FetchedLogginedUserDataType | null;
booksData:
| (BookType &
{
status: 1 | 2 | 3;
max_sell: number;
quantity: number;
modifyPrice: number;
}[])
| null;
}): Promise<AxiosResponseType> => {
const { data }: AxiosResponse<AxiosResponseType> = await api.post(
'/checkoutsell',
{
customerid: args.phoneNumber,
city: args.formData.city!.key,
state: args.formData.province!.key,
address: args.formData.address,
postalCode: args.formData.postalCode,
first_name: args.formData.firstName,
last_name: args.formData.lastName,
post_price: Number(args.formData!.transportPrice) * 10,
countPack: Number(args.fetchedLogginedUserData?.postalcode),
postMethod: args.fetchedLogginedUserData?.postmethod,
sendTime: args.fetchedLogginedUserData?.sendtime,
sendDay: args.fetchedLogginedUserData?.sendday,
bank: args.fetchedLogginedUserData?.bank,
accNumber: args.fetchedLogginedUserData?.accnumber,
accountholder: args.fetchedLogginedUserData?.accountholder,
email: args.fetchedLogginedUserData?.email,
discountcode: '',
sell: '1',
total_weight: args.totalWeight,
payment_method: 'post',
total_books_price: args.totalBookPrice,
total_dicounts: '',
final_total_price:
args.totalBookPrice + Number(args.formData!.transportPrice),
books: args.booksData,
},
{
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${args.token}`,
},
},
);
return data;
};