partial auth
[Business-OnlinePayment.git] / notes_for_module_writers_v3
index d5d9834..41ae2dd 100644 (file)
@@ -4,9 +4,9 @@ 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.
+  Note: The correct thing for modern B:OP: gateway modules that need to
+   speak HTTPS to do is to use Business::OnlinePayment::HTTPS and depend on
+   "Net::HTTPS::Any" (since B:OP itself doesn't).
 
 
 - Handling failures:
@@ -31,14 +31,6 @@ These are the module writer's notes for v3.  See the regular
       - "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
-      before 3.00_04:
-
-        $self->build_subs('failure_status') unless $self->can('failure_status');
-
-      (or add "failure_status" to your build_subs call if you have one during
-      initialization)
-
 
 - (NEW IN 3.01) Introspection:
 
@@ -53,6 +45,9 @@ These are the module writer's notes for v3.  See the regular
           '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
+          'partial_auth'          => 1, #can gateway partial auth (new in 3.04)
           'supported_actions'     => [
                                        'Normal Authorization',
                                        'Authorization Only',
@@ -74,6 +69,8 @@ These are the module writer's notes for v3.  See the regular
           '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',
@@ -91,6 +88,7 @@ These are the module writer's notes for v3.  See the regular
                                        ],
                                      },
           'CC_void_requires_card' => 1,
+          'ECHECK_void_requires_account' => 1, #routing_code, account_number, name 
         };
       }
 
@@ -108,3 +106,19 @@ These are the module writer's notes for v3.  See the regular
   value returned from the underlying processing network while "order_number"
   is a unique tranaction id generated by the gateway.
 
+
+- Moo (NEWLY DOCUMENTED IN 3.04)
+
+  Feel free to write gateway modules which use Moo.  Please do not require
+  Moo newer than 0.091011 at this time (until 2018 or so).
+
+- Partial authorization (NEW in 3.04)
+
+  If your gateway supports partial authorizations:
+
+  + Indicate this in the introspection _info subroutine (see above)
+  + Accept the partial_auth transaction field:
+    * if not explicitly set, partial authorizations should be reversed/voided
+      and returned as is_success 0
+    * if explicitly set, partial authorizations should return is_success 1
+      and the authorized amount as partial_auth_amount