Skip to content

Technical Plugin AuthorizeNet

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical: AuthorizeNet plugin

Integrates Authorize.Net checkout, customer profiles, subscriptions and reconciliation.

Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: AVideo Streamer repository.
  • Reported version: 1.2.
  • Source revision: 7d48f2dfc0289236718a3f9fba7c5ffecff4a37f.
  • Entry class file: AuthorizeNet.php.

Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.

Behavior and operational checks

Pending payments, verified transaction details, wallet credit and plan fulfillment are separate states. Periodic reconciliation can recover a payment without a browser return. Provider delivery and recurring-payment behavior require sandbox verification.

Dependencies

Plugin Required by declaration Source reason
YPTWallet Required Credits successful payments to the user wallet balance
Subscription Optional Optional recurring subscription plan integration

Literal runtime plugin references: YPTWallet. These calls do not mean every referenced plugin is mandatory.

Hook integration

Override Implementation
getTags() AuthorizeNet.php:1796
updateScript() AuthorizeNet.php:1821
executeEveryMinute() AuthorizeNet.php:1834
getPluginMenu() AuthorizeNet.php:1839

Configuration assignments

These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.

Field Literal default or expression type Literal source label/help Evidence
apiLoginId "" — source
transactionKey Private setting; value omitted — source
signatureKey Private setting; value omitted — source
sandbox true — source
subscriptionButtonLabel "Subscribe With Credit Card" — source
paymentButtonLabel "Pay With Credit Card" — source

Files and request surface

This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.

File Source role Direct request fields observed
AuthorizeNet.php plugin entry class —
Objects/Anet_pending_payment.php class/helper implementation —
Objects/Anet_webhook_log.php class/helper implementation —
View/Anet_webhook_log/add.json.php JSON entry point; inspect caller and guard created_php_time, error_text, event_type, id, modified_php_time, payload_json, processed, status, trans_id, uniq_key, users_id
View/Anet_webhook_log/delete.json.php JSON entry point; inspect caller and guard id
View/Anet_webhook_log/index.php PHP page/include/worker; inspect caller —
View/Anet_webhook_log/index_body.php PHP page/include/worker; inspect caller —
View/Anet_webhook_log/list.json.php JSON entry point; inspect caller and guard draw
View/editor.php PHP page/include/worker; inspect caller —
acceptHostedReturn.php PHP page/include/worker; inspect caller cancel
cancelSubscription.json.php JSON entry point; inspect caller and guard subscriptionId
cancelSubscription.php PHP page/include/worker; inspect caller subscription_id
getAcceptHostedToken.json.php JSON entry point; inspect caller and guard amount, plans_id
getProfileManager.json.php JSON entry point; inspect caller and guard —
getSubscriptionStatus.json.php JSON entry point; inspect caller and guard subscriptionId
getSubscriptions.json.php JSON entry point; inspect caller and guard —
install/install.sql schema/migration SQL —
install/updateV1.1.sql schema/migration SQL —
install/updateV1.2.sql schema/migration SQL —
processTransaction.json.php JSON entry point; inspect caller and guard —
registerWebhook.json.php JSON entry point; inspect caller and guard —
webhook.php PHP page/include/worker; inspect caller —

Data and migrations

Tables named in available CREATE TABLE statements: anet_pending_payment, anet_webhook_log. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.

Main-file named symbols

Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.

Function or method Source
getPluginDependencies() 42
verifySignature(string $rawBody, array $headers, string $signatureKey): bool 61
parseWebhookRequest(string $rawBody, array $headers, array $allowedEvents = ['<string>']): array 92
extractUsersIdFromTxnRaw($txnRaw): ?int 133
analyzeTransactionFromWebhook(array $payload, $transactionRawObject = null): array 165
processSinglePayment( int $users_id, float $amount, string $uniq_key, string $eventType, array $payload = [], string $description = '<string>', string $transactionId = '' ): array 252
processSubscriptionCharge( string $subscriptionId, int $users_id, float $amount, string $uniq_key, string $eventType, array $payload = [], string $description = '<string>' ): array 331
processSubscriptionChargeWithPlan(array $analysis, string $uniq_key, string $eventType, array $payload): array 384
buildWebhookUniqKey(string $eventType, string $transactionId): string 434
acquireProcessingLock(string $lockKey, int $timeoutSeconds = 10): bool 439
releaseProcessingLock(string $lockKey): void 453
generatePendingReference(): string 464
createPendingPayment(int $users_id, float $amount, array $metadata = [], string $currency = '<string>'): array 469
getPendingRecordFromTxnInfo(array $txnInfo): ?array 495
markPendingPaymentFromTxnInfo(array $txnInfo, string $transactionId): void 521
createOrRenewPlanSubscription(array $analysis, string $transactionId): ?array 529
processApprovedTransaction( string $transactionId, ?string $uniq_key = null, string $eventType = '<string>', array $payload = [] ): array 587
getRecentCustomerTransactions(string $customerProfileId, int $limit = 10): array 678
findRecentApprovedTransactionForUser(int $users_id, ?float $expectedAmount = null, int $lookbackSeconds = 1800): array 724
reconcilePendingPayment(array $pending): array 782
reconcilePendingPayments(int $limit = 20, int $maxAgeSeconds = 3600): array 844
getDefaultPaymentProfileId(string $customerProfileId): ?string 854
createSubscription( int $users_id, float $amount, array $metadata = [], int $intervalLength = 1, string $intervalUnit = '<string>', ): array 887
isSubscriptionActive(string $subscriptionId): array 1002
generateHostedPaymentPage(float $amount, array $metadata = [], string $currency = '<string>'): array 1044
generateManageProfileToken(): array 1161
getCustomerProfileIdByMerchantCustomerId($merchantCustomerId) 1193
getOrCreateCustomerProfile(int $users_id) 1229
getCustomerProfile(string $customerProfileId): ?array 1286
createWebhook(string $webhookUrl, array $eventTypes = ['<string>']) 1345
checkNotificationHistory(string $query = '<string>', bool $fetchAllDetails = false): array 1360
getNotificationDetail(string $notificationId): array 1412
webhookExists(string $webhookUrl) 1421
updateWebhookEventTypes(string $webhookId, array $eventTypes) 1440
reactivateWebhook(string $webhookId): array 1445
createWebhookIfNotExists(array $eventTypes = ['<string>']) 1457
ensureWebhookOrDie(array $eventTypes = ['<string>']): void 1504
getTransactionDetails(string $transactionId): array 1535
abortWebhook(string $msg): void 1644
getConfig() 1653
getMerchantAuthentication(): AnetAPI\MerchantAuthenticationType 1658
getEnvironment() 1667
getHostedBaseUrl(string $path): string 1676
getRestBaseUrl(): string 1687
getWebhookURL(): string 1697
restWebhook(string $method, string $path, ?array $payload = null): array 1706
extractSdkError($response): string 1755
extractRestError(array $res): string 1780
getTags() 1796
getDescription() 1801
getName() 1806
getUUID() 1811
getPluginVersion() 1816
updateScript() 1821
executeEveryMinute() 1834
getPluginMenu() 1839
getEmptyDataObject() 1845
getCustomerSubscriptions(string $customerProfileId): array 1864
getSubscriptionDetails(string $subscriptionId): array 1932
checkUserActiveSubscriptions(int $users_id, ?string $plans_id = null): array 2025
cancelSubscription(string $subscriptionId): array 2081
getUserActiveSubscriptions(int $users_id): array 2123
getSubscriptionWithCurrentStatus(string $subscriptionId): array 2160

Supporting PHP declarations

These symbols are grouped by source file; inspect the class declaration and visibility before calling them.

Objects/Anet_pending_payment.php

Declared classes: Anet_pending_payment.

Named symbol Source
enableInternalSaveBypass(): void 9
getSearchFieldsNames() 15
getTableName() 20
setId($id) 25
setRef_id($ref_id) 26
setUsers_id($users_id) 27
setPlans_id($plans_id) 28
setAmount($amount) 29
setCurrency($currency) 30
setStatus($status) 31
setTransaction_id($transaction_id) 32
setMetadata_json($metadata_json) 33
setAttempts($attempts) 34
setLast_checked_php_time($last_checked_php_time) 35
setCreated_php_time($created_php_time) 36
setModified_php_time($modified_php_time) 37
setError_text($error_text) 38
getId() 40
getRef_id() 41
getUsers_id() 42
getPlans_id() 43
getAmount() 44
getCurrency() 45
getStatus() 46
getTransaction_id() 47
getMetadata_json() 48
getAttempts() 49
getLast_checked_php_time() 50
getCreated_php_time() 51
getModified_php_time() 52
getError_text() 53
getFromRefId(string $refId) 55
getOpenByUsersId(int $users_id, int $limit = 10): array 64
getRecentOpen(int $limit = 20, int $maxAgeSeconds = 3600): array 73
createPending(string $refId, int $users_id, float $amount, array $metadata = [], string $currency = '<string>'): int 83
markChecked(int $id, string $status = '<string>', string $errorText = ''): bool 102
markProcessedById(int $id, string $transactionId): bool 119
markProcessedByRefId(string $refId, string $transactionId): bool 134

Objects/Anet_webhook_log.php

Declared classes: Anet_webhook_log.

Named symbol Source
enableInternalSaveBypass(): void 10
getSearchFieldsNames() 16
getTableName() 21
setId($id) 26
setUniq_key($uniq_key) 30
setEvent_type($event_type) 34
setTrans_id($trans_id) 38
setPayload_json($payload_json) 42
setProcessed($processed) 46
setError_text($error_text) 50
setStatus($status) 54
setCreated_php_time($created_php_time) 58
setModified_php_time($modified_php_time) 62
setUsers_id($users_id) 66
getId() 71
getUniq_key() 75
getEvent_type() 79
getTrans_id() 83
getPayload_json() 87
getProcessed() 91
getError_text() 95
getStatus() 99
getCreated_php_time() 103
getModified_php_time() 107
getUsers_id() 111
alreadyProcessed($uniq_key, $transactionId = '') 116
getFromUniqKey($uniq_key) 138
getFromTransactionId($transactionId) 151
getExistingLog($uniq_key, $transactionId = '') 166
createIfNotExists($uniq_key, $event_type, $payload_json, $users_id = 0, $transactionId = '') 181

Diagnostics and validation

  1. Check the installed/enabled version and the dependencies/settings above.
  2. Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
  3. Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
  4. Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.

Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.

Clone this wiki locally