X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=notes_for_module_writers_v3;h=e7f05018ff1a1087493d29205aebfe6108730249;hb=06aef4f2a899ed6d6aaaf77c23567aea7db8847c;hp=9c2dd7288cc26c5892e591ba3001551b0a58c31a;hpb=030cefa9658b916a341fdedb7bf6ed4e8616e625;p=Business-OnlinePayment.git diff --git a/notes_for_module_writers_v3 b/notes_for_module_writers_v3 index 9c2dd72..e7f0501 100644 --- a/notes_for_module_writers_v3 +++ b/notes_for_module_writers_v3 @@ -5,9 +5,6 @@ These are the module writer's notes for v3. See the regular - If your gateway is HTTPS-based, use (or convert to) Business::OnlinePayment::HTTPS !! - - Business::OnlinePayment::OpenECHO is the first "v3-ish" module, try - starting from there. - - Handling failures: @@ -28,6 +25,7 @@ These are the module writer's notes for v3. See the regular - "stolen" - "pickup" - "blacklisted" + - "inactive" (inactive card or not authorized for card-not-present) (?) - "decline" (other card/transaction declines only, not other errors) You should use code like this so your module can work with B:OP versions @@ -37,4 +35,78 @@ These are the module writer's notes for v3. See the regular (or add "failure_status" to your build_subs call if you have one during initialization) - + + +- (NEW IN 3.01) Introspection: + + - Add an _info subroutine to your module that returns a hashref of + information: + + sub _info { + { + 'info_compat' => '0.01', # always 0.01 for now, + # 0.02 will have requirements + 'gateway_name' => 'Example Gateway', + 'gateway_url' => 'http://www.example.com/', + 'module_version' => $VERSION, + 'supported_types' => [ qw( CC ECHECK ) ], + 'token_support' => 0, #card storage/tokenization support + 'test_transaction' => 0, #set true if ->test_transaction(1) works + 'supported_actions' => [ + 'Normal Authorization', + 'Authorization Only', + 'Post Authorization', + 'Void', + 'Credit', + ], + }; + } + + # or a more complicated case: + + sub _info { + { + 'info_compat' => '0.01', # always 0.01 for now, + # 0.02 will have requirements + 'gateway_name' => 'Example Gateway', + 'gateway_url' => 'http://www.example.com/', + 'module_version' => $VERSION, + 'module_notes' => 'usage notes', + 'supported_types' => [ qw( CC ECHECK ) ], + 'token_support' => 1, + 'test_transaction' => 1, + 'supported_actions' => { 'CC' => [ + 'Normal Authorization', + 'Authorization Only', + 'Post Authorization', + 'Void', + 'Credit', + 'Recurring Authorization', + 'Modify Recurring Authorization', + 'Cancel Recurring Authorization', + ], + 'ECHECK' => [ + 'Normal Authorization', + 'Void', + 'Credit', + ], + }, + 'CC_void_requires_card' => 1, + 'ECHECK_void_requires_account' => 1, #routing_code, account_number, name + }; + } + + +- authorization and order_number (NEWLY DOCUMENTED IN 3.01): + + Gateways will return one or two values from Authorization Only and + Normal Authorization transactions that must be submitted back with a + Post Authorization, Void, or Credit transaction. + + If the gateway returns one value, return this as "authorization" + + If the gateway returns two values, return one as "authorization" and the + other as "order_number". Typically "authorization" is the more low-level + value returned from the underlying processing network while "order_number" + is a unique tranaction id generated by the gateway. +