== transaction.refund ==
==== Description ====
Refund transaction for passed tran_id and pp_type. If optional amount parameter is sent then:
- if less than the one used in original transaction then PV2 will try to issue partial refund.
- If passed amount is equal to the one used in original transaction, full refund will be issued
- If passed amount is bigger than the one used in original transaction or partial refund is already sent and total sum of refunds is bigger than amount used in original transaction - an error will be issued on PP level.
==== Input Parameters ====
<table>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td>tran_id</td><td>Int</td><td>Yes</td><td>PV2 Transaction ID (i.e. obtained with transaction.list)</td></tr>
<tr><td>pp_type</td><td>string</td><td>Yes</td><td>PP Type (NB|RG|PO|...)</td></tr>
<tr><td>amount</td><td>float</td><td>No</td><td>Amount to be refunded</td></tr>
<tr><td>revoke</td><td>tinyint</td><td>No</td><td>Works for GP only</td></tr>
<tr><td>card_number</td><td>float</td><td>No (RG only)</td><td>Credit Card Number<td></tr>
<tr><td>card_expire</td><td>tinyint</td><td>No (RG only)</td><td>Credit Card Number</td></tr>
</table>
==== Returned result ====
<table>
<tr><th>Name</th><th>Type</th><th>Description</th></tr>
<tr><td>success</td><td>boolean</td><td>True on success false on failure</td></tr>
<tr><td>error_msg</td><td>string</td><td>Error msg in case of error</td></tr>
<tr><td>tran_id</td><td>int</td><td>Refund transaction ID</td></tr>
</table>
==== Usage Example ====
```
<?php
$curl = new \Dinke\CurlHttpClient;
//setup payment url and timeout
$payment_url = 'https://dev-payment.datingvip.com/api.json';
$timeout = 30;
$curl->setCredentials('some-token', 'some-pass');
$post_data = array(
'cmd' => 'transaction.refund',
'data' => array(
'tran_id' => 1980,
'pp_type' => 'RG',
'amount' => 39.99
),
);
$response = $curl->sendPostData($payment_url, $post_data, null, $timeout);
if($response === false)
{
//handle errors
}
//decode json to get array
$response = json_decode($response, true);
var_dump($response);
?>
```
Excepted output after running this script should be:
```
array (size=1)
'result' =>
array (size=8)
'code' => int 700
'status' => string 'Action completed succesfully' (length=28)
'command' => string 'transaction.refund' (length=18)
'result' =>
array (size=2)
'success' => boolean true
'error_msg' => string '' (length=0)
'tran_id' => int 12345
'request' =>
array (size=4)
'cmd' => string 'transaction.refund' (length=18)
'data' =>
array (size=3)
'tran_id' => string '1980' (length=4)
'pp_type' => string 'RG' (length=2)
'amount' => string '39.99' (length=5)
'token' => string 'some-token' (length=26)
'pass' => string 'some-pass' (length=32)
'ts' => int 1429563857
'origin_ip' => string '93.87.220.184' (length=13)
'errors' => null
```