Remove PaymentMethodData from invoice entity

This commit is contained in:
nicolas.dorier 2020-08-26 20:51:51 +09:00
parent 8f0cc9de03
commit be21e7d253
No known key found for this signature in database
GPG key ID: 6618763EF09186FE
4 changed files with 4 additions and 215 deletions

View file

@ -13,60 +13,5 @@ namespace BTCPayServer.Client.Models
public InvoiceStatus Status { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
public InvoiceExceptionStatus AdditionalStatus { get; set; }
public Dictionary<string, PaymentMethodDataModel> PaymentMethodData { get; set; }
public class PaymentMethodDataModel
{
public string Destination { get; set; }
public string PaymentLink { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal Rate { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal PaymentMethodPaid { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal TotalPaid { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal Due { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal Amount { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal NetworkFee { get; set; }
public List<Payment> Payments { get; set; }
public class Payment
{
public string Id { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTime ReceivedDate { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal Value { get; set; }
[JsonProperty(ItemConverterType = typeof(NumericStringJsonConverter))]
public decimal Fee { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
public PaymentStatus Status { get; set; }
public string Destination { get; set; }
public enum PaymentStatus
{
Invalid,
AwaitingConfirmation,
AwaitingCompletion,
Complete
}
}
}
}
}

View file

@ -246,5 +246,5 @@
<_ContentIncludedByDefault Remove="Views\Components\NotificationsDropdown\Default.cshtml" />
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties wwwroot_4swagger_4v1_4swagger_1template_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1pull-payments_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1serverinfo_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1stores_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" /></VisualStudio></ProjectExtensions>
<ProjectExtensions><VisualStudio><UserProperties wwwroot_4swagger_4v1_4swagger_1template_1invoices_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1pull-payments_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1serverinfo_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" wwwroot_4swagger_4v1_4swagger_1template_1stores_1json__JsonSchema="https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v3.0/schema.json" /></VisualStudio></ProjectExtensions>
</Project>

View file

@ -269,50 +269,7 @@ namespace BTCPayServer.Controllers.GreenField
PaymentMethods =
entity.GetPaymentMethods().Select(method => method.GetId().ToString()).ToArray(),
SpeedPolicy = entity.SpeedPolicy
},
PaymentMethodData = entity.GetPaymentMethods().ToDictionary(method => method.GetId().ToString(),
method =>
{
var accounting = method.Calculate();
var details = method.GetPaymentMethodDetails();
var payments = method.ParentEntity.GetPayments().Where(paymentEntity =>
paymentEntity.GetPaymentMethodId() == method.GetId());
return new InvoiceData.PaymentMethodDataModel()
{
Destination = details.GetPaymentDestination(),
Rate = method.Rate,
Due = accounting.Due.ToDecimal(MoneyUnit.BTC),
TotalPaid = accounting.Paid.ToDecimal(MoneyUnit.BTC),
PaymentMethodPaid = accounting.CryptoPaid.ToDecimal(MoneyUnit.BTC),
Amount = accounting.Due.ToDecimal(MoneyUnit.BTC),
NetworkFee = accounting.NetworkFee.ToDecimal(MoneyUnit.BTC),
PaymentLink =
method.GetId().PaymentType.GetPaymentLink(method.Network, details, accounting.Due,
Request.GetAbsoluteRoot()),
Payments = payments.Select(paymentEntity =>
{
var data = paymentEntity.GetCryptoPaymentData();
return new InvoiceData.PaymentMethodDataModel.Payment()
{
Destination = data.GetDestination(),
Id = data.GetPaymentId(),
Status = !paymentEntity.Accounted
? InvoiceData.PaymentMethodDataModel.Payment.PaymentStatus.Invalid
: data.PaymentCompleted(paymentEntity)
? InvoiceData.PaymentMethodDataModel.Payment.PaymentStatus.Complete
: data.PaymentConfirmed(paymentEntity, entity.SpeedPolicy)
? InvoiceData.PaymentMethodDataModel.Payment.PaymentStatus
.AwaitingCompletion
: InvoiceData.PaymentMethodDataModel.Payment.PaymentStatus
.AwaitingConfirmation,
Fee = paymentEntity.NetworkFee,
Value = data.GetValue(),
ReceivedDate = paymentEntity.ReceivedTime.DateTime
};
}).ToList()
};
})
}
};
}
}

View file

@ -533,124 +533,11 @@
"additionalStatus": {
"$ref": "#/components/schemas/InvoiceAdditionalStatus",
"description": "a secondary status of the invoice"
},
"paymentMethodData": {
"type": "object",
"nullable": false,
"additionalProperties": {
"$ref": "#/components/schemas/PaymentMethodDataModel"
},
"description": "Activated payment methods details"
}
}
}
]
},
"PaymentMethodDataModel": {
"type": "object",
"additionalProperties": false,
"properties": {
"destination": {
"type": "string",
"nullable": true,
"description": "The destination the payment must be made to"
},
"paymentLink": {
"type": "string",
"nullable": true,
"description": "A payment link that helps pay to the payment destination"
},
"rate": {
"type": "string",
"format": "decimal",
"description": "The rate between this payment method's currency and the invoice currency"
},
"paymentMethodPaid": {
"type": "string",
"format": "decimal",
"description": "The amount paid by this payment method"
},
"totalPaid": {
"type": "string",
"format": "decimal",
"description": "The total amount paid by all payment methods to the invoice, converted to this payment method's currency"
},
"due": {
"type": "string",
"format": "decimal",
"description": "The total amount left to be paid, converted to this payment method's currency"
},
"amount": {
"type": "string",
"format": "decimal",
"description": "The invoice amount, converted to this payment method's currency"
},
"networkFee": {
"type": "string",
"format": "decimal",
"description": "The added merchant fee to pay for network costs of this payment method."
},
"payments": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/Payment"
},
"description": "Payments made with this payment method."
}
}
},
"Payment": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"nullable": true,
"description": "A unique identifier for this payment"
},
"receivedDate": {
"type": "string",
"format": "date-time",
"description": "The date the payment was recorded"
},
"value": {
"type": "string",
"format": "decimal",
"description": "The value of the payment"
},
"fee": {
"type": "string",
"format": "decimal",
"description": "The fee paid for the payment"
},
"status": {
"$ref": "#/components/schemas/PaymentStatus",
"description": "The status of the payment"
},
"destination": {
"type": "string",
"nullable": true,
"description": "The destination the payment was made to"
}
}
},
"PaymentStatus": {
"type": "string",
"description": "",
"x-enumNames": [
"Invalid",
"AwaitingConfirmation",
"AwaitingCompletion",
"Complete"
],
"enum": [
"Invalid",
"AwaitingConfirmation",
"AwaitingCompletion",
"Complete"
]
},
"CreateInvoiceRequest": {
"type": "object",
"additionalProperties": false,
@ -699,8 +586,8 @@
"nullable": true,
"items": {
"type": "string"
},
"description": "A specific set of payment methods to use for this invoice"
},
"description": "A specific set of payment methods to use for this invoice (ie. BTC, BTC_OnChain). By default, select all payment methods activated in the store."
},
"expirationMinutes": {
"type": "integer",