/* The current url, oauth_token, orgId and Terminal Id provided in this example, are only for testing purposes
*  For development purposes you need to contact the Payhub Integration Support team. They will provide you with  *   all you need.
*  Thanks.
*/
$path_to_IncludeClases = "../com/payhub/ws/extra/includeClasses.php";
include_once $path_to_IncludeClases;
//Defining the Web Service URL
$WsURL = "https://sandbox-api.payhub.com/api/v2/";
$oauth_token = "2a5d6a73-d294-4fba-bfba-957a4948d4a3";
//Defining data for the SALE transaction
// Merchant data (obtained from the payHub Virtual Terminal (3rd party integration)
$merchant = new Merchant();
$merchant->setOrganizationId(10074);
$merchant->setTerminalId(134);
$bill = new Bill();
$bill->setBaseAmount(1.0);
//Credit card data
$card_data = new CardData();
$card_data->setCardNumber("4012881888818888");
$card_data->setCardExpiryDate("202012");
$card_data->setBillingZip("60527");
// Customer data
$customer = new Customer();
$customer->setFirstName("Joe");
$customer->setLastName("Tester");
$customer->setPhoneNumber("844-217-1631");
$customer->setPhoneType("M");
$montly_s = new MontlySchedule();
$montly_s->monthly_type = "E";
$montly_s->monthly_each_days = array(15);
$start = new DateTime("2016-1-29");
$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");
$object = new Sale($merchant, $customer, $bill, $card_data);
$transaction = new TransactionManager($merchant, $WsURL, $oauth_token);
$result = $transaction->doSale($object);
var_dump($result);
if ($result->getErrors() == null) {
    $transactionId = $result->getSaleResponse()->getSaleId();
    $billForRefund = new Bill();
    $billForRefund->setBaseAmount(3.0);
    $billForRefund->setShippingAmount(3.0);
    $billForRefund->setTaxAmount(3.0);
    $billForRefund->setNote("this a sample note");
    $billForRefund->setInvoiceNumber("this is an invoice");
    $billForRefund->setPoNumber("a test po number");
    $refund = new Refund($transactionId, $merchant, "CREDIT_CARD", $data);
    $transaction = new TransactionManager($merchant, $WsURL, $oauth_token);
    $result = $transaction->doRefund($refund);
    var_dump($result);
}