protected virtual RequestBuilder BuildRequest(String root)
{
RequestBuilder builder = new RequestBuilder(root);
if (Amount != 0) builder.AddElement("amount", Amount);
builder.AddElement("customer-id", CustomerId);
builder.AddElement("order-id", OrderId);
builder.AddElement("payment-method-token", PaymentMethodToken);
builder.AddElement("purchase-order-number", PurchaseOrderNumber);
builder.AddElement("shipping-address-id", ShippingAddressId);
if (TaxAmount != 0) builder.AddElement("tax-amount", TaxAmount);
if (TaxExempt.HasValue) {
builder.AddElement("tax-exempt", TaxExempt);
}
builder.AddElement("merchant-account-id", MerchantAccountId);
if (Type != null) builder.AddElement("type", Type.ToString().ToLower());
if (CustomFields.Count != 0) builder.AddElement("custom-fields", CustomFields);
builder.AddElement("credit-card", CreditCard);
builder.AddElement("customer", Customer);
builder.AddElement("descriptor", Descriptor);
builder.AddElement("billing", BillingAddress);
builder.AddElement("shipping", ShippingAddress);
builder.AddElement("options", Options);
return builder;
}