usps_v3_dart 1.2.0 copy "usps_v3_dart: ^1.2.0" to clipboard
usps_v3_dart: ^1.2.0 copied to clipboard

A strongly-typed Dart SDK for USPS REST APIs (v3), supporting OAuth 2.0, package tracking, address validation, locations, rates, and shipping.

example/usps_v3_dart_example.dart

// ignore_for_file: avoid_print
import 'package:usps_v3_dart/usps_v3_dart.dart';

void main() async {
  // 1. Initialize the USPS SDK client with credentials
  final usps = UspsClient(
    clientId: 'YOUR_USPS_CLIENT_ID',
    clientSecret: 'YOUR_USPS_CLIENT_SECRET',
    environment: UspsEnvironment.sandbox, // Use sandbox for testing
  );

  print('=== USPS v3 Dart SDK Example ===');

  try {
    // 2. Package Tracking
    print('\n[1] Tracking a Package...');
    final tracking = await usps.tracking.getTracking(
      '9400111899562537624656',
      expand: TrackingExpand.detail,
    );
    print('Tracking Number: ${tracking.trackingNumber}');
    print('Status: ${tracking.status}');
    print('Events recorded: ${tracking.trackingEvents.length}');

    // 3. Address Validation & Standardization
    print('\n[2] Standardizing an Address...');
    const addressInput = Address(
      streetAddress: '475 L\'Enfant Plaza SW',
      secondaryAddress: 'Suite 100',
      city: 'Washington',
      state: 'DC',
      zipCode: '20260',
    );

    final standardized = await usps.addresses.standardizeAddress(addressInput);
    if (standardized.address != null) {
      final addr = standardized.address!;
      print(
        'Standardized: ${addr.streetAddress}, ${addr.city}, ${addr.state} ${addr.zipCode}-${addr.zipPlus4}',
      );
    }

    // 4. Rate Calculation
    print('\n[3] Calculating Postage Rates...');
    const rateRequest = RateRequest(
      originZipCode: '20260',
      destinationZipCode: '78701',
      weight: 2.5,
      length: 10.0,
      width: 6.0,
      height: 4.0,
      mailClass: UspsMailClass.priorityMail,
    );

    final rates = await usps.pricing.calculateRates(rateRequest);
    print('Base Price Total: \$${rates.totalBasePrice}');
    for (final rate in rates.rates) {
      print('- ${rate.mailClass} (Zone ${rate.zone}): \$${rate.price}');
    }

    // 5. Locations Search
    print('\n[4] Searching Nearby USPS Facilities...');
    final locations = await usps.locations.findLocations(
      zipCode: '20260',
      maxResults: 2,
    );
    for (final loc in locations.locations) {
      print('- ${loc.locationName} (${loc.streetAddress}, ${loc.city})');
    }

    // 6. Carrier Pickup Eligibility
    print('\n[5] Checking Carrier Pickup Eligibility...');
    final pickupEligibility = await usps.pickup.checkEligibility(
      streetAddress: '475 L\'Enfant Plaza SW',
      zipCode: '20260',
    );
    print('Eligible for pickup: ${pickupEligibility.eligible}');

    // 7. Service Standards Estimates
    print('\n[6] Estimating Service Standards...');
    final estimate = await usps.serviceStandards.getEstimates(
      originZipCode: '20260',
      destinationZipCode: '78701',
      acceptanceDate: '2026-09-25',
      mailClass: UspsMailClass.priorityMail,
    );
    print(
      'Service Standard: ${estimate.serviceStandard?.deliveryDays ?? "N/A"} (${estimate.serviceStandard?.daysToDelivery ?? 0} days)',
    );

    // 8. Webhook Verification
    print('\n[7] Verifying Webhook Signature...');
    final isValidWebhook = UspsWebhookVerifier.verify(
      payload: '{"event":"DELIVERED"}',
      signature: UspsWebhookVerifier.computeSignature(
        payload: '{"event":"DELIVERED"}',
        secretKey: 'sample-secret',
      ),
      secretKey: 'sample-secret',
    );
    print('Webhook signature verified: $isValidWebhook');
  } on UspsApiException catch (e) {
    print('USPS API Error (${e.statusCode}): ${e.message}');
  } on UspsAuthException catch (e) {
    print('USPS Auth Error: ${e.message}');
  } on UspsNetworkException catch (e) {
    print('Network Error: ${e.message}');
  } on UspsException catch (e) {
    print('General USPS SDK Error: ${e.message}');
  } finally {
    // 9. Dispose client and release network resources
    usps.close();
  }
}
0
likes
160
points
431
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A strongly-typed Dart SDK for USPS REST APIs (v3), supporting OAuth 2.0, package tracking, address validation, locations, rates, and shipping.

Repository (GitHub)
View/report issues

Topics

#usps #shipping #tracking #postal #rest-api

License

MIT (license)

Dependencies

crypto, dio, json_annotation

More

Packages that depend on usps_v3_dart