Example #1
0
  /**
   * Add a payment schedule to the payment request.
   *
   * @param document
   * @param subscription
   * @param subscr_el
   */
  private void addPaymentScheduleToSubscription(
      BasicXmlDocument document, Subscription subscription, Element subscr_el) {
    PaymentSchedule schedule = subscription.getSchedule();
    if (schedule == null) return;

    Element payment_el =
        document.createElement(AuthNetField.ELEMENT_PAYMENT_SCHEDULE.getFieldName());

    // Add the interval
    //
    if (schedule.getIntervaLength() > 0) {
      Element interval_el = document.createElement(AuthNetField.ELEMENT_INTERVAL.getFieldName());
      Element length_el = document.createElement(AuthNetField.ELEMENT_LENGTH.getFieldName());
      Element unit_el = document.createElement(AuthNetField.ELEMENT_UNIT.getFieldName());
      length_el.appendChild(
          document.getDocument().createTextNode(Integer.toString(schedule.getIntervaLength())));
      interval_el.appendChild(length_el);
      interval_el.appendChild(unit_el);
      unit_el.appendChild(
          document.getDocument().createTextNode(schedule.getSubscriptionUnit().value()));

      payment_el.appendChild(interval_el);
    }

    Element start_date_el = document.createElement(AuthNetField.ELEMENT_START_DATE.getFieldName());
    start_date_el.appendChild(
        document
            .getDocument()
            .createTextNode(
                net.authorize.util.DateUtil.getFormattedDate(
                    schedule.getStartDate(), PaymentSchedule.SCHEDULE_DATE_FORMAT)));
    payment_el.appendChild(start_date_el);

    Element total_el =
        document.createElement(AuthNetField.ELEMENT_TOTAL_OCCURRENCES.getFieldName());
    total_el.appendChild(
        document.getDocument().createTextNode(Integer.toString(schedule.getTotalOccurrences())));
    payment_el.appendChild(total_el);

    Element trial_el =
        document.createElement(AuthNetField.ELEMENT_TRIAL_OCCURRENCES.getFieldName());
    trial_el.appendChild(
        document.getDocument().createTextNode(Integer.toString(schedule.getTrialOccurrences())));
    payment_el.appendChild(trial_el);

    subscr_el.appendChild(payment_el);
  }