UNPKG

@lomray/microservice-payment-stripe

Version:

Stripe payment microservice based on NodeJS & inverted json.

152 lines (148 loc) 5.96 kB
'use strict'; var tslib = require('tslib'); var microserviceHelpers = require('@lomray/microservice-helpers'); var classTransformer = require('class-transformer'); var classValidator = require('class-validator'); var classValidatorJsonschema = require('class-validator-jsonschema'); var typeorm = require('typeorm'); var disputeReason = require('../constants/dispute-reason.js'); var disputeStatus = require('../constants/dispute-status.js'); var evidenceDetails = require('./evidence-details.js'); /** * Dispute entity * @description Dispute doesn't have pure relation to the transaction for preventing duplication * Transaction id is not unique (presented as debit and credit transactions) */ let Dispute = class Dispute { }; tslib.__decorate([ typeorm.PrimaryGeneratedColumn('uuid'), classValidator.Allow(), tslib.__metadata("design:type", String) ], Dispute.prototype, "id", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Transaction id of microservice transaction entity', example: 'pi_3OIdULAmQ4asS8PS1dDLl0gN', }), typeorm.Column({ type: 'varchar', length: 66, default: null }), classValidator.Length(1, 66), microserviceHelpers.IsUndefinable(), microserviceHelpers.IsNullable(), tslib.__metadata("design:type", Object) ], Dispute.prototype, "transactionId", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Stripe transaction id (payment intent)', example: 'dp_1OJXjDAmQ4asS8PSWXnvmwpj', }), typeorm.Column({ type: 'varchar', length: 66 }), classValidator.Length(1, 66), tslib.__metadata("design:type", String) ], Dispute.prototype, "disputeId", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Disputed transaction amount. Cannot be greater than transaction amount', example: 10639, }), typeorm.Column({ type: 'int' }), classValidator.IsNumber(), classValidator.Min(0), tslib.__metadata("design:type", Number) ], Dispute.prototype, "amount", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Total already charged amount from the account (platform or connected account)', example: -10639, }), typeorm.Column({ type: 'int', default: 0 }), classValidator.IsNumber(), classValidator.Min(0), tslib.__metadata("design:type", Number) ], Dispute.prototype, "chargedAmount", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Total already charged fee from the account (platform or connected account). For instance: stable dispute fee', example: 1500, }), typeorm.Column({ type: 'int', default: 0 }), classValidator.IsNumber(), classValidator.Min(0), tslib.__metadata("design:type", Number) ], Dispute.prototype, "chargedFees", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Dispute new worth related to the account (platform or connected account) after dispute related to this transaction', example: -12139, }), typeorm.Column({ type: 'int', default: 0 }), classValidator.IsNumber(), tslib.__metadata("design:type", Number) ], Dispute.prototype, "netWorth", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Required reason', }), typeorm.Column({ type: 'enum', enum: disputeReason }), classValidator.IsEnum(disputeReason), tslib.__metadata("design:type", String) ], Dispute.prototype, "reason", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Required status', }), typeorm.Column({ type: 'enum', enum: disputeStatus }), classValidator.IsEnum(disputeStatus), tslib.__metadata("design:type", String) ], Dispute.prototype, "status", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Microservice entity params', }), typeorm.Column({ type: 'json', default: {} }), classValidator.IsObject(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", Object) ], Dispute.prototype, "params", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Stripe dispute params', }), typeorm.Column({ type: 'json', default: {} }), classValidator.IsObject(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", Object) ], Dispute.prototype, "metadata", void 0); tslib.__decorate([ classValidatorJsonschema.JSONSchema({ description: 'Received from Stripe date', }), microserviceHelpers.IsTypeormDate(), typeorm.CreateDateColumn(), tslib.__metadata("design:type", Date) ], Dispute.prototype, "createdAt", void 0); tslib.__decorate([ microserviceHelpers.IsTypeormDate(), typeorm.UpdateDateColumn(), tslib.__metadata("design:type", Date) ], Dispute.prototype, "updatedAt", void 0); tslib.__decorate([ typeorm.OneToOne('EvidenceDetails', 'dispute'), classTransformer.Type(() => evidenceDetails), classValidator.ValidateNested(), microserviceHelpers.IsUndefinable(), tslib.__metadata("design:type", evidenceDetails) ], Dispute.prototype, "evidenceDetails", void 0); Dispute = tslib.__decorate([ classValidatorJsonschema.JSONSchema({ title: 'Dispute (chargeback)', description: `A dispute occurs when a customer questions your charge with their card issuer. When this happens, you have the opportunity to respond to the dispute with evidence that shows that the charge is legitimate. If balance transaction occur - dispute is original chargeback, if not - dispute is injury chargeback`, properties: { evidenceDetails: { $ref: '#/definitions/EvidenceDetails' }, }, }), typeorm.Entity() ], Dispute); var DisputeEntity = Dispute; module.exports = DisputeEntity;