func main() {
	creds := new(model.PayliveCredentials)
	creds.SetMerchantEmail("merchantEmail")
	creds.SetMerchantKey("merchantKey")

	order := new(model.PaymentOrder)
	order.SetOrderId(strconv.FormatInt(time.Now().UnixNano(), 16))
	order.SetSubTotal(6)
	order.SetShipping(0)
	order.SetTax(0)
	order.SetTotal(6)
	order.SetComment("This is a test")

	item1 := new(model.OrderItem)
	item1.SetItemCode("001")
	item1.SetItemName("Item One")
	item1.SetQuantity(1)
	item1.SetSubTotal(3.5)
	item1.SetUnitPrice(3.5)

	item2 := new(model.OrderItem)
	item2.SetItemCode("002")
	item2.SetItemName("Item Two")
	item2.SetQuantity(2)
	item2.SetSubTotal(2.5)
	item2.SetUnitPrice(1.25)

	var items = make([]model.OrderItem, 2)
	items[0] = *item1
	items[1] = *item2

	order.SetItems(items)

	//result, success := soap.CreateOrder(*creds, *order)
	result, success := soap.VerifyPayment(*creds, "2015122201")
	//result, success := soap.ConfirmOrder(*creds, "4603cfba-9ece-4807-9bea-6d555ba23f85", "64c73321-d429-45ac-b037-d93b61f18127")

	if !success {
		log.Println("Failed")
	}
	log.Println(result)

	//Next Steps: Check if response message contains (starts with) 'Error'.
	//If so, return appropriate response to calling app (false?)
	//Otherwise, generation was successful. Call Slydepay mobile app to process
}
func CreateOrder(merchantEmail string, merchantKey string, orderId string, subTotal float64, shipping float64, tax float64, total float64, comment string, itemCode string, description string) string {
	creds := new(model.PayliveCredentials)
	creds.SetMerchantEmail(merchantEmail)
	creds.SetMerchantKey(merchantKey)

	order := new(model.PaymentOrder)
	order.SetOrderId(orderId)
	order.SetSubTotal(subTotal)
	order.SetShipping(shipping)
	order.SetTax(tax)
	order.SetTotal(total)
	order.SetComment(comment)

	item1 := new(model.OrderItem)
	item1.SetItemCode(itemCode)
	item1.SetItemName(description)
	item1.SetQuantity(1)
	item1.SetSubTotal(subTotal)
	item1.SetUnitPrice(subTotal)

	var items = make([]model.OrderItem, 1)
	items[0] = *item1

	result, success := soap.CreateOrder(*creds, *order)
	if !success {
		log.Fatalf("Order generation failed")
	}
	return result
}
func GenerateBodyXML(order model.PaymentOrder) (bodyXML string) {
	var body = "<soapenv:Body>"
	body += "<pay:ProcessPaymentOrder>"
	body += "<pay:orderId>" + order.OrderId() + "</pay:orderId>"
	body += "<pay:subtotal>" + strconv.FormatFloat(order.SubTotal(), 'f', -1, 32) + "</pay:subtotal>"
	body += "<pay:shippingCost>" + strconv.FormatFloat(order.Shipping(), 'f', -1, 32) + "</pay:shippingCost>"
	body += "<pay:taxAmount>" + strconv.FormatFloat(order.Tax(), 'f', -1, 32) + "</pay:taxAmount>"
	body += "<pay:total>" + strconv.FormatFloat(order.Total(), 'f', -1, 32) + "</pay:total>"
	body += "<pay:comment1>" + order.Comment() + "</pay:comment1>"
	body += "<pay:orderItems>"

	for i := 0; i < len(order.Items()); i++ {
		item := GenerateItemXML(order.Items()[i])
		body += item
	}

	body += "</pay:orderItems>"
	body += "</pay:ProcessPaymentOrder>"
	body += "</soapenv:Body>"

	return body
}