Sample code for 30+ languages & platforms
Objective-C

Calculate a X_RISKIFIED_HMAC_SHA256 for riskified.com API Calls

See more REST Misc Examples

Demonstrates how to calculate the value for the X_RISKIFIED_HMAC_SHA256 header for riskified.com HTTP requests (REST API calls).

Chilkat Objective-C Downloads

Objective-C
#import <CkoJsonObject.h>
#import <NSString.h>
#import <CkoCrypt2.h>
#import <CkoStringBuilder.h>

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

//  Create the JSON that is to be the body of the HTTP request.
//  The JSON created by this code is shown at the bottom of this example.
//  
//  The JSON Code Generator at http://tools.chilkat.io/ can be used
//  to generate the following code from sample JSON.

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateNull: @"order.cancel_reason"];
[json UpdateNull: @"order.cancelled_at"];
[json UpdateString: @"order.cart_token" value: @"68778783ad298f1c80c3bafcddeea02f"];
[json UpdateNull: @"order.closed_at"];
[json UpdateString: @"order.created_at" value: @"2008-01-10T11:00:00-05:00"];
[json UpdateString: @"order.currency" value: @"USD"];
[json UpdateString: @"order.email" value: @"bob.norman@hostmail.com"];
[json UpdateString: @"order.gateway" value: @"authorize_net"];
[json UpdateNumber: @"order.id" numericStr: @"450789469"];
[json UpdateString: @"order.total_discounts" value: @"0.00"];
[json UpdateString: @"order.total_price" value: @"409.94"];
[json UpdateString: @"order.updated_at" value: @"2008-01-10T11:00:00-05:00"];
[json UpdateString: @"order.note" value: @"some note made by the shop’s stuff member"];
[json UpdateNull: @"order.browser_ip"];
[json UpdateString: @"order.discount_codes[0].amount" value: @"10.00"];
[json UpdateString: @"order.discount_codes[0].code" value: @"TENOFF"];
[json UpdateString: @"order.line_items[0].title" value: @"IPod Nano - 8gb - green"];
[json UpdateNumber: @"order.line_items[0].price" numericStr: @"199.00"];
[json UpdateNumber: @"order.line_items[0].product_id" numericStr: @"632910392"];
[json UpdateNumber: @"order.line_items[0].quantity" numericStr: @"1"];
[json UpdateString: @"order.line_items[0].sku" value: @"IPOD2008GREEN"];
[json UpdateString: @"order.shipping_lines[0].code" value: @"Free Shipping"];
[json UpdateString: @"order.shipping_lines[0].price" value: @"0.00"];
[json UpdateString: @"order.shipping_lines[0].title" value: @"Free Shipping"];
[json UpdateNull: @"order.payment_details.avs_result_code"];
[json UpdateNull: @"order.payment_details.credit_card_bin"];
[json UpdateString: @"order.payment_details.credit_card_company" value: @"Visa"];
[json UpdateString: @"order.payment_details.credit_card_number" value: @"XXXX-XXXX-XXXX-4242"];
[json UpdateNull: @"order.payment_details.cvv_result_code"];
[json UpdateString: @"order.payment_details.authorization_id" value: @"RK346IK124"];
[json UpdateString: @"order.billing_address.address1" value: @"Chestnut Street 92"];
[json UpdateString: @"order.billing_address.address2" value: @""];
[json UpdateString: @"order.billing_address.city" value: @"Louisville"];
[json UpdateNull: @"order.billing_address.company"];
[json UpdateString: @"order.billing_address.country" value: @"United States"];
[json UpdateString: @"order.billing_address.country_code" value: @"US"];
[json UpdateString: @"order.billing_address.first_name" value: @"Bob"];
[json UpdateString: @"order.billing_address.last_name" value: @"Norman"];
[json UpdateString: @"order.billing_address.name" value: @"Bob Norman"];
[json UpdateString: @"order.billing_address.phone" value: @"555-625-1199"];
[json UpdateString: @"order.billing_address.province" value: @"Kentucky"];
[json UpdateString: @"order.billing_address.province_code" value: @"KY"];
[json UpdateString: @"order.billing_address.zip" value: @"40202"];
[json UpdateString: @"order.shipping_address.address1" value: @"Chestnut Street 92"];
[json UpdateString: @"order.shipping_address.address2" value: @""];
[json UpdateString: @"order.shipping_address.city" value: @"Louisville"];
[json UpdateNull: @"order.shipping_address.company"];
[json UpdateString: @"order.shipping_address.country" value: @"United States"];
[json UpdateString: @"order.shipping_address.country_code" value: @"US"];
[json UpdateString: @"order.shipping_address.first_name" value: @"Bob"];
[json UpdateString: @"order.shipping_address.last_name" value: @"Norman"];
[json UpdateString: @"order.shipping_address.name" value: @"Bob Norman"];
[json UpdateString: @"order.shipping_address.phone" value: @"555-625-1199"];
[json UpdateString: @"order.shipping_address.province" value: @"Kentucky"];
[json UpdateString: @"order.shipping_address.province_code" value: @"KY"];
[json UpdateString: @"order.shipping_address.zip" value: @"40202"];
[json UpdateString: @"order.customer.created_at" value: @"2013-04-23T13:36:50-04:00"];
[json UpdateString: @"order.customer.email" value: @"bob.norman@hostmail.com"];
[json UpdateString: @"order.customer.first_name" value: @"Bob"];
[json UpdateNumber: @"order.customer.id" numericStr: @"207119551"];
[json UpdateString: @"order.customer.last_name" value: @"Norman"];
[json UpdateNull: @"order.customer.note"];
[json UpdateNumber: @"order.customer.orders_count" numericStr: @"0"];
[json UpdateBool: @"order.customer.verified_email" value: YES];

//  Emit the JSON in compact format..
json.EmitCompact = YES;
//  Get the JSON that will be HMAC'd and will also be the contents of the HTTP request body.
NSString *jsonBody = [json Emit];

CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];
crypt.EncodingMode = @"hex";
crypt.HashAlgorithm = @"sha256";
crypt.MacAlgorithm = @"hmac";

[crypt SetMacKeyString: @"55fe0f4d4023bbdfbc124cabd88bf9bb"];

NSString *hmacHexStr = [crypt MacStringENC: jsonBody];
if (crypt.LastMethodSuccess != YES) {
    NSLog(@"%@",crypt.LastErrorText);
    return;
}

//  We need a lowercase hmacHexStr...
CkoStringBuilder *sbHmacHex = [[CkoStringBuilder alloc] init];
[sbHmacHex Append: hmacHexStr];
[sbHmacHex ToLowercase];

hmacHexStr = [sbHmacHex GetAsString];

NSLog(@"%@%@",@"The value of the X_RISKIFIED_HMAC_SHA256 should be: ",hmacHexStr);

//  This example is only to show the HMAC SHA256 calculation.
//  See examples of sending REST requests to riskified.com at http://rest-examples.chilkat.io/riskified/default.cshtml

//  ----------------------------------------------
//  This is the JSON created by the above code..

//  {
//    "order": {
//      "cancel_reason": null,
//      "cancelled_at": null,
//      "cart_token": "68778783ad298f1c80c3bafcddeea02f",
//      "closed_at": null,
//      "created_at": "2008-01-10T11:00:00-05:00",
//      "currency": "USD",
//      "email": "bob.norman@hostmail.com",
//      "gateway": "authorize_net",
//      "id": 450789469,
//      "total_discounts": "0.00",
//      "total_price": "409.94",
//      "updated_at": "2008-01-10T11:00:00-05:00",
//      "note": "some note made by the shop’s stuff member",
//      "browser_ip": null,
//      "discount_codes": [
//          {
//              "amount": "10.00",
//              "code": "TENOFF"
//          }
//      ],
//      "line_items": [
//          {
//              "title": "IPod Nano - 8gb - green",
//              "price": 199.00,
//              "product_id": 632910392,
//              "quantity": 1,
//              "sku": "IPOD2008GREEN"
//          }
//      ],
//      "shipping_lines": [
//          {
//              "code": "Free Shipping",
//              "price": "0.00",
//              "title": "Free Shipping"
//          }
//      ],
//      "payment_details": {
//          "avs_result_code": null,
//          "credit_card_bin": null,
//          "credit_card_company": "Visa",
//          "credit_card_number": "XXXX-XXXX-XXXX-4242",
//          "cvv_result_code": null,
//          "authorization_id": "RK346IK124"
//      },
//      "billing_address": {
//          "address1": "Chestnut Street 92",
//          "address2": "",
//          "city": "Louisville",
//          "company": null,
//          "country": "United States",
//          "country_code": "US",
//          "first_name": "Bob",
//          "last_name": "Norman",
//          "name": "Bob Norman",
//          "phone": "555-625-1199",
//          "province": "Kentucky",
//          "province_code": "KY",
//          "zip": "40202"
//      },
//      "shipping_address": {
//          "address1": "Chestnut Street 92",
//          "address2": "",
//          "city": "Louisville",
//          "company": null,
//          "country": "United States",
//          "country_code": "US",
//          "first_name": "Bob",
//          "last_name": "Norman",
//          "name": "Bob Norman",
//          "phone": "555-625-1199",
//          "province": "Kentucky",
//          "province_code": "KY",
//          "zip": "40202"
//      },
//      "customer": {
//          "created_at": "2013-04-23T13:36:50-04:00",
//          "email": "bob.norman@hostmail.com",
//          "first_name": "Bob",
//          "id": 207119551,
//          "last_name": "Norman",
//          "note": null,
//          "orders_count": 0,
//          "verified_email": true
//      }
//   }
//  }