3.03
[Business-OnlinePayment.git] / notes_for_module_writers_v3
index 7ce39b5..1d848f5 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:
@@ -38,4 +38,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.
+