payment.entity.ts 1.3 KB

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