Author: sichen
Date: Fri Oct 20 09:35:30 2006
New Revision: 466193

URL: http://svn.apache.org/viewvc?view=rev&rev=466193
Log:
Improved Authorize.NET payment gateway, by sending order and address info on 
capture transactions as well

Modified:
    
incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/AIMPaymentServices.java

Modified: 
incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/AIMPaymentServices.java
URL: 
http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/AIMPaymentServices.java?view=diff&rev=466193&r1=466192&r2=466193
==============================================================================
--- 
incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/AIMPaymentServices.java
 (original)
+++ 
incubator/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/AIMPaymentServices.java
 Fri Oct 20 09:35:30 2006
@@ -84,7 +84,9 @@
         Properties props = buildAIMProperties(context);
         buildMerchantInfo(context,props,request);
         buildGatewayResponeConfig(context,props,request);
+        buildCustomerBillingInfo(context,props,request);
         buildEmailSettings(context,props,request);
+        request.put("x_Invoice_Num","Order " + 
orderPaymentPreference.getString("orderId"));
         //props.put("transType","PRIOR_AUTH_CAPTURE");
         props.put("transType","CAPTURE_ONLY");
         props.put("cardtype", (String)creditCard.get("cardType"));
@@ -344,17 +346,45 @@
     }
 
     private static void buildCustomerBillingInfo(Map params, Properties props, 
Map AIMRequest) {
-        GenericValue cp = (GenericValue)params.get("billToParty");
-        GenericValue ba = (GenericValue)params.get("billingAddress");
-
-        
AIMRequest.put("x_First_Name",UtilFormatOut.checkNull(cp.getString("firstName")));
-        
AIMRequest.put("x_Last_Name",UtilFormatOut.checkNull(cp.getString("lastName")));
-        
AIMRequest.put("x_Address",UtilFormatOut.checkNull(ba.getString("address1")));
-        AIMRequest.put("x_City",UtilFormatOut.checkNull(ba.getString("city")));
-        
AIMRequest.put("x_State",UtilFormatOut.checkNull(ba.getString("stateProvinceGeoId")));
-        
AIMRequest.put("x_Zip",UtilFormatOut.checkNull(ba.getString("postalCode")));
-        
AIMRequest.put("x_Country",UtilFormatOut.checkNull(ba.getString("countryGeoId")));
-        return;
+        try {
+            // this would be used in the case of a capture, where one of the 
parameters is an OrderPaymentPreference
+            if (params.get("orderPaymentPreference") != null) {
+                GenericValue opp = (GenericValue) 
params.get("orderPaymentPreference");
+                if 
("CREDIT_CARD".equals(opp.getString("paymentMethodTypeId"))) {
+                    GenericValue creditCard = opp.getRelatedOne("CreditCard");
+                    
AIMRequest.put("x_First_Name",UtilFormatOut.checkNull(creditCard.getString("firstNameOnCard")));
+                    
AIMRequest.put("x_Last_Name",UtilFormatOut.checkNull(creditCard.getString("lastNameOnCard")));
+                    
AIMRequest.put("x_Company",UtilFormatOut.checkNull(creditCard.getString("companyNameOnCard")));
+                    if 
(UtilValidate.isNotEmpty(creditCard.getString("contactMechId"))) {
+                        GenericValue address = 
creditCard.getRelatedOne("PostalAddress");
+                        
AIMRequest.put("x_Address",UtilFormatOut.checkNull(address.getString("address1")));
+                        
AIMRequest.put("x_City",UtilFormatOut.checkNull(address.getString("city")));
+                        
AIMRequest.put("x_State",UtilFormatOut.checkNull(address.getString("stateProvinceGeoId")));
+                        
AIMRequest.put("x_Zip",UtilFormatOut.checkNull(address.getString("postalCode")));
+                        
AIMRequest.put("x_Country",UtilFormatOut.checkNull(address.getString("countryGeoId")));
+                    }
+                } else {
+                    Debug.logWarning("Payment preference " + opp + " is not a 
credit card", module);
+                }
+            } else {
+                // this would be the case for an authorization
+                GenericValue cp = (GenericValue)params.get("billToParty");
+                GenericValue ba = (GenericValue)params.get("billingAddress");
+
+                
AIMRequest.put("x_First_Name",UtilFormatOut.checkNull(cp.getString("firstName")));
+                
AIMRequest.put("x_Last_Name",UtilFormatOut.checkNull(cp.getString("lastName")));
+                
AIMRequest.put("x_Address",UtilFormatOut.checkNull(ba.getString("address1")));
+                
AIMRequest.put("x_City",UtilFormatOut.checkNull(ba.getString("city")));
+                
AIMRequest.put("x_State",UtilFormatOut.checkNull(ba.getString("stateProvinceGeoId")));
+                
AIMRequest.put("x_Zip",UtilFormatOut.checkNull(ba.getString("postalCode")));
+                
AIMRequest.put("x_Country",UtilFormatOut.checkNull(ba.getString("countryGeoId")));
+            }
+            return;
+    
+        } catch (GenericEntityException ex) {
+            Debug.logError("Cannot build customer information for " + params + 
" due to error: " + ex.getMessage(), module);
+            return;
+        } 
     }
 
     private static void buildEmailSettings(Map params, Properties props, Map 
AIMRequest) {


Reply via email to