test-payment-methods.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { PaymentMethodHandler } from '@vendure/core';
  2. import { LanguageCode } from '../graphql/generated-e2e-admin-types';
  3. export const testSuccessfulPaymentMethod = new PaymentMethodHandler({
  4. code: 'test-payment-method',
  5. description: [{ languageCode: LanguageCode.en, value: 'Test Payment Method' }],
  6. args: {},
  7. createPayment: (order, args, metadata) => {
  8. return {
  9. amount: order.total,
  10. state: 'Settled',
  11. transactionId: '12345',
  12. metadata,
  13. };
  14. },
  15. settlePayment: order => ({
  16. success: true,
  17. }),
  18. });
  19. /**
  20. * A two-stage (authorize, capture) payment method, with no createRefund method.
  21. */
  22. export const twoStagePaymentMethod = new PaymentMethodHandler({
  23. code: 'authorize-only-payment-method',
  24. description: [{ languageCode: LanguageCode.en, value: 'Test Payment Method' }],
  25. args: {},
  26. createPayment: (order, args, metadata) => {
  27. return {
  28. amount: order.total,
  29. state: 'Authorized',
  30. transactionId: '12345',
  31. metadata,
  32. };
  33. },
  34. settlePayment: () => {
  35. return {
  36. success: true,
  37. metadata: {
  38. moreData: 42,
  39. },
  40. };
  41. },
  42. });
  43. /**
  44. * A payment method which includes a createRefund method.
  45. */
  46. export const singleStageRefundablePaymentMethod = new PaymentMethodHandler({
  47. code: 'single-stage-refundable-payment-method',
  48. description: [{ languageCode: LanguageCode.en, value: 'Test Payment Method' }],
  49. args: {},
  50. createPayment: (order, args, metadata) => {
  51. return {
  52. amount: order.total,
  53. state: 'Settled',
  54. transactionId: '12345',
  55. metadata,
  56. };
  57. },
  58. settlePayment: () => {
  59. return { success: true };
  60. },
  61. createRefund: (input, total, order, payment, args) => {
  62. return {
  63. amount: total,
  64. state: 'Settled',
  65. transactionId: 'abc123',
  66. };
  67. },
  68. });
  69. /**
  70. * A payment method where calling `settlePayment` always fails.
  71. */
  72. export const failsToSettlePaymentMethod = new PaymentMethodHandler({
  73. code: 'fails-to-settle-payment-method',
  74. description: [{ languageCode: LanguageCode.en, value: 'Test Payment Method' }],
  75. args: {},
  76. createPayment: (order, args, metadata) => {
  77. return {
  78. amount: order.total,
  79. state: 'Authorized',
  80. transactionId: '12345',
  81. metadata,
  82. };
  83. },
  84. settlePayment: () => {
  85. return {
  86. success: false,
  87. errorMessage: 'Something went horribly wrong',
  88. };
  89. },
  90. });
  91. export const testFailingPaymentMethod = new PaymentMethodHandler({
  92. code: 'test-failing-payment-method',
  93. description: [{ languageCode: LanguageCode.en, value: 'Test Failing Payment Method' }],
  94. args: {},
  95. createPayment: (order, args, metadata) => {
  96. return {
  97. amount: order.total,
  98. state: 'Declined',
  99. metadata,
  100. };
  101. },
  102. settlePayment: order => ({
  103. success: true,
  104. }),
  105. });
  106. export const testErrorPaymentMethod = new PaymentMethodHandler({
  107. code: 'test-error-payment-method',
  108. description: [{ languageCode: LanguageCode.en, value: 'Test Error Payment Method' }],
  109. args: {},
  110. createPayment: (order, args, metadata) => {
  111. return {
  112. amount: order.total,
  113. state: 'Error',
  114. errorMessage: 'Something went horribly wrong',
  115. metadata,
  116. };
  117. },
  118. settlePayment: order => ({
  119. success: true,
  120. }),
  121. });