Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

MercadoLibre - Search Orders from a Buyer

See more MercadoLibre Examples

Search for orders from a buyer.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.StringBuilder,
  Chilkat.DtObj,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  jsonToken: TJsonObject;
  sbResponseBody: TStringBuilder;
  jResp: TJsonObject;
  respStatusCode: Integer;
  date_closed: TDtObj;
  date_last_updated: TDtObj;
  date_created: TDtObj;
  date_approved: TDtObj;
  date_last_modified: TDtObj;
  sellerPhoneNumber: string;
  sellerPhoneExtension: string;
  sellerPhoneArea_code: string;
  sellerPhoneVerified: Boolean;
  sellerAlternative_phoneNumber: string;
  sellerAlternative_phoneExtension: string;
  sellerAlternative_phoneArea_code: string;
  sellerNickname: string;
  sellerLast_name: string;
  sellerId: Integer;
  sellerFirst_name: string;
  sellerEmail: string;
  fulfilled: Boolean;
  buying_mode: string;
  taxesAmount: string;
  taxesCurrency_id: string;
  order_requestChange: string;
  order_requestReturn: string;
  expiration_date: string;
  feedbackSale: string;
  feedbackPurchase: string;
  shippingId: Integer;
  id: Integer;
  manufacturing_ending_date: string;
  hidden_for_seller: Boolean;
  last_updated: string;
  comments: string;
  pack_id: string;
  couponAmount: Integer;
  couponId: string;
  shipping_cost: Integer;
  application_id: string;
  pickup_id: string;
  status_detail: string;
  buyerBilling_infoDoc_number: string;
  buyerBilling_infoDoc_type: string;
  buyerPhoneNumber: string;
  buyerPhoneExtension: string;
  buyerPhoneArea_code: string;
  buyerPhoneVerified: Boolean;
  buyerAlternative_phoneNumber: string;
  buyerAlternative_phoneExtension: string;
  buyerAlternative_phoneArea_code: string;
  buyerNickname: string;
  buyerLast_name: string;
  buyerId: Integer;
  buyerFirst_name: string;
  buyerEmail: string;
  total_amount: string;
  paid_amount: string;
  currency_id: string;
  status: string;
  j: Integer;
  count_j: Integer;
  reason: string;
  status_code: string;
  total_paid_amount: string;
  operation_type: string;
  transaction_amount: string;
  collectorId: Integer;
  coupon_id: string;
  installments: Integer;
  authorization_code: string;
  taxes_amount: Integer;
  coupon_amount: Integer;
  installment_amount: string;
  activation_uri: string;
  overpaid_amount: Integer;
  card_id: Integer;
  issuer_id: string;
  payment_method_id: string;
  payment_type: string;
  deferred_period: string;
  atm_transfer_referenceTransaction_id: string;
  atm_transfer_referenceCompany_id: string;
  site_id: string;
  payer_id: Integer;
  marketplace_fee: string;
  order_id: Integer;
  transaction_order_id: string;
  k: Integer;
  count_k: Integer;
  strVal: string;
  itemSeller_custom_field: string;
  itemCondition: string;
  itemCategory_id: string;
  itemVariation_id: string;
  itemSeller_sku: string;
  itemWarranty: string;
  itemId: string;
  itemTitle: string;
  quantity: Integer;
  differential_pricing_id: string;
  sale_fee: string;
  listing_type_id: string;
  base_currency_id: string;
  unit_price: string;
  full_unit_price: string;
  base_exchange_rate: string;
  manufacturing_days: string;
  id_str: string;
  name: string;
  query: string;
  sortId: string;
  sortName: string;
  pagingTotal: Integer;
  pagingOffset: Integer;
  pagingLimit: Integer;
  display: string;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example assumes the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  //  First get our previously obtained OAuth2 access token.
  jsonToken := TJsonObject.Create;
  success := jsonToken.LoadFile('qa_data/tokens/mercadolibre.json');

  //  Implements the following CURL command:

  //  curl -X GET https://api.mercadolibre.com/orders/search?buyer=$BUYER_ID&access_token=$ACCESS_TOKEN

  //  Use the following online tool to generate HTTP code from a CURL command
  //  Convert a cURL Command to HTTP Source Code

  http.SetUrlVar('access_token',jsonToken.StringOf('access_token'));
  //  Use an actual buyer ID here..
  http.SetUrlVar('buyer_id','577815702');

  sbResponseBody := TStringBuilder.Create;
  success := http.QuickGetSb('https://api.mercadolibre.com/orders/search?buyer={$buyer_id}&access_token={$access_token}',sbResponseBody);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      WriteLn('Response Header:');
      WriteLn(http.LastHeader);
      WriteLn('----');
      WriteLn('Response Body:');
      WriteLn(sbResponseBody.GetAsString());
      WriteLn('Failed.');
      Exit;
    end;

  jResp := TJsonObject.Create;
  jResp.LoadSb(sbResponseBody);
  jResp.EmitCompact := False;

  WriteLn('Response Body:');
  WriteLn(jResp.Emit());

  respStatusCode := http.LastStatus;
  WriteLn('Response Status Code = ' + respStatusCode);
  if (respStatusCode >= 400) then
    begin
      WriteLn('Response Header:');
      WriteLn(http.LastHeader);
      WriteLn('----');
      WriteLn('Response Body:');
      WriteLn(sbResponseBody.GetAsString());
      WriteLn('Failed.');
      Exit;
    end;

  //  Sample JSON response:
  //  (Sample code for parsing the JSON response is shown below)

  //  {
  //    "query": "2032217210",
  //    "results": [
  //      {
  //        "seller": {
  //          "phone": {
  //            "number": "11971427863",
  //            "extension": "",
  //            "area_code": null,
  //            "verified": false
  //          },
  //          "alternative_phone": {
  //            "number": "",
  //            "extension": "",
  //            "area_code": ""
  //          },
  //          "nickname": "VENDASDKMB",
  //          "last_name": "Cheracomo",
  //          "id": 239432672,
  //          "first_name": "Demétrio",
  //          "email": "dcherac.8m6k0q+2-ogiydgmrsge3tenby@mail.mercadolivre.com"
  //        },
  //        "payments": [
  //          {
  //            "reason": "Kit Com 03 Adesivo Spray 3m 75 Cola Silk Sublimação 300g",
  //            "status_code": null,
  //            "total_paid_amount": 129.95,
  //            "operation_type": "regular_payment",
  //            "transaction_amount": 129.95,
  //            "date_approved": "2019-05-22T03:51:07.000-04:00",
  //            "collector": {
  //              "id": 239432672
  //            },
  //            "coupon_id": null,
  //            "installments": 1,
  //            "authorization_code": "008877",
  //            "taxes_amount": 0,
  //            "id": 4792155710,
  //            "date_last_modified": "2019-05-22T03:51:07.000-04:00",
  //            "coupon_amount": 0,
  //            "available_actions": [
  //              "refund"
  //            ],
  //            "shipping_cost": 0,
  //            "installment_amount": 129.95,
  //            "date_created": "2019-05-22T03:51:05.000-04:00",
  //            "activation_uri": null,
  //            "overpaid_amount": 0,
  //            "card_id": 203453778,
  //            "status_detail": "accredited",
  //            "issuer_id": "24",
  //            "payment_method_id": "master",
  //            "payment_type": "credit_card",
  //            "deferred_period": null,
  //            "atm_transfer_reference": {
  //              "transaction_id": "135292",
  //              "company_id": null
  //            },
  //            "site_id": "MLB",
  //            "payer_id": 89660613,
  //            "marketplace_fee": 14.290000000000001,
  //            "order_id": 2032217210,
  //            "currency_id": "BRL",
  //            "status": "approved",
  //            "transaction_order_id": null
  //          }
  //        ],
  //        "fulfilled": true,
  //        "buying_mode": "buy_equals_pay",
  //        "taxes": {
  //          "amount": null,
  //          "currency_id": null
  //        },
  //        "order_request": {
  //          "change": null,
  //          "return": null
  //        },
  //        "expiration_date": "2019-06-19T03:51:07.000-04:00",
  //        "feedback": {
  //          "sale": null,
  //          "purchase": null
  //        },
  //        "shipping": {
  //          "id": 27968238880
  //        },
  //        "date_closed": "2019-05-22T03:51:07.000-04:00",
  //        "id": 2032217210,
  //        "manufacturing_ending_date": null,
  //        "hidden_for_seller": false,
  //        "order_items": [
  //          {
  //            "item": {
  //              "seller_custom_field": null,
  //              "condition": "new",
  //              "category_id": "MLB33383",
  //              "variation_id": null,
  //              "variation_attributes": [
  //              ],
  //              "seller_sku": null,
  //              "warranty": "Garantia de 1 ano fabricante",
  //              "id": "MLB1054990648",
  //              "title": "Kit Com 03 Adesivo Spray 3m 75 Cola Silk Sublimação 300g"
  //            },
  //            "quantity": 1,
  //            "differential_pricing_id": null,
  //            "sale_fee": 14.29,
  //            "listing_type_id": "gold_special",
  //            "base_currency_id": null,
  //            "unit_price": 129.95,
  //            "full_unit_price": 129.95,
  //            "base_exchange_rate": null,
  //            "currency_id": "BRL",
  //            "manufacturing_days": null
  //          }
  //        ],
  //        "date_last_updated": "2020-02-14T02:55:49.811Z",
  //        "last_updated": "2019-05-28T15:16:04.000-04:00",
  //        "comments": null,
  //        "pack_id": null,
  //        "coupon": {
  //          "amount": 0,
  //          "id": null
  //        },
  //        "shipping_cost": 0,
  //        "date_created": "2019-05-22T03:51:05.000-04:00",
  //        "application_id": "7092",
  //        "pickup_id": null,
  //        "status_detail": null,
  //        "tags": [
  //          "delivered",
  //          "paid"
  //        ],
  //        "buyer": {
  //          "billing_info": {
  //            "doc_number": "02183212950",
  //            "doc_type": "CPF"
  //          },
  //          "phone": {
  //            "number": "99962663",
  //            "extension": "",
  //            "area_code": "41",
  //            "verified": false
  //          },
  //          "alternative_phone": {
  //            "number": "30576339",
  //            "extension": "",
  //            "area_code": "41"
  //          },
  //          "nickname": "S.VICTORHUGO",
  //          "last_name": "Schemberger",
  //          "id": 89660613,
  //          "first_name": "Victor Hugo",
  //          "email": "vschemb.y14cdz+2-ogiydgmrsge3tenbz@mail.mercadolivre.com"
  //        },
  //        "total_amount": 129.95,
  //        "paid_amount": 129.95,
  //        "mediations": [
  //        ],
  //        "currency_id": "BRL",
  //        "status": "paid"
  //      }
  //    ],
  //    "sort": {
  //      "id": "date_asc",
  //      "name": "Date ascending"
  //    },
  //    "available_sorts": [
  //      {
  //        "id": "date_desc",
  //        "name": "Date descending"
  //      }
  //    ],
  //    "filters": [
  //    ],
  //    "paging": {
  //      "total": 1,
  //      "offset": 0,
  //      "limit": 50
  //    },
  //    "display": "complete"
  //  }

  //  Sample code for parsing the JSON response...
  //  Use the following online tool to generate parsing code from sample JSON:
  //  Generate Parsing Code from JSON

  date_closed := TDtObj.Create;
  date_last_updated := TDtObj.Create;
  date_created := TDtObj.Create;
  date_approved := TDtObj.Create;
  date_last_modified := TDtObj.Create;

  query := jResp.StringOf('query');
  sortId := jResp.StringOf('sort.id');
  sortName := jResp.StringOf('sort.name');
  pagingTotal := jResp.IntOf('paging.total');
  pagingOffset := jResp.IntOf('paging.offset');
  pagingLimit := jResp.IntOf('paging.limit');
  display := jResp.StringOf('display');
  i := 0;
  count_i := jResp.SizeOfArray('results');
  while i < count_i do
    begin
      jResp.I := i;
      sellerPhoneNumber := jResp.StringOf('results[i].seller.phone.number');
      sellerPhoneExtension := jResp.StringOf('results[i].seller.phone.extension');
      sellerPhoneArea_code := jResp.StringOf('results[i].seller.phone.area_code');
      sellerPhoneVerified := jResp.BoolOf('results[i].seller.phone.verified');
      sellerAlternative_phoneNumber := jResp.StringOf('results[i].seller.alternative_phone.number');
      sellerAlternative_phoneExtension := jResp.StringOf('results[i].seller.alternative_phone.extension');
      sellerAlternative_phoneArea_code := jResp.StringOf('results[i].seller.alternative_phone.area_code');
      sellerNickname := jResp.StringOf('results[i].seller.nickname');
      sellerLast_name := jResp.StringOf('results[i].seller.last_name');
      sellerId := jResp.IntOf('results[i].seller.id');
      sellerFirst_name := jResp.StringOf('results[i].seller.first_name');
      sellerEmail := jResp.StringOf('results[i].seller.email');
      fulfilled := jResp.BoolOf('results[i].fulfilled');
      buying_mode := jResp.StringOf('results[i].buying_mode');
      taxesAmount := jResp.StringOf('results[i].taxes.amount');
      taxesCurrency_id := jResp.StringOf('results[i].taxes.currency_id');
      order_requestChange := jResp.StringOf('results[i].order_request.change');
      order_requestReturn := jResp.StringOf('results[i].order_request.return');
      expiration_date := jResp.StringOf('results[i].expiration_date');
      feedbackSale := jResp.StringOf('results[i].feedback.sale');
      feedbackPurchase := jResp.StringOf('results[i].feedback.purchase');
      shippingId := jResp.IntOf('results[i].shipping.id');
      jResp.DtOf('results[i].date_closed',False,date_closed);
      id := jResp.IntOf('results[i].id');
      manufacturing_ending_date := jResp.StringOf('results[i].manufacturing_ending_date');
      hidden_for_seller := jResp.BoolOf('results[i].hidden_for_seller');
      jResp.DtOf('results[i].date_last_updated',False,date_last_updated);
      last_updated := jResp.StringOf('results[i].last_updated');
      comments := jResp.StringOf('results[i].comments');
      pack_id := jResp.StringOf('results[i].pack_id');
      couponAmount := jResp.IntOf('results[i].coupon.amount');
      couponId := jResp.StringOf('results[i].coupon.id');
      shipping_cost := jResp.IntOf('results[i].shipping_cost');
      jResp.DtOf('results[i].date_created',False,date_created);
      application_id := jResp.StringOf('results[i].application_id');
      pickup_id := jResp.StringOf('results[i].pickup_id');
      status_detail := jResp.StringOf('results[i].status_detail');
      buyerBilling_infoDoc_number := jResp.StringOf('results[i].buyer.billing_info.doc_number');
      buyerBilling_infoDoc_type := jResp.StringOf('results[i].buyer.billing_info.doc_type');
      buyerPhoneNumber := jResp.StringOf('results[i].buyer.phone.number');
      buyerPhoneExtension := jResp.StringOf('results[i].buyer.phone.extension');
      buyerPhoneArea_code := jResp.StringOf('results[i].buyer.phone.area_code');
      buyerPhoneVerified := jResp.BoolOf('results[i].buyer.phone.verified');
      buyerAlternative_phoneNumber := jResp.StringOf('results[i].buyer.alternative_phone.number');
      buyerAlternative_phoneExtension := jResp.StringOf('results[i].buyer.alternative_phone.extension');
      buyerAlternative_phoneArea_code := jResp.StringOf('results[i].buyer.alternative_phone.area_code');
      buyerNickname := jResp.StringOf('results[i].buyer.nickname');
      buyerLast_name := jResp.StringOf('results[i].buyer.last_name');
      buyerId := jResp.IntOf('results[i].buyer.id');
      buyerFirst_name := jResp.StringOf('results[i].buyer.first_name');
      buyerEmail := jResp.StringOf('results[i].buyer.email');
      total_amount := jResp.StringOf('results[i].total_amount');
      paid_amount := jResp.StringOf('results[i].paid_amount');
      currency_id := jResp.StringOf('results[i].currency_id');
      status := jResp.StringOf('results[i].status');
      j := 0;
      count_j := jResp.SizeOfArray('results[i].payments');
      while j < count_j do
        begin
          jResp.J := j;
          reason := jResp.StringOf('results[i].payments[j].reason');
          status_code := jResp.StringOf('results[i].payments[j].status_code');
          total_paid_amount := jResp.StringOf('results[i].payments[j].total_paid_amount');
          operation_type := jResp.StringOf('results[i].payments[j].operation_type');
          transaction_amount := jResp.StringOf('results[i].payments[j].transaction_amount');
          jResp.DtOf('results[i].payments[j].date_approved',False,date_approved);
          collectorId := jResp.IntOf('results[i].payments[j].collector.id');
          coupon_id := jResp.StringOf('results[i].payments[j].coupon_id');
          installments := jResp.IntOf('results[i].payments[j].installments');
          authorization_code := jResp.StringOf('results[i].payments[j].authorization_code');
          taxes_amount := jResp.IntOf('results[i].payments[j].taxes_amount');
          id := jResp.IntOf('results[i].payments[j].id');
          jResp.DtOf('results[i].payments[j].date_last_modified',False,date_last_modified);
          coupon_amount := jResp.IntOf('results[i].payments[j].coupon_amount');
          shipping_cost := jResp.IntOf('results[i].payments[j].shipping_cost');
          installment_amount := jResp.StringOf('results[i].payments[j].installment_amount');
          jResp.DtOf('results[i].payments[j].date_created',False,date_created);
          activation_uri := jResp.StringOf('results[i].payments[j].activation_uri');
          overpaid_amount := jResp.IntOf('results[i].payments[j].overpaid_amount');
          card_id := jResp.IntOf('results[i].payments[j].card_id');
          status_detail := jResp.StringOf('results[i].payments[j].status_detail');
          issuer_id := jResp.StringOf('results[i].payments[j].issuer_id');
          payment_method_id := jResp.StringOf('results[i].payments[j].payment_method_id');
          payment_type := jResp.StringOf('results[i].payments[j].payment_type');
          deferred_period := jResp.StringOf('results[i].payments[j].deferred_period');
          atm_transfer_referenceTransaction_id := jResp.StringOf('results[i].payments[j].atm_transfer_reference.transaction_id');
          atm_transfer_referenceCompany_id := jResp.StringOf('results[i].payments[j].atm_transfer_reference.company_id');
          site_id := jResp.StringOf('results[i].payments[j].site_id');
          payer_id := jResp.IntOf('results[i].payments[j].payer_id');
          marketplace_fee := jResp.StringOf('results[i].payments[j].marketplace_fee');
          order_id := jResp.IntOf('results[i].payments[j].order_id');
          currency_id := jResp.StringOf('results[i].payments[j].currency_id');
          status := jResp.StringOf('results[i].payments[j].status');
          transaction_order_id := jResp.StringOf('results[i].payments[j].transaction_order_id');
          k := 0;
          count_k := jResp.SizeOfArray('results[i].payments[j].available_actions');
          while k < count_k do
            begin
              jResp.K := k;
              strVal := jResp.StringOf('results[i].payments[j].available_actions[k]');
              k := k + 1;
            end;

          j := j + 1;
        end;

      j := 0;
      count_j := jResp.SizeOfArray('results[i].order_items');
      while j < count_j do
        begin
          jResp.J := j;
          itemSeller_custom_field := jResp.StringOf('results[i].order_items[j].item.seller_custom_field');
          itemCondition := jResp.StringOf('results[i].order_items[j].item.condition');
          itemCategory_id := jResp.StringOf('results[i].order_items[j].item.category_id');
          itemVariation_id := jResp.StringOf('results[i].order_items[j].item.variation_id');
          itemSeller_sku := jResp.StringOf('results[i].order_items[j].item.seller_sku');
          itemWarranty := jResp.StringOf('results[i].order_items[j].item.warranty');
          itemId := jResp.StringOf('results[i].order_items[j].item.id');
          itemTitle := jResp.StringOf('results[i].order_items[j].item.title');
          quantity := jResp.IntOf('results[i].order_items[j].quantity');
          differential_pricing_id := jResp.StringOf('results[i].order_items[j].differential_pricing_id');
          sale_fee := jResp.StringOf('results[i].order_items[j].sale_fee');
          listing_type_id := jResp.StringOf('results[i].order_items[j].listing_type_id');
          base_currency_id := jResp.StringOf('results[i].order_items[j].base_currency_id');
          unit_price := jResp.StringOf('results[i].order_items[j].unit_price');
          full_unit_price := jResp.StringOf('results[i].order_items[j].full_unit_price');
          base_exchange_rate := jResp.StringOf('results[i].order_items[j].base_exchange_rate');
          currency_id := jResp.StringOf('results[i].order_items[j].currency_id');
          manufacturing_days := jResp.StringOf('results[i].order_items[j].manufacturing_days');
          k := 0;
          count_k := jResp.SizeOfArray('results[i].order_items[j].item.variation_attributes');
          while k < count_k do
            begin
              jResp.K := k;
              k := k + 1;
            end;

          j := j + 1;
        end;

      j := 0;
      count_j := jResp.SizeOfArray('results[i].tags');
      while j < count_j do
        begin
          jResp.J := j;
          strVal := jResp.StringOf('results[i].tags[j]');
          j := j + 1;
        end;

      j := 0;
      count_j := jResp.SizeOfArray('results[i].mediations');
      while j < count_j do
        begin
          jResp.J := j;
          j := j + 1;
        end;

      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('available_sorts');
  while i < count_i do
    begin
      jResp.I := i;
      id_str := jResp.StringOf('available_sorts[i].id');
      name := jResp.StringOf('available_sorts[i].name');
      i := i + 1;
    end;

  i := 0;
  count_i := jResp.SizeOfArray('filters');
  while i < count_i do
    begin
      jResp.I := i;
      i := i + 1;
    end;



  http.Free;
  jsonToken.Free;
  sbResponseBody.Free;
  jResp.Free;
  date_closed.Free;
  date_last_updated.Free;
  date_created.Free;
  date_approved.Free;
  date_last_modified.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.