@NonNull
@Override
public JSONObject toJson() {
JSONObject jsonObject = new JSONObject();
putStringIfNotNull(jsonObject, FIELD_ID, mId);
putStringIfNotNull(jsonObject, FIELD_OBJECT, mObjectType);
putArrayIfNotNull(jsonObject, FIELD_ALLOWED_SOURCE_TYPES,
listToJsonArray(mAllowedSourceTypes));
putLongIfNotNull(jsonObject, FIELD_AMOUNT, mAmount);
putLongIfNotNull(jsonObject, FIELD_CANCELED, mCanceledAt);
putStringIfNotNull(jsonObject, FIELD_CAPTURE_METHOD, mCaptureMethod);
putStringIfNotNull(jsonObject, FIELD_CLIENT_SECRET, mClientSecret);
putStringIfNotNull(jsonObject, FIELD_CONFIRMATION_METHOD, mConfirmationMethod);
putLongIfNotNull(jsonObject, FIELD_CREATED, mCreated);
putStringIfNotNull(jsonObject, FIELD_CURRENCY, mCurrency);
putStringIfNotNull(jsonObject, FIELD_DESCRIPTION, mDescription);
putBooleanIfNotNull(jsonObject, FIELD_LIVEMODE, mLiveMode);
putMapIfNotNull(jsonObject, FIELD_NEXT_SOURCE_ACTION, mNextSourceAction);
putStringIfNotNull(jsonObject, FIELD_RECEIPT_EMAIL, mReceiptEmail);
putStringIfNotNull(jsonObject, FIELD_SOURCE, mSource);
putStringIfNotNull(jsonObject, FIELD_STATUS, mStatus);
return jsonObject;
}