<?php


namespace App\Contracts;


interface PaymentStore
{
    /**
     * Store payment request
     *
     * @param int $orderId Payment unique order id
     * @param  null  $token
     * @param  string  $type One of 'ONLINE', 'CHEQUE', 'CASH', 'CARD', 'CASH_ON_DELIVERY'
     *
     * @return \App\Models\Payment
     */
    public function storePaymentRequest($orderId,$amount, $token = null, $type = 'ONLINE',$bank=null): \App\Models\Payment;

    /**
     * Store success payment and update invoice status
     *
     * @param int $paymentId Payment unique order id
     * @param string|int $referenceId Transaction reference id
     * @param  null  $cardNumber
     *
     * @return \App\Models\Payment
     */
    public function storeSuccessPayment($paymentId, $referenceId, $cardNumber = null): \App\Models\Payment;

    /**
     * Store failed payment and update invoice status
     *
     * @param int $orderId Payment unique order id
     * @param  null  $message Fail reason text to store
     *
     * @return \App\Models\Payment
     */
    public function storeFailPayment($orderId, $message = null): \App\Models\Payment;
}