Yes, there is now a link when viewing payment details that allows you to manually approve a payment.
As for creating custom payment providers, what follows is a description for people familiar with Perl and/or writing plugins or modifications of GT products.
Take a look at the GForum/Payment/Remote/WorldPay.pm or PayPal.pm files for a starting point. Everything except sub postback is used for information (such as account name, password, currency, etc.). The "sub postback" is called when a postback is detected; it is responsible for detecting the type of postback (i.e. valid, failed, declined, informational, etc.) and performing the necessary database update through calling GForum::Payment::process_donation() or ::process_payment(). The actual detection happens in GT/Payment/Remote/WorldPay.pm, but there is no reason for a custom method that it couldn't happen entirely in GForum/Payment/Remote/Whatever.pm, or even in a plugin. gforum.cgi detects a postback by looking at the CGI input parameters passed to the script - the config file contains a 'postback' key in the 'payment' hash that is used to specify the incoming payment method type, then, if a postback is detected, figures out the module to load and call postback() in by looking at $CFG->{payment}->{remote}->{methods}->{METHOD_NAME}->{module} and ->{package}. The last piece of the puzzle is the admin/language.txt file which contains the name and description of the various payment fields returned by required() and optional().
Jason Rhinelander
Gossamer Threads
jason@gossamer-threads.com
As for creating custom payment providers, what follows is a description for people familiar with Perl and/or writing plugins or modifications of GT products.
Take a look at the GForum/Payment/Remote/WorldPay.pm or PayPal.pm files for a starting point. Everything except sub postback is used for information (such as account name, password, currency, etc.). The "sub postback" is called when a postback is detected; it is responsible for detecting the type of postback (i.e. valid, failed, declined, informational, etc.) and performing the necessary database update through calling GForum::Payment::process_donation() or ::process_payment(). The actual detection happens in GT/Payment/Remote/WorldPay.pm, but there is no reason for a custom method that it couldn't happen entirely in GForum/Payment/Remote/Whatever.pm, or even in a plugin. gforum.cgi detects a postback by looking at the CGI input parameters passed to the script - the config file contains a 'postback' key in the 'payment' hash that is used to specify the incoming payment method type, then, if a postback is detected, figures out the module to load and call postback() in by looking at $CFG->{payment}->{remote}->{methods}->{METHOD_NAME}->{module} and ->{package}. The last piece of the puzzle is the admin/language.txt file which contains the name and description of the various payment fields returned by required() and optional().
Jason Rhinelander
Gossamer Threads
jason@gossamer-threads.com