$bill->setNote("this a sample note");
$bill->setInvoiceNumber("this is an invoice");
$bill->setPoNumber("a test po number");
//Credit card data
$card_data = new CardData();
$card_data->setCardNumber("5466410004374507");
$card_data->setCardExpiryDate("202011");
$card_data->setCvvData("998");
$card_data->setBillingAddress1("2350 Kerner Blvd");
$card_data->setBillingAddress2("On the corner");
$card_data->setBillingCity("San Rafael");
$card_data->setBillingState("CA");
$card_data->setBillingZip("99997-0003");
// Customer data
$customer = new Customer();
$customer->setFirstName("First");
$customer->setLastName("Contact");
$customer->setCompanyName("Payhub Inc");
$customer->setJobTitle("Software Engineer");
$customer->setEmailAddress("*****@*****.**");
$customer->setWebAddress("http://payhub.com");
$customer->setPhoneNumber("(415) 479 1349");
$customer->setPhoneExt("123");
$customer->setPhoneType("M");
$refund = new Refund(null, $merchant, "CREDIT_CARD", $bill, $customer, $card_data);
$transaction = new TransactionManager($merchant, $WsURL, $oauth_token);
$result = $transaction->doRefund($refund);
if ($result->getErrors() == null) {
    var_dump($result);
    var_dump($result->getMerchantInformation());
}