Refunds
If your payment service provider supports refund, you can easily integrate it into the module.
There should be a function called "refundInvoice" inside your module class.
The parameter contains data from the 'invoices' table in the database.
Sample Usage
public function refundInvoice($invoice=[])
{
$api_key = $this->config["settings"]["example1"] ?? 'N/A';
$secret_key = $this->config["settings"]["example2"] ?? 'N/A';
$amount = $invoice["total"];
$currency = $this->currency($invoice["currency"]);
// In callback or capture functions, the data transmitted as 'message' in the return value is retrieved.
$method_msg = Utility::jdecode($invoice["pmethod_msg"] ?? [],true);
$transaction_id = $method_msg["Merchant Transaction ID"] ?? false;
$force_curr = $this->config["settings"]["force_convert_to"] ?? 0;
if($force_curr > 0)
{
$amount = Money::exChange($amount,$currency,$force_curr);
$currency = $this->currency($force_curr);
}
// Here we are making an API call.
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "api.sample.com/refund/".$transaction_id);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'APIKEY: '.$api_key,
'SECRET: '.$secret_key,
'Content-Type: application/json',
));
$result = curl_exec($curl);
if(curl_errno($curl))
{
$result = false;
$this->error = curl_error($curl);
}
$result = json_decode($result,true);
if($result && $result['status'] == 'OK') $result = true;
else
{
$this->error = $result['message'] ?? 'something went wrong';
$result = false;
}
return $result;
}
The value to return from the function must be of the "boolean" data type.