Author: ashish
Date: Wed Nov  4 08:44:03 2009
New Revision: 832681

URL: http://svn.apache.org/viewvc?rev=832681&view=rev
Log:
Applied patch from jira issue OFBIZ-3138 - Refund for orders placed through 
PayPal Express checkout doesn't work.
Thanks Pranay Pandey / Arun Patidar for the contribution.

Modified:
    
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalServices.java

Modified: 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalServices.java?rev=832681&r1=832680&r2=832681&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalServices.java
 (original)
+++ 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalServices.java
 Wed Nov  4 08:44:03 2009
@@ -832,7 +832,7 @@
         } else {
             result.put("captureResult", true);
             result.put("captureAmount", new BigDecimal(decoder.get("AMT")));
-            result.put("captureRefNum", decoder.get("AUTHORIZATIONID"));
+            result.put("captureRefNum", decoder.get("TRANSACTIONID"));
         }
         //TODO: Look into possible PAYMENTSTATUS and PENDINGREASON return 
codes, it is unclear what should be checked for this type of transaction
         return result;
@@ -888,12 +888,13 @@
             return ServiceUtil.returnError("Couldn't retrieve a 
PaymentGatewayConfigPayPal record for Express Checkout, cannot continue.");
         }
         GenericValue orderPaymentPreference = (GenericValue) 
context.get("orderPaymentPreference");
-        GenericValue authTrans = 
PaymentGatewayServices.getAuthTransaction(orderPaymentPreference);
+        GenericValue captureTrans = 
PaymentGatewayServices.getCaptureTransaction(orderPaymentPreference);
         BigDecimal refundAmount = (BigDecimal) context.get("refundAmount");
         NVPEncoder encoder = new NVPEncoder();
         encoder.add("METHOD", "RefundTransaction");
-        encoder.add("TRANSACTIONID", authTrans.getString("referenceNum"));
+        encoder.add("TRANSACTIONID", captureTrans.getString("referenceNum"));
         encoder.add("REFUNDTYPE", "Partial");
+        encoder.add("CURRENCYCODE", captureTrans.getString("currencyUomId"));
         encoder.add("AMT", refundAmount.setScale(2, 
BigDecimal.ROUND_HALF_UP).toPlainString());
         encoder.add("NOTE", "Order #" + 
orderPaymentPreference.getString("orderId"));
         NVPDecoder decoder = null;
@@ -912,7 +913,7 @@
         Map<String, String> errors = getErrorMessageMap(decoder);
         if (UtilValidate.isNotEmpty(errors)) {
             result.put("refundResult", false);
-            result.put("refundRefNum", authTrans.getString("referenceNum"));
+            result.put("refundRefNum", captureTrans.getString("referenceNum"));
             result.put("refundAmount", BigDecimal.ZERO);
             if (errors.size() == 1) {
                 result.put("responseMessage", errors.get(0));
@@ -922,7 +923,7 @@
             }
         } else {
             result.put("refundResult", true);
-            result.put("refundAmount", new 
BigDecimal(decoder.get("NETREFUNDAMT")));
+            result.put("refundAmount", new 
BigDecimal(decoder.get("GROSSREFUNDAMT")));
             result.put("refundRefNum", decoder.get("REFUNDTRANSACTIONID"));
         }        
         return result;


Reply via email to