atalanda/signature-php

该包最新版本(1.0.3-beta)没有可用的许可信息。

1.0.3-beta 2014-02-10 09:47 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:01:48 UTC


README

AtalandaSignature-php 提供了一个简单的 PHP 类,允许您对发送到 atalogics API 的请求进行签名,并验证我们的回调。

安装

安装库的最佳方式是通过使用 Composer。在项目的根目录下,将以下内容添加到 composer.json

{ 
  "require": {
    "atalanda/signature-php": "dev-master"
  }
}

然后,在命令行中

composer install

使用生成的 vendor/autoload.php 文件来自动加载库类。

用法

签名 API 调用

使用此功能向发送到我们 API 的参数哈希中添加有效的签名。

$parameters = array(
  "atalogics" => array()
);
$token = new Atalogics\Signature\Token("[Your API key]", "[Your API secret]");
$request = new Atalogics\Signature\Request("POST", "https://atalogics.com/api/order", $parameters);
$signedParameters = $request->sign($token);

var_dump($signedParameters);
/* => array(5) {
  'atalogics' => array()
  'auth_timestamp' =>
  int(1391167211)
  'auth_key' =>
  string(4) "[Your API key]"
  'auth_signature' =>
  string(64) "552beac4b99949a556b120b7e5f7e22def46f663992a08f0f132ad4afee68b9f"
}*/

示例

https://atalogics.com/api/orderOffer 发送以下 JSON 的 POST 请求

{
  "atalogics": {
    "api_key": "5f70fd232454e5c142566dbacc3dec5",
    "offer_id": "33/2014-01-22/1/2014-01-22",
    "expected_fee": 5.59,
    "external_id": "AZDF-234",
    "url_state_update": "https://ihr-server.de/atalogics/callbacks",
    "catch": {
        "name": "Top Fashion Shop",
        "street": "Schneiderstraße 20",
        "postal_code": "5020",
        "city": "Salzburg",
        "phone_number": "123456",
        "email": "info@fashionshop.de"
    },
    "drop": {
        "name": "Marta Musterkundin",
        "street": "Kaufstr. 76",
        "postal_code": "5020",
        "city": "Salzburg",
        "phone_number": "435236",
        "email": "marta@musterkundin.de",
        "extra_services": ["R18"]
    }
  }
}
$token = new Atalogics\Signature\Token("[Your API key]", "[Your API secret]");
$request = new Atalogics\Signature\Request("POST", "https://atalogics.com/api/orderOffer", $parameters); //  parameters contains a hash representing the json above
$signedParameters = $request->sign($token);
// Now send a post request to our api and set the body to the json encoded version of $signed_parameters

如果您进行 GET 请求,也必须对所有 URL 参数进行签名。只需将它们包含在参数哈希中。将生成的认证参数与其他 URL 参数一起发送,例如

https://atalogics.com/api/status?tracking_id=42ef32a&api_key=abcde**&auth_signature=ab332d2f&auth_timestamp=123244&auth_key=abcde**

验证我们的回调签名

使用此功能验证我们的回调签名。

$data = json_decode($body, true); // convert json from post body into php array
$token = new Atalogics\Signature\Token("[Your API key]", "[Your API secret]");
$request = new Atalogics\Signature\Request("POST", "https://your-server.com/callback", $data);
$signatureCheckResult = $request->authenticate($token);

if($signatureCheckResult["authenticated"] === true) {
  // signature is valid
}