Repository navigation
Technical Plugin YPTWallet
Maintains wallet balances, payment idempotency and transaction-scoped fulfillment.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
- Code ownership: AVideo Streamer repository.
- Reported version:
6.3. - Source revision:
7d48f2dfc0289236718a3f9fba7c5ffecff4a37f. - Entry class file: YPTWallet.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
processPaymentOnce() serializes provider claims and wraps ledger changes in a transaction. runPaymentStep() uses a savepoint so a failed rental/renewal can be undone while legitimate wallet funding remains. Provider identity, credit and fulfillment must be checked separately.
No literal dependency declaration was extracted. This does not prove the plugin is standalone.
Literal runtime plugin references: AuthorizeNet, BTCPayments, Gift, PayPalYPT, RazorPayYPT, StripeYPT. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
YPTWallet.php:18 |
updateScript() |
YPTWallet.php:49 |
getDataObjectAdvanced() |
YPTWallet.php:58 |
getDataObjectDeprecated() |
YPTWallet.php:100 |
getDataObjectExperimental() |
YPTWallet.php:109 |
getHTMLMenuRight() |
YPTWallet.php:777 |
profileTabName($users_id) |
YPTWallet.php:790 |
getFooterCode() |
YPTWallet.php:1120 |
getWalletConfigurationHTML($users_id, $wallet, $walletDataObject) |
YPTWallet.php:1160 |
getPluginMenu() |
YPTWallet.php:1191 |
getPermissionsOptions() |
YPTWallet.php:1199 |
afterDonation($from_users_id, $how_much, $videos_id, $users_id, $extraParameters) |
YPTWallet.php:1253 |
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 |
|---|---|---|---|
decimalPrecision |
2 |
— | source |
wallet_button_title |
"My Wallet" |
— | source |
add_funds_text |
Computed/structured; inspect source | — | source |
add_funds_success_success |
Computed/structured; inspect source | — | source |
add_funds_success_cancel |
Computed/structured; inspect source | — | source |
add_funds_success_fail |
Computed/structured; inspect source | — | source |
transfer_funds_text |
Computed/structured; inspect source | — | source |
transfer_funds_success_success |
Computed/structured; inspect source | — | source |
transfer_funds_success_fail |
Computed/structured; inspect source | — | source |
withdraw_funds_text |
Computed/structured; inspect source | — | source |
withdraw_funds_success_success |
Computed/structured; inspect source | — | source |
withdraw_funds_success_fail |
Computed/structured; inspect source | — | source |
virtual_currency |
"HEART" |
— | source |
virtual_currency_symbol |
Computed/structured; inspect source | — | source |
virtual_currency_exchange_rate |
"2" |
— | source |
virtual_currency_decimalPrecision |
2.5 |
— | source |
virtual_currency_enable |
false |
— | source |
currency |
"USD" |
— | source |
currency_symbol |
Computed/structured; inspect source | — | source |
addFundsOptions |
Computed/structured; inspect source | — | source |
showWalletOnlyToAdmin |
false |
Show Wallet to Admin and selected user groups: If you check this you will need to specify what user group will be able to see the Wallet | source |
showWalletOnProfile |
true |
— | source |
showWalletOnTopMenu |
true |
— | source |
CryptoWalletName |
"Bitcoin Wallet Address" |
— | source |
CryptoWalletEnabled |
false |
— | source |
hideTransferFunds |
false |
— | source |
hideConfiguration |
false |
— | source |
enableAutomaticAddFundsPage |
true |
— | source |
enableManualAddFundsPage |
false |
— | source |
manualAddFundsMenuTitle |
"Add Funds/Deposit" |
— | source |
manualAddFundsPageButton |
"Notify Deposit Made" |
— | source |
manualAddFundsNotifyEmail |
Computed/structured; inspect source | — | source |
manualAddFundsTransferFromUserId |
1 |
— | source |
enableManualWithdrawFundsPage |
true |
— | source |
enableAutoWithdrawFundsPagePaypal |
false |
— | source |
withdrawFundsOptions |
Computed/structured; inspect source | — | source |
withdrawFundsSiteCutPercentage |
Computed/structured; inspect source | Withdraw Funds Site Cut Percentage: This percentage helps cover transaction fees charged by payment gateways when users load their wallets or make withdrawals. | source |
manualWithdrawFundsMenuTitle |
"Withdraw Funds" |
— | source |
manualWithdrawFundsPageButton |
"Request Withdraw" |
— | source |
manualWithdrawFundsNotifyEmail |
Computed/structured; inspect source | — | source |
manualWithdrawFundsTransferToUserId |
1 |
— | source |
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 |
|---|---|---|
| Objects/Wallet.php | class/helper implementation | — |
| Objects/WalletExport.php | class/helper implementation | — |
| Objects/Wallet_log.php | class/helper implementation | — |
| YPTWallet.php | plugin entry class | — |
| YPTWalletPlugin.php | class/helper implementation | — |
| buy.php | PHP page/include/worker; inspect caller | — |
| getBalance.json.php | JSON entry point; inspect caller and guard | — |
| getWalletConfigurationHTML.php | PHP page/include/worker; inspect caller | — |
| install/install.sql | schema/migration SQL | — |
| install/update.sql | schema/migration SQL | — |
| install/updateV4.0.sql | schema/migration SQL | — |
| install/updateV5.0.sql | schema/migration SQL | — |
| install/updateV5.1.sql | schema/migration SQL | — |
| install/updateV5.2.sql | schema/migration SQL | — |
| install/updateV6.0.sql | schema/migration SQL | — |
| install/updateV6.1.sql | schema/migration SQL | — |
| paymentsTest.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletAuthorizeNet/YPTWalletAuthorizeNet.php | class/helper implementation | — |
| plugins/YPTWalletAuthorizeNet/confirmButton.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletBTC/YPTWalletBTC.php | class/helper implementation | — |
| plugins/YPTWalletBTC/confirmButton.php | PHP page/include/worker; inspect caller |
plans_id, ppvlive_schedule_id
|
| plugins/YPTWalletBTC/requestPayment.json.php | JSON entry point; inspect caller and guard |
plans_id, plugin, ppvlive_schedule_id, value, videos_id
|
| plugins/YPTWalletBlockonomics/YPTWalletBlockonomics.php | class/helper implementation | — |
| plugins/YPTWalletBlockonomics/confirmButton.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletPayPal/YPTWalletPayPal.php | class/helper implementation | — |
| plugins/YPTWalletPayPal/cancel_url.php | PHP page/include/worker; inspect caller | invoice |
| plugins/YPTWalletPayPal/confirmButton.php | PHP page/include/worker; inspect caller |
plans_id, ppvlive_schedule_id
|
| plugins/YPTWalletPayPal/confirmRecurrentButton.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletPayPal/confirmRecurrentButtonV2.php | PHP page/include/worker; inspect caller | — |
| plugins/YPTWalletPayPal/redirect_url.php | PHP page/include/worker; inspect caller |
invoice, paymentId, token
|
| plugins/YPTWalletPayPal/requestPayment.json.php | JSON entry point; inspect caller and guard |
plans_id, plugin, ppvlive_schedule_id, value, videos_id
|
| plugins/YPTWalletPayPal/requestSubscription.json.php | JSON entry point; inspect caller and guard | plans_id |
| plugins/YPTWalletPayPal/requestSubscriptionV2.json.php | JSON entry point; inspect caller and guard | hash |
| plugins/YPTWalletRazorPay/YPTWalletRazorPay.php | class/helper implementation | — |
| plugins/YPTWalletRazorPay/cancel_url.php | PHP page/include/worker; inspect caller | — |
| plugins/YPTWalletRazorPay/confirmButton.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletRazorPay/confirmRecurrentButton.php | PHP page/include/worker; inspect caller | plans_id |
| plugins/YPTWalletRazorPay/redirect_url.php | PHP page/include/worker; inspect caller |
razorpay_order_id, razorpay_payment_id, razorpay_signature, razorpay_subscription_id
|
| plugins/YPTWalletRazorPay/requestPayment.json.php | JSON entry point; inspect caller and guard |
checkout, value
|
| plugins/YPTWalletRazorPay/requestSubscription.json.php | JSON entry point; inspect caller and guard | plans_id |
| plugins/YPTWalletStripe/YPTWalletStripe.php | class/helper implementation | — |
| plugins/YPTWalletStripe/checkoutStatus.php | PHP page/include/worker; inspect caller | — |
| plugins/YPTWalletStripe/checkoutStatusScript.php | PHP page/include/worker; inspect caller | — |
| plugins/YPTWalletStripe/confirmButton.php | PHP page/include/worker; inspect caller |
plans_id, plugin, ppvlive_schedule_id, users_id
|
| plugins/YPTWalletStripe/confirmRecurrentButton.php | PHP page/include/worker; inspect caller |
plans_id, videos_id
|
| plugins/YPTWalletStripe/requestPayment.json.php | JSON entry point; inspect caller and guard | value |
| plugins/YPTWalletStripe/requestSubscription.json.php | JSON entry point; inspect caller and guard |
plans_id, stripeToken
|
| script.js | browser/worker JavaScript; verify loader | — |
| tools/export.php | PHP page/include/worker; inspect caller | — |
| view/addFunds.php | PHP page/include/worker; inspect caller | status |
| view/adminManageWallets.php | PHP page/include/worker; inspect caller | — |
| view/autoWithdrawFunds.php | PHP page/include/worker; inspect caller | — |
| view/changeLogStatus.json.php | JSON entry point; inspect caller and guard |
status, wallet_log_id
|
| view/configuration.php | PHP page/include/worker; inspect caller | — |
| view/export.php | PHP page/include/worker; inspect caller |
end_date, start_date
|
| view/exportDownload.php | PHP page/include/worker; inspect caller |
end_date, format, report, start_date
|
| view/history.php | PHP page/include/worker; inspect caller | users_id |
| view/log.json.php | JSON entry point; inspect caller and guard |
sort, users_id
|
| view/manualAddFunds.json.php | JSON entry point; inspect caller and guard |
information, value
|
| view/manualAddFunds.php | PHP page/include/worker; inspect caller | status |
| view/manualWithdrawFunds.json.php | JSON entry point; inspect caller and guard |
information, value
|
| view/manualWithdrawFunds.php | PHP page/include/worker; inspect caller | status |
| view/menuRight.php | PHP page/include/worker; inspect caller | — |
| view/pendingRequests.json.php | JSON entry point; inspect caller and guard | sort |
| view/pendingRequests.php | PHP page/include/worker; inspect caller | — |
| view/saveBalance.php | PHP page/include/worker; inspect caller |
balance, users_id
|
| view/saveConfiguration.php | PHP page/include/worker; inspect caller |
CryptoWallet, donation_notification_url, regenerate_webhook_secret
|
| view/transferFunds.json.php | JSON entry point; inspect caller and guard |
captcha, users_id, value
|
| view/transferFunds.php | PHP page/include/worker; inspect caller | status |
| view/users.json.php | JSON entry point; inspect caller and guard |
current, rowCount
|
Tables named in available CREATE TABLE statements: wallet, wallet_log.
Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.
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 |
|---|---|
getTags() |
18 |
getDescription() |
26 |
getName() |
34 |
getUUID() |
39 |
getPluginVersion() |
44 |
updateScript() |
49 |
getDataObjectAdvanced() |
58 |
getDataObjectDeprecated() |
100 |
getDataObjectExperimental() |
109 |
getEmptyDataObject() |
117 |
getBalance($users_id) |
190 |
isStripePaymentCredited($paymentIntentId, $users_id) |
196 |
getBalanceText($users_id) |
201 |
getBalanceFormated($users_id) |
207 |
formatCurrency($value, $addHTML = false, $doNotUseVirtualCurrency = false, $currency = false, $decimalPrecisionOverride = false) |
221 |
getStep($doNotUseVirtualCurrency = false) |
247 |
formatFloat($value) |
260 |
getWallet($users_id) |
267 |
getOrCreateWallet($users_id) |
274 |
getAllUsers($activeOnly = true) |
285 |
getPublicUserFields(): array |
335 |
getAllUsersPublicFields($activeOnly = true): array |
344 |
getTotalBalance() |
354 |
getTotalBalanceText() |
382 |
getHistory($user_id) |
388 |
exchange($value) |
396 |
processPaymentOnce($provider, $paymentIds, $users_id, callable $process, array $options = []) |
414 |
runPaymentStep(callable $step, $label = '<string>') |
511 |
addBalance($users_id, $value, $description = "'<string>'{}", $mainWallet_user_id = 0, $noNotExchangeValue = false) |
553 |
saveBalance($users_id, $value) |
599 |
transferBalanceToSiteOwner($users_id_from, $value, $description = "", $forceTransfer = false) |
613 |
transferBalanceFromSiteOwner($users_id_from, $value, $description = "", $forceTransfer = false) |
628 |
transferBalanceFromMeToSiteOwner($value) |
638 |
transferBalanceFromOwnerToMe($value) |
646 |
transferBalance($fromUserId, $toUserId, $amount, $customDescription = "", $forceTransfer = false) |
654 |
transferAndSplitBalanceWithSiteOwner($users_id_from, $users_id_to, $value, $siteowner_percentage, $forceDescription = "") |
762 |
getHTMLMenuRight() |
777 |
profileTabName($users_id) |
790 |
getAvailablePayments() |
800 |
getAvailableRecurrentPayments($plans_id) |
823 |
getAvailableRecurrentPaymentsV2($total = '<string>', $currency = '<string>', $frequency = '<string>', $interval = 1, $name = ''<string>''<string>'', $trialDays = 0) |
849 |
getAvailablePlugins() |
875 |
getEnabledPlugins() |
892 |
getPluginDataObject($pluginName) |
908 |
getPluginDir() |
921 |
sendEmails($emailsArray, $subject, $message) |
928 |
replaceTemplateText($siteTitle, $footer, $message) |
937 |
send($emailsArray, $subject, $body) |
947 |
transactionNotification($from_users_id, $to_users_id, $value, $status) |
958 |
createNotification($from_users_id, $to_users_id, $title, $msg, $type, $element_id, $icon, $href) |
1019 |
processStatus($wallet_log_id, $new_status) |
1034 |
getUserBalance($users_id = 0) |
1108 |
getFooterCode() |
1120 |
setAddFundsSuccessRedirectURL($url) |
1130 |
getAddFundsSuccessRedirectURL() |
1136 |
setAddFundsSuccessRedirectToVideo($videos_id) |
1141 |
showAdminMessage() |
1146 |
getWalletConfigurationHTML($users_id, $wallet, $walletDataObject) |
1160 |
setLogInfo($wallet_log_id, $information) |
1166 |
setLogDescription($wallet_log_id, $description) |
1178 |
getPluginMenu() |
1191 |
getPermissionsOptions() |
1199 |
canSeeWallet() |
1206 |
setDonationNotificationURL($users_id, $url) |
1219 |
getDonationNotificationURL($users_id) |
1246 |
afterDonation($from_users_id, $how_much, $videos_id, $users_id, $extraParameters) |
1253 |
generateRandomString($length = 32) |
1326 |
setDonationNotificationSecret($users_id, $secret = null) |
1338 |
getDonationNotificationSecret($users_id) |
1361 |
regenerateDonationNotificationSecret($users_id) |
1375 |
getBillingInterval($howManyDays) |
1400 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: Wallet.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
13 |
getTableName() |
17 |
getBalance() |
21 |
getId() |
28 |
setId($id) |
32 |
getUsers_id() |
36 |
setBalance($balance) |
40 |
setUsers_id($users_id) |
44 |
getCrypto_wallet_address() |
50 |
setCrypto_wallet_address($crypto_wallet_address) |
54 |
loadFromUser($users_id) |
58 |
getFromUser($users_id) |
69 |
getFromWalletId($wallet_id) |
86 |
save() |
105 |
getFromUserForUpdate($users_id) |
138 |
getOrCreateFromUser($users_id) |
160 |
Declared classes: WalletExport.
| Named symbol | Source |
|---|---|
getWalletTransactionsRows($startDate = ''<string>'') |
13 |
getWalletBalancesRows() |
77 |
outputTransactionsCSV($stream, $rows) |
105 |
outputBalancesCSV($stream, $rows) |
148 |
buildWalletTransactionsText($rows, $startDate = ''<string>'') |
171 |
buildWalletBalancesText($rows) |
208 |
buildCombinedText($transactionsRows, $balancesRows, $startDate = ''<string>'') |
227 |
buildSimplePDF($text) |
236 |
buildPdfPageContent($lines) |
308 |
pdfEscape($text) |
322 |
toPdfText($text) |
330 |
singleLineText($text) |
342 |
toPlainText($text) |
349 |
wrapTextLine($text, $width = 120) |
357 |
normalizeDate($dateValue, $isEnd) |
367 |
Declared classes: WalletLog.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
14 |
getTableName() |
18 |
upgradePaymentLogSchema() |
23 |
getValue() |
52 |
getDescription() |
56 |
getWallet_id() |
60 |
getJson_data() |
64 |
setValue($value) |
68 |
setDescription($description) |
72 |
setWallet_id($wallet_id) |
78 |
setJson_data($json_data) |
82 |
getStatus() |
87 |
getType() |
91 |
setStatus($status) |
95 |
setType($type) |
99 |
getInformation() |
103 |
setInformation($information) |
107 |
getPrevious_wallet_balance() |
114 |
setPrevious_wallet_balance($previous_wallet_balance) |
118 |
getAllFromWallet($wallet_id, $dontReturnEmpty = true, $status="") |
123 |
getTotalFromWallet($wallet_id, $dontReturnEmpty = true, $status="") |
160 |
getAllFromUser($users_id, $dontReturnEmpty = true) |
185 |
getTotalFromUser($users_id, $dontReturnEmpty = true) |
194 |
hasProcessedPayment($provider, array $paymentIds, $wallet_id, array $options = []) |
210 |
addProcessedPayment($provider, $paymentId, $wallet_id, $balance) |
261 |
hasProcessedStripePaymentForUser($paymentIntentId, $users_id) |
268 |
addLog($wallet_id, $value, $previous_wallet_balance, $description="'<string>'{}'<string>'success'<string>'", $information='') |
285 |
save() |
305 |
Declared classes: YPTWalletPlugin.
| Named symbol | Source |
|---|---|
getAprovalButton() |
17 |
getEmptyDataObject() |
18 |
getValue() |
20 |
setValue($value) |
24 |
getInvoiceNumber() |
28 |
setInvoiceNumber($invoiceNumber) |
32 |
getCurrency() |
36 |
setCurrency($currency) |
40 |
getRecurrentAprovalButton($plans_id) |
44 |
getRecurrentAprovalButtonV2($total = '<string>', $currency = '<string>', $frequency = '<string>', $interval = 1, $name = ''<string>'', $trialDays = 0) |
47 |
Declared classes: YPTWalletAuthorizeNet.
| Named symbol | Source |
|---|---|
getAprovalLink() |
9 |
getAprovalButton() |
14 |
getRecurrentAprovalButton($plans_id) |
19 |
getEmptyDataObject() |
24 |
Declared classes: YPTWalletBTC.
| Named symbol | Source |
|---|---|
getAprovalButton() |
8 |
getEmptyDataObject() |
16 |
Declared classes: YPTWalletBlockonomics.
| Named symbol | Source |
|---|---|
getAprovalLink() |
14 |
getAprovalButton() |
29 |
getEmptyDataObject() |
34 |
Declared classes: YPTWalletPayPal.
| Named symbol | Source |
|---|---|
getAprovalLink() |
8 |
getAprovalButton() |
23 |
getRecurrentAprovalButton($plans_id) |
29 |
getRecurrentAprovalButtonV2($total = '<string>', $currency = '<string>', $frequency = '<string>', $interval = 1, $name = ''<string>''<string>'', $trialDays = 0) |
34 |
getEmptyDataObject() |
45 |
Declared classes: YPTWalletRazorPay.
| Named symbol | Source |
|---|---|
getAprovalButton() |
8 |
getRecurrentAprovalButton($plans_id) |
13 |
getEmptyDataObject() |
18 |
Declared classes: YPTWalletStripe.
| Named symbol | Source |
|---|---|
getAprovalButton() |
8 |
getRecurrentAprovalButton($plans_id) |
14 |
getEmptyDataObject() |
19 |
| Named symbol | Source |
|---|---|
askText($question, $default = '') |
137 |
askOption($question, $options, $default = '') |
154 |
readConsoleLine() |
190 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- 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.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides