Class MoneyInMerchant
IMoneyInMerchant Is the base class for creating custom money in merchants. It provides default implementations where possible. Do not implement directly. You must implement one of the children abstract classes: SavedPaymentMoneyInMerchant, SinglePaymentMoneyInMerchant, or RedirectMoneyInMerchant. SavedPaymentMoneyInMerchant is normally used to tokenize and process credit cards. SinglePaymentMoneyInMerchant is used to process payments without saved payment data. This can be something that can be looked up by the associate, like reward points. RedirectMoneyInMerchant is used to forward the customer to the merchant's site to complete an order. This is done if the merchant can't process the payment as two separate steps (tokenize card, then charge card) and instead needs to control the full payment process. After the customer hits submit order, the order will be created in a pending state until they have completed the payment. Normally, after the payment is completed from the merchant's site, the merchant will then call a provided custom API endpoint to send the results of the attempted payment.
Inheritance
Namespace: DirectScale.Disco.Extension
Assembly: DirectScale.Disco.Extension.Abstractions.dll
Syntax
public abstract class MoneyInMerchant : Object
Methods
GetNewPayerId(Int32)
It is common for merchants to have their own accounts and ids for our customers, that will need to be used to process transactions for them. Override this method with logic for creating an account with the merchant and return the associate's PayerId with that merchant, if needed.
Declaration
public virtual Task<string> GetNewPayerId(int associateId)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | associateId | The associate to create the external merchant account for. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<System.String> | Override to return a merchant's Payer id for the associate, otherwise, the payerId used will be the |
Exceptions
Type | Condition |
---|---|
System.NotImplementedException | If this interface is implemented directly, instead of one of it's child classes. |
RefundPayment(String, Int32, String, Double, Double, String, String, String)
Called when a refund has been submitted. Should include all custom work needed to return funds to the customer.
Declaration
public abstract Task<ExtendedPaymentResult> RefundPayment(string payerId, int orderNumber, string currencyCode, double paymentAmount, double refundAmount, string referenceNumber, string transactionNumber, string authorizationCode)
Parameters
Type | Name | Description |
---|---|---|
System.String | payerId | If GetNewPayerId(Int32) has been overridden, it will be that payerId, otherwise the associateId is passed in. |
System.Int32 | orderNumber | The order that is having a payment refunded. |
System.String | currencyCode | The currency the payment was processed in. |
System.Double | paymentAmount | The full amount charged. |
System.Double | refundAmount | The refund amount requested. |
System.String | referenceNumber | This will match the value returned by ChargePayment when the payment was chared. |
System.String | transactionNumber | This will match the value returned by ChargePayment when the payment was chared. |
System.String | authorizationCode | This will match the value returned by ChargePayment when the payment was chared. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<ExtendedPaymentResult> | A PaymentResponse that will be written to the DB as a new negative payment. |
Remarks
This will write a new payment entry into the DB for orderNumber
for a negative amount, based on the return value PaymentResponse.Amount.
If the full amount of the order is refunded, then volume is adjusted or clawbacks occur as needed.
No default implementation can be provided. This must be implemented in custom merchant.
Exceptions
Type | Condition |
---|---|
System.Exception | If null is returned |
System.Exception | If PaymentResponse.Status.Rejected |
ValidateCurrency(String)
Allows the merchant to validate the currency before an charge/refund is attempted and return an error.
Declaration
public virtual Task<ValidationResult> ValidateCurrency(string currencyCode)
Parameters
Type | Name | Description |
---|---|---|
System.String | currencyCode |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<ValidationResult> | ValidationResult indicating if the process should continue, and an error message if there is one. |
Exceptions
Type | Condition |
---|---|
System.NotImplementedException | If this interface is implemented directly, instead of one of it's child classes. |
ValidatePayment(String, NewPayment)
Allows the merchant to validate a payment what is about to be charged or refuned and return an error.
Declaration
public virtual Task<ValidationResult> ValidatePayment(string payerId, NewPayment payment)
Parameters
Type | Name | Description |
---|---|---|
System.String | payerId | The associate's id for this merchant, or the associateId if no payerId is set. |
NewPayment | payment | The payment about to be processed. |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<ValidationResult> | ValidationResult indicating if the process should continue, and an error message if there is one. |
Exceptions
Type | Condition |
---|---|
System.NotImplementedException | If this interface is implemented directly, instead of one of it's child classes. |