PacteryDevelopers

PHP 전체 예제

PHP 표준 cURL 확장으로 전체 흐름을 구성한 예제입니다.

<?php
$API = "https://api.pactery.com/v1";
$KEY = getenv("PACTERY_API_KEY");

function pactery($method, $path, $body = null) {
    global $API, $KEY;
    $ch = curl_init($API . $path);
    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST => $method,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            "Authorization: Bearer {$KEY}",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => $body ? json_encode($body) : null,
    ]);
    $res = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $json = json_decode($res, true);
    if ($code >= 400) throw new Exception($json["error"]["message"] ?? "HTTP {$code}");
    return $json;
}

// 1) 문서 생성
$doc = pactery("POST", "/documents", [
    "title" => "업무 위탁 계약서",
    "content" => "<h1>계약서</h1><p>...</p>",
]);

// 2) 서명자 지정
$signer = pactery("POST", "/documents/{$doc['id']}/participants", [
    "name" => "홍길동", "phone" => "01012345678", "role" => "signer",
]);

// 3) 서명 필드 배치
pactery("PUT", "/documents/{$doc['id']}/fields", [
    "fields" => [[
        "participant_id" => $signer["id"], "type" => "signature",
        "page" => 1, "x" => 0.62, "y" => 0.8, "width" => 0.25, "height" => 0.08,
    ]],
]);

// 4) 발송
pactery("POST", "/documents/{$doc['id']}/send", new stdClass());
echo "발송 완료: " . $doc["id"];