Donations by Siropu

Donations by Siropu [Paid] 1.6.0

No permission to buy (€20.00)
Getting an error on this, suddenly it won't add the amount on the new 2026 goal. I tried a manual donation and got this error.

Code:
Server error log
GuzzleHttp\Exception\ClientException: Currency Exchange API: Client error: `GET https://v6.exchangerate-api.com/v6/pair/USD//50` resulted in a `404 Not Found` response: <html> <head><title>404 Not Found</title></head> <body> <center><h1>404 Not Found</h1></center> <hr><center>nginx</c (truncated...) Client error: `GET https://v6.exchangerate-api.com/v6/pair/USD//50` resulted in a `404 Not Found` response: <html> <head><title>404 Not Found</title></head> <body> <center><h1>404 Not Found</h1></center> <hr><center>nginx</c (truncated...) src/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113
Generated by: anthony Jan 2, 2026 at 4:49 PM
Stack trace
#0 src/vendor/guzzlehttp/guzzle/src/Middleware.php(72): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response), NULL, Array, NULL)
#1 src/vendor/guzzlehttp/promises/src/Promise.php(209): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response))
#2 src/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), NULL)
#3 src/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#4 src/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Promise\TaskQueue->run(true)
#5 src/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn()
#6 src/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending()
#7 src/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList()
#8 src/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending()
#9 src/vendor/guzzlehttp/guzzle/src/Client.php(189): GuzzleHttp\Promise\Promise->wait()
#10 src/vendor/guzzlehttp/guzzle/src/ClientTrait.php(44): GuzzleHttp\Client->request('GET', 'https://v6.exch...', Array)
#11 src/addons/Siropu/Donations/Service/CurrencyConversion.php(27): GuzzleHttp\Client->get('https://v6.exch...')
#12 src/addons/Siropu/Donations/Service/CurrencyConversion.php(19): Siropu\Donations\Service\CurrencyConversion->getApiResponse()
#13 src/XF/Container.php(275): Siropu\Donations\Service\CurrencyConversion->__construct(Object(XF\Admin\App), Array)
#14 src/XF/App.php(1967): XF\Container->createObject('Siropu\\Donation...', Array)
#15 src/XF/Container.php(233): XF\App->XF\{closure}('Siropu\\Donation...', Array, Object(XF\Container))
#16 src/XF/App.php(3548): XF\Container->create('service', 'Siropu\\Donation...', Array)
#17 src/XF.php(1203): XF\App->service('Siropu\\Donation...', Array)
#18 src/addons/Siropu/Donations/Entity/Donation.php(227): XF::service('Siropu\\Donation...', Array)
#19 src/XF/Mvc/Entity/Entity.php(1421): Siropu\Donations\Entity\Donation->_preSave()
#20 src/XF/Mvc/Entity/Entity.php(1272): XF\Mvc\Entity\Entity->preSave()
#21 src/addons/Siropu/Donations/Admin/Controller/Donation.php(111): XF\Mvc\Entity\Entity->save()
#22 src/XF/Mvc/Dispatcher.php(362): Siropu\Donations\Admin\Controller\Donation->actionSave(Object(XF\Mvc\ParameterBag))
#23 src/XF/Mvc/Dispatcher.php(264): XF\Mvc\Dispatcher->dispatchClass('Siropu\\Donation...', 'Save', Object(XF\Mvc\RouteMatch), Object(Siropu\Donations\Admin\Controller\Donation), NULL)
#24 src/XF/Mvc/Dispatcher.php(121): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(Siropu\Donations\Admin\Controller\Donation), NULL)
#25 src/XF/Mvc/Dispatcher.php(63): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#26 src/XF/App.php(2824): XF\Mvc\Dispatcher->run()
#27 src/XF.php(806): XF\App->run()
#28 admin.php(15): XF::runApp('XF\\Admin\\App')
#29 {main}
Request state
array(4) {
  ["url"] => string(37) "/admin.php?donations/donations/3/save"
  ["referrer"] => string(59) "https://www.myptsd.com/admin.php?donations/donations/3/edit"
  ["_GET"] => array(1) {
    ["donations/donations/3/save"] => string(0) ""
  }
  ["_POST"] => array(14) {
    ["_xfToken"] => string(8) "********"
    ["username"] => string(7) "anthony"
    ["donation_date"] => string(10) "2026-01-02"
    ["donation_goal_id"] => string(1) "1"
    ["donation_amount"] => string(5) "50.00"
    ["donation_currency"] => string(3) "USD"
    ["donation_method"] => string(6) "paypal"
    ["subscription"] => string(0) ""
    ["message"] => string(0) ""
    ["anonymous"] => string(1) "1"
    ["status"] => string(9) "completed"
    ["_xfResponseType"] => string(4) "json"
    ["_xfWithData"] => string(1) "1"
    ["_xfRequestUri"] => string(37) "/admin.php?donations/donations/3/edit"
  }
}
 
Our donations were the object of a stupid Denial Of Service attack which created a large number of unconfirmed entries in donations in the admin area. I would like to delete all of those from that list since it has added a few hundred entries.

We just upgraded to XF2.3.7 and I was happy to see the goal autorenewal feature. I am looking forward to not having to do that on February 1st. The message currently displayed on our progress bar includes the goal month name. Is there a handy way to use a variable in that widget for the month name?
 
I would like to delete all of those from that list since it has added a few hundred entries.
I will add the option to delete unconfirmed donations in the next release.

Is there a handy way to use a variable in that widget for the month name?
Will be added in the next release.

Yer, I removed this and purchased the Dragonbyte one. They fix issues quickly.
The issue you encountered seem to be due to not setting a primary currency.
 
Siropu updated Donations by Siropu with a new update entry:

Improvements

Skip donation method selection when only one method is available.
Added minimum donation amount based on currency.
Added user group settings to goals.
Added {month} placeholder in the goal description to display the current month.
Added option to delete unconfirmed donations.

Important: If you are using minimum donation amount, you have to set it again based on currency either in the Goal settings or in admin options.

Read the rest of this update entry...
 
Back
Top Bottom