Request proforma refund
Last updated: 31-Aug-2022
Rate this article:
Overview
Use the requestProformaRefund method to initiate a refund for a paid partner proforma.
Parameters
| Parameter | Type/Description |
|---|---|
| Uuid | Required (String) |
| Partner unique identifier. | |
| proformaNumber | Required (String) |
| The unique identifier of a partner proforma in the 2Checkout system. | |
| comment | Optional (String) |
| Refund reason/additional comments. Can be NULL. |
Response
| Parameter | Type/Description |
|---|---|
| result | Boolean |
| True or false |
Request
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
public const URL = 'http://api.2checkout.com/soap/6.0';
public const ACTION = 'requestProformaRefund';
public const ADDITIONAL_OPTIONS = null;
//array or JSON
public const PAYLOAD = <<<JSON
{
"Uuid": "96f2a739-ca6f-46bd-af03-f42e5048f653",
"ProformaNumber": "6",
"Comment": "Comment"
}
JSON;
}
class Client
{
public function call(
string $url = Configuration::URL,
$payload = Configuration::PAYLOAD,
string $action = Configuration::ACTION
): ?object
{
if (is_array($payload)) {
$payload = json_encode($payload);
}
if (!empty($payload)) {
// SoapClient works with objects(StdClass)
$payload = json_decode($payload);
}
$soapClient = $this->getClient($url);
$sessionId = $this->getSession($soapClient);
$args = array_filter([$sessionId, $payload]);
return $soapClient->$action(...$args);
}
public function getClient(string $url): SoapClient
{
return new SoapClient(
$url . '?wsdl',
[
'location' => $url,
'cache_wsdl' => WSDL_CACHE_NONE,
]
);
}
public function getSession(SoapClient $client)
{
$date = gmdate('Y-m-d H:i:s');
$merchantCode = Configuration::MERCHANT_CODE;
$key = Configuration::MERCHANT_KEY;
$string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
$hash = hash_hmac('md5', $string, $key);
// $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
return $client->login($merchantCode, $date, $hash);
}
}
try {
$client = new Client();
var_dump($client->call());
} catch (Exception $ex) {
var_dump($ex);
}Errors
| Error | Description |
|---|---|
|
INVALID_PARTNER |
No partner is set. |
|
INVALID_PROFORMA_NUMBER |
Your partner invoice number is not valid. |
|
DUPLICATE_REFUND_REQUEST |
A refund request was already placed for this partner invoice. |
|
INVALID_PROFORMA |
The partner invoice needs to be paid in order to send a refund request. |
Related articles
Rate this article: