Sample code for 30+ languages & platforms
PureBasic

Ecwid - Create Order

See more Ecwid Examples

Create a new order in an Ecwid store. This can be useful for storefronts with a custom checkout process or manually creating orders for sales made earlier.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; Create and send the following HTTP request:

    ; Load the access token previously obtained in Ecwid Get Access Token
    jsonToken.i = CkJsonObject::ckCreate()
    If jsonToken.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/ecwid.json")

    sbUrl.i = CkStringBuilder::ckCreate()
    If sbUrl.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkStringBuilder::ckAppend(sbUrl,"https://app.ecwid.com/api/v3/4870020/orders?token=")
    CkStringBuilder::ckAppend(sbUrl,CkJsonObject::ckStringOf(jsonToken,"access_token"))

    ; POST /api/v3/4870020/orders?token=1234567890qwqeertt HTTP/1.1
    ; Host: app.ecwid.com
    ; Content-Type: application/json;charset=utf-8
    ; Cache-Control: no-cache
    ; 
    ; {
    ;         "subtotal": 30,
    ;         "total": 40,
    ;         "email": "example@example.com",
    ;         "paymentMethod": "Phone order",
    ;         "tax": 0,
    ;         "paymentStatus": "PAID",
    ;         "customerTaxExempt": false,
    ;         "customerTaxId": "",
    ;         "customerTaxIdValid": false,
    ;         "reversedTaxApplied": false,
    ;         "fulfillmentStatus": "AWAITING_PROCESSING",
    ;         "createDate": "2015-09-20 19:59:43 +0000",
    ;         "items": [
    ;             {
    ;                 "price": 15,
    ;                 "weight": 0.32,
    ;                 "sku": "00004",
    ;                 "quantity": 2,
    ;                 "name": "Cherry"
    ;             }
    ;         ],
    ;         "billingPerson": {
    ;             "name": "Eugene K",
    ;             "companyName": "Hedgehog and Bucket",
    ;             "street": "My Street",
    ;             "city": "San Diego",
    ;             "countryCode": "US",
    ;             "postalCode": "90002",
    ;             "stateOrProvinceCode": "CA",
    ;             "phone": "123141321"
    ;         },
    ;         "shippingPerson": {
    ;             "name": "Eugene K",
    ;             "companyName": "Hedgehog and Bucket",
    ;             "street": "My Street",
    ;             "city": "San Diego",
    ;             "countryCode": "US",
    ;             "postalCode": "90002",
    ;             "stateOrProvinceCode": "CA",
    ;             "phone": "123141321"
    ;         },
    ;         "shippingOption": {
    ;             "shippingMethodName": "Fast Delivery",
    ;             "shippingRate": 10,
    ;             "isPickup": false,
    ;             "fulfilmentType": "DELIVERY"
    ;         },
    ;         "hidden": false,
    ;         "privateAdminNotes": "Must be delivered till Sunday.",
    ;         "acceptMarketing": false,
    ;         "disableAllCustomerNotifications": true,
    ;         "externalFulfillment": true,
    ;         "externalOrderId": "2",
    ;         "pricesIncludeTax": false  
    ;     }

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttp::ckSetRequestHeader(http,"Cache-Control","no-cache")

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateInt(json,"subtotal",30)
    CkJsonObject::ckUpdateInt(json,"total",40)
    CkJsonObject::ckUpdateString(json,"email","example@example.com")
    CkJsonObject::ckUpdateString(json,"paymentMethod","Phone order")
    CkJsonObject::ckUpdateInt(json,"tax",0)
    CkJsonObject::ckUpdateString(json,"paymentStatus","PAID")
    CkJsonObject::ckUpdateBool(json,"customerTaxExempt",0)
    CkJsonObject::ckUpdateString(json,"customerTaxId","")
    CkJsonObject::ckUpdateBool(json,"customerTaxIdValid",0)
    CkJsonObject::ckUpdateBool(json,"reversedTaxApplied",0)
    CkJsonObject::ckUpdateString(json,"fulfillmentStatus","AWAITING_PROCESSING")
    CkJsonObject::ckUpdateString(json,"createDate","2015-09-20 19:59:43 +0000")
    CkJsonObject::ckUpdateInt(json,"items[0].price",15)
    CkJsonObject::ckUpdateNumber(json,"items[0].weight","0.32")
    CkJsonObject::ckUpdateString(json,"items[0].sku","00004")
    CkJsonObject::ckUpdateInt(json,"items[0].quantity",2)
    CkJsonObject::ckUpdateString(json,"items[0].name","Cherry")
    CkJsonObject::ckUpdateString(json,"billingPerson.name","Eugene K")
    CkJsonObject::ckUpdateString(json,"billingPerson.companyName","Hedgehog and Bucket")
    CkJsonObject::ckUpdateString(json,"billingPerson.street","My Street")
    CkJsonObject::ckUpdateString(json,"billingPerson.city","San Diego")
    CkJsonObject::ckUpdateString(json,"billingPerson.countryCode","US")
    CkJsonObject::ckUpdateString(json,"billingPerson.postalCode","90002")
    CkJsonObject::ckUpdateString(json,"billingPerson.stateOrProvinceCode","CA")
    CkJsonObject::ckUpdateString(json,"billingPerson.phone","123141321")
    CkJsonObject::ckUpdateString(json,"shippingPerson.name","Eugene K")
    CkJsonObject::ckUpdateString(json,"shippingPerson.companyName","Hedgehog and Bucket")
    CkJsonObject::ckUpdateString(json,"shippingPerson.street","My Street")
    CkJsonObject::ckUpdateString(json,"shippingPerson.city","San Diego")
    CkJsonObject::ckUpdateString(json,"shippingPerson.countryCode","US")
    CkJsonObject::ckUpdateString(json,"shippingPerson.postalCode","90002")
    CkJsonObject::ckUpdateString(json,"shippingPerson.stateOrProvinceCode","CA")
    CkJsonObject::ckUpdateString(json,"shippingPerson.phone","123141321")
    CkJsonObject::ckUpdateString(json,"shippingOption.shippingMethodName","Fast Delivery")
    CkJsonObject::ckUpdateInt(json,"shippingOption.shippingRate",10)
    CkJsonObject::ckUpdateBool(json,"shippingOption.isPickup",0)
    CkJsonObject::ckUpdateString(json,"shippingOption.fulfilmentType","DELIVERY")
    CkJsonObject::ckUpdateBool(json,"hidden",0)
    CkJsonObject::ckUpdateString(json,"privateAdminNotes","Must be delivered till Sunday.")
    CkJsonObject::ckUpdateBool(json,"acceptMarketing",0)
    CkJsonObject::ckUpdateBool(json,"disableAllCustomerNotifications",1)
    CkJsonObject::ckUpdateBool(json,"externalFulfillment",1)
    CkJsonObject::ckUpdateString(json,"externalOrderId","2")
    CkJsonObject::ckUpdateBool(json,"pricesIncludeTax",0)

    url.s = CkStringBuilder::ckGetAsString(sbUrl)
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST",url,json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkJsonObject::ckDispose(jsonToken)
        CkStringBuilder::ckDispose(sbUrl)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpResponse::ckGetBodySb(resp,sbResponseBody)
    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

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

    ; {
    ;   "id": 20,
    ;   "orderid": "XJ12H"
    ; }

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

    id.i = CkJsonObject::ckIntOf(jResp,"id")
    orderid.s = CkJsonObject::ckStringOf(jResp,"orderid")


    CkJsonObject::ckDispose(jsonToken)
    CkStringBuilder::ckDispose(sbUrl)
    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure