partial auth
[Business-OnlinePayment.git] / notes_for_module_writers_v3
index e7f0501..41ae2dd 100644 (file)
@@ -4,6 +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 !!
+  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:
@@ -28,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:
 
@@ -52,6 +47,7 @@ These are the module writer's notes for v3.  See the regular
           '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',
@@ -110,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