| 开发者 | sightfactory |
|---|---|
| 更新时间 | 2026年9月15日 23:22 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
page/per_page or cursor sync via since_id/before_id./form/{id}/submission/{sub_id}) with cross-form ownership validation./wp-content/plugins/ directory.Authorization: Bearer YOUR_API_KEY.JSON, CSV, XLSX (Microsoft Excel), PDF, XML, and NDJSON/JSONL formats are supported.
Use cursor pagination with ?since_id={last_synced_id}&order=asc. Your application only receives new submissions created since the last sync.
Navigate to Settings > NF API Keys in your WordPress dashboard, check "Enable Response Payload Encryption", select your cipher strategy (AES-256-GCM, AES-128-GCM, or Sodium Secretbox), and generate a key. Keep your secret decryption key safe.
Binary files exported with encryption enabled are saved with a .enc file extension (e.g., form-1-submissions-encrypted.pdf.enc). Because the file content consists of raw encrypted bytes, attempting to open the file directly in Adobe Reader or Microsoft Excel without decrypting it first will report a corrupted file error. The .enc extension clearly indicates that the file must be decrypted using your secret key first.
Read the binary body and HTTP response headers (X-Crypto-IV, X-Crypto-Tag):
```php
$response = wp_remote_get('https://example.com/wp-json/nf-submissions/v1/form/1?format=pdf', [
'headers' => ['Authorization' => 'Bearer YOUR_API_KEY']
]);
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
exit( 'Download failed or unauthorized.' );
}
$headers = wp_remote_retrieve_headers($response);
$binary_key = hex2bin('YOUR_DECRYPTION_KEY');
$iv = base64_decode($headers['x-crypto-iv']);
$tag = base64_decode($headers['x-crypto-tag']);
$decrypted_pdf = openssl_decrypt(
wp_remote_retrieve_body($response),
'aes-256-gcm',
$binary_key,
OPENSSL_RAW_DATA,
$iv,
$tag
);
file_put_contents('submissions.pdf', $decrypted_pdf);
```
Parse the JSON response envelope and decrypt using OpenSSL:
php
$json = json_decode($response_body, true);
if (!empty($json['encrypted'])) {
$binary_key = hex2bin('YOUR_DECRYPTION_KEY');
$plaintext = openssl_decrypt(
base64_decode($json['ciphertext']),
$json['algorithm'],
$binary_key,
OPENSSL_RAW_DATA,
base64_decode($json['iv']),
base64_decode($json['tag'])
);
$data = json_decode($plaintext, true);
}
No. Text feeds use lightweight JSON structures and binary feeds use raw stream transmission to ensure high throughput and low memory usage.