payment.entity.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { DeepPartial } from '@vendure/common/lib/shared-types';
  2. import { Column, Entity, ManyToOne, OneToMany } from 'typeorm';
  3. import { PaymentState } from '../../service/helpers/payment-state-machine/payment-state';
  4. import { VendureEntity } from '../base/base.entity';
  5. import { Order } from '../order/order.entity';
  6. import { Refund } from '../refund/refund.entity';
  7. export type PaymentMetadata = { [key: string]: string | number | boolean };
  8. /**
  9. * @description
  10. * A Payment represents a single payment transaction and exists in a well-defined state
  11. * defined by the {@link PaymentState} type.
  12. *
  13. * @docsCategory entities
  14. */
  15. @Entity()
  16. export class Payment extends VendureEntity {
  17. constructor(input?: DeepPartial<Payment>) {
  18. super(input);
  19. }
  20. @Column() method: string;
  21. @Column() amount: number;
  22. @Column('varchar') state: PaymentState;
  23. @Column({ nullable: true })
  24. errorMessage: string;
  25. @Column({ nullable: true })
  26. transactionId: string;
  27. @Column('simple-json') metadata: PaymentMetadata;
  28. @ManyToOne(type => Order, order => order.payments)
  29. order: Order;
  30. @OneToMany(type => Refund, refund => refund.payment)
  31. refunds: Refund[];
  32. }