many stores use atleast two processors,
one for CC processor, like Authorize net to their bank, one for Paypal.

=========================
BJ Freeman
Strategic Power Office with Supplier Automation  
<http://www.businessesnetwork.com/automation/viewforum.php?f=52>
Specialtymarket.com  <http://www.specialtymarket.com/>
Systems Integrator-- Glad to Assist

Chat  Y! messenger: bjfr33man


Scott Gray sent the following on 2/17/2011 1:52 AM:
But you're typically only using one payment processor per store right?  So the 
store settings should be sufficient, but even if not this should really be 
solved in a more generic way with some sort of setting at a higher level.

Also it looks like your using the deprecated payment.properties for 
configuration instead of the PaymentGatewayConfig entities.

Regards
Scott

On 17/02/2011, at 10:28 PM, Hans Bakker wrote:

This feature is not always for all paymentmethods for every order.

Certain payment processors can be easily checked and approved afterwards
with the payment processor while others do not have this feature.

Regards,
Hans


On Thu, 2011-02-17 at 22:11 +1300, Scott Gray wrote:
Hi Hans,

Isn't that more of an order related setting rather than anything the payment 
gateway needs to worry about?  Surely we already have processes for this sort 
of thing?

Also, we're going to end up with a hell of a mess if we keep putting payment 
processor specific code in the order logic.

Regards
Scott

On 17/02/2011, at 7:57 PM, [email protected] wrote:

Author: hansbak
Date: Thu Feb 17 06:57:51 2011
New Revision: 1071517

URL: http://svn.apache.org/viewvc?rev=1071517&view=rev
Log:
update to cybersource payment gateway: added a properties setting that orders 
are still accepted but put into the created stage when a credit card fails 
authorisation. The default is the current setting: order is not created

Modified:
   ofbiz/trunk/applications/accounting/config/payment.properties
   ofbiz/trunk/applications/accounting/servicedef/services_paymentmethod.xml
   
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
   
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java
   
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java

Modified: ofbiz/trunk/applications/accounting/config/payment.properties
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/payment.properties?rev=1071517&r1=1071516&r2=1071517&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/payment.properties (original)
+++ ofbiz/trunk/applications/accounting/config/payment.properties Thu Feb 17 
06:57:51 2011
@@ -118,6 +118,12 @@ payment.cybersource.ignoreAvs=false
# AVS Decline Codes -- May not be supported any longer
#payment.cybersource.avsDeclineCodes=

+# Ignore status of cybersource transaction reply  (Y|N) (if cybersource response 
transaction status not equals "ACCEPT" then OFBiz will still create the order 
but in status 'created'.
+# default N = Don't create order if cybersource reported transaction status not equals 
"ACCEPT".
+payment.cybersource.ignoreStatus=N
+# It happens pretty often that a creditcard is rejected for not valid reasons, 
one can check to Cybersource fraud queue and after that the order can still be 
rejected or approved.
+
+
############################################
# ClearCommerce Configuration
############################################

Modified: 
ofbiz/trunk/applications/accounting/servicedef/services_paymentmethod.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_paymentmethod.xml?rev=1071517&r1=1071516&r2=1071517&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_paymentmethod.xml 
(original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_paymentmethod.xml 
Thu Feb 17 06:57:51 2011
@@ -267,6 +267,7 @@ under the License.
        <attribute name="errors" type="Boolean" mode="OUT" optional="false"/>
        <attribute name="messages" type="List" mode="OUT" optional="true"/>
        <attribute name="processAmount" type="BigDecimal" mode="OUT" 
optional="true"/>
+<attribute name="authCode" type="String" mode="OUT" optional="true"/>
    </service>

    <service name="authOrderPayments" engine="java"
@@ -276,6 +277,7 @@ under the License.
        <attribute name="processResult" type="String" mode="OUT" 
optional="false"/>
        <attribute name="authResultMsgs" type="List" mode="OUT" 
optional="true"/>
        <attribute name="reAuth" type="Boolean" mode="IN" optional="true"/>
+<attribute name="authCode" type="String" mode="OUT" optional="true"/>
    </service>

    <service name="releaseOrderPayments" engine="java"

Modified: 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java?rev=1071517&r1=1071516&r2=1071517&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
 (original)
+++ 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
 Thu Feb 17 06:57:51 2011
@@ -201,6 +201,7 @@ public class PaymentGatewayServices {
                        results.put("processAmount", thisAmount);
                        results.put("finished", Boolean.TRUE);
                        results.put("errors", Boolean.FALSE);
+                        results.put("authCode", 
authPaymentResult.get("authCode"));
                        return results;
                    } else {
                        boolean needsNsfRetry = 
needsNsfRetry(orderPaymentPreference, authPaymentResult, delegator);
@@ -399,6 +400,9 @@ public class PaymentGatewayServices {
                continue;
            }

+            // add authorization code to the result
+            result.put("authCode", results.get("authCode"));
+
            if (ServiceUtil.isError(results)) {
                hadError += 1;
                messages.add("Could not authorize OrderPaymentPreference [" + 
paymentPref.getString("orderPaymentPreferenceId") + "] for order [" + orderId + "]: " + 
results.get(ModelService.ERROR_MESSAGE));

Modified: 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java?rev=1071517&r1=1071516&r2=1071517&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java
 (original)
+++ 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java
 Thu Feb 17 06:57:51 2011
@@ -536,12 +536,17 @@ public class IcsPaymentServices {

    private static void processAuthResult(Map<String, Object>  reply, Map<String, 
Object>  result) {
        String decision = getDecision(reply);
+        String checkModeStatus = UtilProperties.getPropertyValue("payment.properties", 
"payment.cybersource.ignoreStatus");
        if ("ACCEPT".equalsIgnoreCase(decision)) {
            result.put("authCode", reply.get("ccAuthReply_authorizationCode"));
            result.put("authResult", Boolean.TRUE);
        } else {
            result.put("authCode", decision);
-            result.put("authResult", Boolean.FALSE);
+            if ("N".equals(checkModeStatus)) {
+                result.put("authResult", Boolean.FALSE);
+            } else {
+                result.put("authResult", Boolean.TRUE);
+            }
            // TODO: based on reasonCode populate the following flags as 
applicable: resultDeclined, resultNsf, resultBadExpire, resultBadCardNumber
        }


Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?rev=1071517&r1=1071516&r2=1071517&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
 Thu Feb 17 06:57:51 2011
@@ -1067,9 +1067,27 @@ public class CheckOutHelper {

                    // set the order and item status to approved
                    if (autoApproveOrder) {
-                        boolean ok = 
OrderChangeHelper.approveOrder(dispatcher, userLogin, orderId, manualHold);
-                        if (!ok) {
-                            throw new GeneralException("Problem with order change; 
see above error");
+                        List<GenericValue>  productStorePaymentSettingList = delegator.findByAnd("ProductStorePaymentSetting", 
UtilMisc.toMap("productStoreId", productStore.getString("productStoreId"), "paymentMethodTypeId", "CREDIT_CARD", 
"paymentService", "cyberSourceCCAuth"));
+                        if (productStorePaymentSettingList.size()>  0) {
+                            String decision = (String) 
paymentResult.get("authCode");
+                            if (UtilValidate.isNotEmpty(decision)) {
+                                if ("ACCEPT".equalsIgnoreCase(decision)) {
+                                    boolean ok = 
OrderChangeHelper.approveOrder(dispatcher, userLogin, orderId, manualHold);
+                                    if (!ok) {
+                                        throw new GeneralException("Problem with 
order change; see above error");
+                                    }
+                                }
+                            } else {
+                                boolean ok = 
OrderChangeHelper.approveOrder(dispatcher, userLogin, orderId, manualHold);
+                                if (!ok) {
+                                    throw new GeneralException("Problem with order 
change; see above error");
+                                }
+                            }
+                        } else {
+                            boolean ok = 
OrderChangeHelper.approveOrder(dispatcher, userLogin, orderId, manualHold);
+                            if (!ok) {
+                                throw new GeneralException("Problem with order 
change; see above error");
+                            }
                        }
                    }
                } else if (authResp.equals("ERROR")) {




--
Ofbiz on twitter: http://twitter.com/apache_ofbiz
Myself on twitter: http://twitter.com/hansbak
Antwebsystems.com: Quality services for competitive rates.



Reply via email to