usePlaceOrder.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import { useApolloClient } from "@apollo/client/react";
  2. import {
  3. CREATE_PAYMENT_INITIATE,
  4. CREATE_PAYMENT_CALLBACK,
  5. CREATE_CANCEL_ORDER,
  6. CREATE_PAYMENT_REPLAY
  7. } from "@/graphql";
  8. import {
  9. CreatePaymentInitiateVariables,
  10. CreatePaymentCallbackVariables,
  11. CreateCancelOrderVariables,
  12. CreatePaymentInitiate,
  13. CreatePaymentCallback,
  14. CreateCancelOrder,
  15. CreatePaymentReplayVariables,
  16. CreatePaymentReplay
  17. } from "@/types/checkout/type";
  18. export interface CreateOrderResult {
  19. data: CreatePaymentInitiate | null;
  20. msg: string;
  21. error: boolean;
  22. }
  23. interface CreatePaymnetCallbackResult {
  24. data: CreatePaymentCallback | null;
  25. msg: string;
  26. error: boolean;
  27. }
  28. interface CreateCancelOrderResult {
  29. data: CreateCancelOrder | null;
  30. msg: string;
  31. error: boolean;
  32. }
  33. interface PaymentReplayResult {
  34. error: boolean;
  35. data: CreatePaymentReplay | null;
  36. msg: string;
  37. }
  38. export const usePlaceOrder = () => {
  39. const client = useApolloClient();
  40. const createOrder = (params: CreatePaymentInitiateVariables = {}) => {
  41. return client.mutate({
  42. mutation: CREATE_PAYMENT_INITIATE,
  43. variables: params
  44. }).then((res) => {
  45. const resData = res?.data?.createPaymentInitiate?.paymentInitiate ?? null;
  46. const result: CreateOrderResult = {
  47. data:resData,
  48. msg: resData?.message ?? '',
  49. error: false
  50. };
  51. return result;
  52. }).catch((err) => {
  53. const result: CreateOrderResult = {
  54. data: null,
  55. msg: err.message,
  56. error: true
  57. };
  58. return result;
  59. });
  60. };
  61. // 支付回调
  62. const createPaymentCallback = (params: CreatePaymentCallbackVariables) => {
  63. return client.mutate({
  64. mutation: CREATE_PAYMENT_CALLBACK,
  65. variables: params
  66. }).then((res) => {
  67. const resData = res?.data?.createPaymentCallback?.paymentCallback ?? null;
  68. const result: CreatePaymnetCallbackResult = {
  69. data:resData,
  70. msg: resData?.message ?? '',
  71. error: false
  72. };
  73. return result;
  74. }).catch((err) => {
  75. const result: CreatePaymnetCallbackResult = {
  76. data: null,
  77. msg: err.message,
  78. error: true
  79. };
  80. return result;
  81. });
  82. };
  83. // 取消订单
  84. const cancelOrder = (params: CreateCancelOrderVariables) => {
  85. return client.mutate({
  86. mutation: CREATE_CANCEL_ORDER,
  87. variables: params
  88. }).then((res) => {
  89. const resData = res?.data?.createCancelOrder?.cancelOrder ?? null;
  90. const result: CreateCancelOrderResult = {
  91. data:resData,
  92. msg: resData?.message ?? '',
  93. error: false
  94. };
  95. return result;
  96. }).catch((err) => {
  97. const result: CreateCancelOrderResult = {
  98. data: null,
  99. msg: err.message,
  100. error: true
  101. };
  102. return result;
  103. });
  104. }
  105. const paymentRepay = (params: CreatePaymentReplayVariables) => {
  106. return client.mutate({
  107. mutation: CREATE_PAYMENT_REPLAY,
  108. variables: params
  109. }).then((res) => {
  110. const resData = res?.data?.createPaymentReplay?.paymentReplay ?? null;
  111. const result: PaymentReplayResult = {
  112. error: false,
  113. msg: '',
  114. data: resData
  115. };
  116. return result;
  117. }).catch((err) => {
  118. const result: PaymentReplayResult = {
  119. error: true,
  120. msg: err.message,
  121. data: null,
  122. };
  123. return result;
  124. });
  125. };
  126. return {
  127. createOrder,
  128. createPaymentCallback,
  129. cancelOrder,
  130. paymentRepay
  131. };
  132. };