You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mr...@apache.org on 2009/04/12 23:11:43 UTC

svn commit: r764327 - in /ofbiz/trunk: applications/accounting/config/ applications/accounting/data/ applications/accounting/entitydef/ applications/accounting/script/org/ofbiz/accounting/payment/ applications/accounting/servicedef/ applications/accoun...

Author: mrisaliti
Date: Sun Apr 12 21:11:42 2009
New Revision: 764327

URL: http://svn.apache.org/viewvc?rev=764327&view=rev
Log:
PayPal IPN use the new Payment Gateway Config features (OFBIZ-2286)

Modified:
    ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
    ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
    ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml
    ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml
    ofbiz/trunk/applications/accounting/servicedef/services_paymentgateway.xml
    ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java
    ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
    ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsForms.xml
    ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsScreens.xml
    ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml
    ofbiz/trunk/specialpurpose/ecommerce/data/DemoRentalProduct.xml

Modified: ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml (original)
+++ ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml Sun Apr 12 21:11:42 2009
@@ -7921,6 +7921,10 @@
         <value xml:lang="th">อีเมล</value>
         <value xml:lang="zh">电子邮件内容</value>
     </property>
+    <property key="FormFieldTitle_businessEmail">
+        <value xml:lang="en">Business Email</value>
+        <value xml:lang="it">Email di business</value>
+    </property>
     <property key="FormFieldTitle_calendarId">
         <value xml:lang="ar">الرزمانة</value>
         <value xml:lang="de">Kalender</value>
@@ -7934,6 +7938,10 @@
         <value xml:lang="th">ปฏิทิน</value>
         <value xml:lang="zh">日历</value>
     </property>
+    <property key="FormFieldTitle_cancelReturnUrl">
+        <value xml:lang="en">Cancel Return URL</value>
+        <value xml:lang="it">URL di ritorno per cancellazione</value>
+    </property>
     <property key="FormFieldTitle_capture">
         <value xml:lang="de">erfassen</value>
         <value xml:lang="en">Capture</value>
@@ -7986,6 +7994,14 @@
         <value xml:lang="th">Cost Of Goods Sold (COGS) Method</value>
         <value xml:lang="zh">销货成本(COGS)方法</value>
     </property>
+    <property key="FormFieldTitle_confirmTemplate">
+        <value xml:lang="en">Confirm Template</value>
+        <value xml:lang="it">Template di conferma</value>
+    </property>
+    <property key="FormFieldTitle_confirmUrl">
+        <value xml:lang="en">Confirm Url</value>
+        <value xml:lang="it">URL di conferma</value>
+    </property>
     <property key="FormFieldTitle_conversionFactor">
         <value xml:lang="ar">النسبة</value>
         <value xml:lang="en">Rate</value>
@@ -8881,6 +8897,10 @@
         <value xml:lang="fr">Non alloué</value>
         <value xml:lang="it">Non applicata</value>
     </property>
+    <property key="FormFieldTitle_notifyUrl">
+        <value xml:lang="en">Notify Url</value>
+        <value xml:lang="it">URL di notifica</value>
+    </property>
     <property key="FormFieldTitle_orderIdPrefix">
         <value xml:lang="en">Order Id Prefix</value>
         <value xml:lang="es">Id Prefijo de orden</value>
@@ -9428,6 +9448,10 @@
         <value xml:lang="fr">Date de rapprochement</value>
         <value xml:lang="it">Data Riconcilazione</value>
     </property>
+    <property key="FormFieldTitle_redirectUrl">
+        <value xml:lang="en">Redirect Url</value>
+        <value xml:lang="it">URL di ridirezione</value>
+    </property>
     <property key="FormFieldTitle_referenceNum">
         <value xml:lang="en">Reference Num</value>
         <value xml:lang="es">Número de referencia</value>
@@ -9518,6 +9542,10 @@
         <value xml:lang="ru">Результат NSF</value>
         <value xml:lang="th">Result Nsf</value>
     </property>
+    <property key="FormFieldTitle_returnUrl">
+        <value xml:lang="en">Return Url</value>
+        <value xml:lang="it">URL di ritorno</value>
+    </property>
     <property key="FormFieldTitle_salesOpportunityId">
         <value xml:lang="en">Sales Opportunity Id</value>
         <value xml:lang="fr">Réf. d'opportunité de vente</value>
@@ -10870,6 +10898,10 @@
         <value xml:lang="en">Update Payment Gateway Configuration Payflow Pro</value>
         <value xml:lang="it">Aggiorna configurazione gateway pagamento Payflow Pro</value>
     </property>
+    <property key="PageTitleUpdatePaymentGatewayConfigurationPayPal">
+        <value xml:lang="en">Update Payment Gateway Configuration PayPal</value>
+        <value xml:lang="it">Aggiorna configurazione gateway pagamento PayPal</value>
+    </property>
     <property key="PageTitleViewAccountingTransaction">
         <value xml:lang="en">View Accounting Transaction</value>
         <value xml:lang="es">Ver Tansacción de Contabilidad</value>

Modified: ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml (original)
+++ ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml Sun Apr 12 21:11:42 2009
@@ -670,6 +670,10 @@
     <PaymentGatewayConfig paymentGatewayConfigId="PAYFLOWPRO_CONFIG" paymentGatewayConfigTypeId="PAYFLOWPRO" description="Configuration of Payflow Pro"/>
     <PaymentGatewayPayflowPro paymentGatewayConfigId="PAYFLOWPRO_CONFIG" certsPath="${sys:getProperty('ofbiz.home')}/applications/accounting/pfcerts" hostAddress="test-payflow.verisign.com" hostPort="443" timeout="80" proxyAddress="" proxyPort="80" proxyLogon="" proxyPassword="" vendor="[Vendor]" userId="[PayFlow UserID]" pwd="[PayFlow Password]" partner="[PayFlow Partner]" checkAvs="Y" checkCvv2="Y" preAuth="Y" enableTransmit="true" logFileName="${sys:getProperty('ofbiz.home')}/runtime/logs/payflow_java.log" loggingLevel="6" maxLogFileSize="1000000" stackTraceOn="N"/>
     
+    <PaymentGatewayConfigType paymentGatewayConfigTypeId="PAYPAL" hasTable="N" description="Payment Gateway PayPal"/>
+    <PaymentGatewayConfig paymentGatewayConfigId="PAYPAL_CONFIG" paymentGatewayConfigTypeId="PAYPAL" description="Configuration of PayPal"/>
+    <PaymentGatewayPayPal paymentGatewayConfigId="PAYPAL_CONFIG" businessEmail="" notifyUrl="" returnUrl="" cancelReturnUrl="" imageUrl="" confirmTemplate="/order/emailconfirmation.ftl" redirectUrl="https://www.sandbox.paypal.com/us/cgi-bin/webscr" confirmUrl="https://www.sandbox.paypal.com/us/cgi-bin/webscr"/>
+    
     <PaymentGatewayConfigType paymentGatewayConfigTypeId="CLEARCOMMERCE" hasTable="N" description="Payment Gateway Clear Commerce"/>
     <PaymentGatewayConfig paymentGatewayConfigId="CLEARCOMMERCE_CONFIG" paymentGatewayConfigTypeId="CLEARCOMMERCE" description="Configuration of Clear Commerce"/>
     <PaymentGatewayClearCommerce paymentGatewayConfigId="CLEARCOMMERCE_CONFIG" sourceId="mySource" groupId="myGroup" clientId="[ClearCommerce clientId]" username="[ClearCommerce username]" pwd="[ClearCommerce password]" userAlias="[ClearCommerce alias]" effectiveAlias="" processMode="P" serverURL="https://test5x.clearcommerce.com:11500" enableCVM="N"/>

Modified: ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml Sun Apr 12 21:11:42 2009
@@ -3020,6 +3020,23 @@
         <key-map field-name="paymentGatewayConfigId"/>
       </relation>
     </entity>
+    <entity entity-name="PaymentGatewayPayPal"
+        package-name="org.ofbiz.accounting.payment"
+        title="PayPal Payment Gateway Configuration">
+        <field name="paymentGatewayConfigId" type="id-ne"></field>
+        <field name="businessEmail" type="value"><description>Business e-mail</description></field>
+        <field name="notifyUrl" type="value"><description>Notify URL</description></field>
+        <field name="returnUrl" type="value"><description>Return URL</description></field>
+        <field name="cancelReturnUrl" type="value"><description>Return On Cancel URL</description></field>
+        <field name="imageUrl" type="value"><description>Image URL to use on PayPal</description></field>
+        <field name="confirmTemplate" type="value"><description>Thank-You / Confirm Order Template (rendered via Freemarker)</description></field>
+        <field name="redirectUrl" type="value"><description>PayPal Redirect URL (Sandbox/Production)</description></field>
+        <field name="confirmUrl" type="value"><description>PayPal Confirm URL Sandbox/Production (JSSE must be configured to use SSL)</description></field>
+        <prim-key field="paymentGatewayConfigId"/>
+        <relation type="one" fk-name="PGPP_PGC" rel-entity-name="PaymentGatewayConfig">
+            <key-map field-name="paymentGatewayConfigId"/>
+        </relation>
+    </entity>
     <entity entity-name="PaymentGatewayClearCommerce"
         package-name="org.ofbiz.accounting.payment"
         title="Clear Commerce Payment Gateway Configuration">

Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml (original)
+++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml Sun Apr 12 21:11:42 2009
@@ -32,7 +32,13 @@
         <store-value value-field="lookedUpValue"/>
     </simple-method>
     
-     <simple-method method-name="updateGatewayConfigurationClearCommerce" short-description="Update Payment Gateway Configuration Clear Commerce">
+    <simple-method method-name="updateGatewayConfigurationPayPal" short-description="Update Payment Gateway Configuration PayPal">
+        <entity-one entity-name="PaymentGatewayPayPal" value-field="lookedUpValue"/>
+        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
+        <store-value value-field="lookedUpValue"/>
+    </simple-method>
+    
+    <simple-method method-name="updateGatewayConfigurationClearCommerce" short-description="Update Payment Gateway Configuration Clear Commerce">
         <entity-one entity-name="PaymentGatewayClearCommerce" value-field="lookedUpValue"/>
         <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
         <store-value value-field="lookedUpValue"/>

Modified: ofbiz/trunk/applications/accounting/servicedef/services_paymentgateway.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_paymentgateway.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/services_paymentgateway.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/services_paymentgateway.xml Sun Apr 12 21:11:42 2009
@@ -37,6 +37,12 @@
         <auto-attributes entity-name="PaymentGatewayPayflowPro" include="nonpk" mode="IN" optional="true"/>
     </service>
     
+    <service name="updateGatewayConfigurationPayPal" engine="simple" location="org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml" invoke="updateGatewayConfigurationPayPal">
+        <description>Update Payment Gateway Configuration PayPal</description>
+        <auto-attributes entity-name="PaymentGatewayPayPal" include="pk" mode="IN" optional="false"/>
+        <auto-attributes entity-name="PaymentGatewayPayPal" include="nonpk" mode="IN" optional="true"/>
+    </service>
+    
     <service name="updateGatewayConfigurationClearCommerce" engine="simple" location="org/ofbiz/accounting/payment/PaymentGatewayConfigServices.xml" invoke="updateGatewayConfigurationClearCommerce">
         <description>Update Payment Gateway Configuration Clear Commerce</description>
         <auto-attributes entity-name="PaymentGatewayClearCommerce" include="pk" mode="IN" optional="false"/>

Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java Sun Apr 12 21:11:42 2009
@@ -34,6 +34,7 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -52,8 +53,8 @@
 import org.ofbiz.order.order.OrderChangeHelper;
 import org.ofbiz.product.store.ProductStoreWorker;
 import org.ofbiz.service.GenericServiceException;
-import org.ofbiz.service.ModelService;
 import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ModelService;
 
 
 public class PayPalEvents {
@@ -97,7 +98,9 @@
         // get the payment properties file
         GenericValue paymentConfig = ProductStoreWorker.getProductStorePaymentSetting(delegator, productStore.getString("productStoreId"), "EXT_PAYPAL", null, true);
         String configString = null;
+        String paymentGatewayConfigId = null;
         if (paymentConfig != null) {
+            paymentGatewayConfigId = paymentConfig.getString("paymentGatewayConfigId");
             configString = paymentConfig.getString("paymentPropertiesPath");
         }
 
@@ -112,25 +115,25 @@
         String itemName = UtilProperties.getMessage(resource, "AccountingOrderNr", locale) + orderId + " " +
                                  (company != null ? UtilProperties.getMessage(commonResource, "CommonFrom", locale) + " "+ company : "");
         String itemNumber = "0";
-
+        
         // get the redirect url
-        String redirectUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.redirect");
-
+        String redirectUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "redirectUrl", configString, "payment.paypal.redirect");
+        
         // get the notify url
-        String notifyUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.notify");
-
+        String notifyUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "notifyUrl", configString, "payment.paypal.notify");
+        
         // get the return urls
-        String returnUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.return");
-
+        String returnUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "returnUrl", configString, "payment.paypal.return");
+        
         // get the cancel return urls
-        String cancelReturnUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.cancelReturn");
-
+        String cancelReturnUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "cancelReturnUrl", configString, "payment.paypal.cancelReturn");
+        
         // get the image url
-        String imageUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.image");
-
+        String imageUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "imageUrl", configString, "payment.paypal.image");
+        
         // get the paypal account
-        String payPalAccount = UtilProperties.getPropertyValue(configString, "payment.paypal.business");
-
+        String payPalAccount = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "businessEmail", configString, "payment.paypal.business");
+        
         if (UtilValidate.isEmpty(redirectUrl)
             || UtilValidate.isEmpty(notifyUrl)
             || UtilValidate.isEmpty(returnUrl)
@@ -194,7 +197,9 @@
         GenericValue paymentConfig = ProductStoreWorker.getProductStorePaymentSetting(delegator, productStore.getString("productStoreId"), "EXT_PAYPAL", null, true);
 
         String configString = null;
+        String paymentGatewayConfigId = null;
         if (paymentConfig != null) {
+            paymentGatewayConfigId = paymentConfig.getString("paymentGatewayConfigId");
             configString = paymentConfig.getString("paymentPropertiesPath");
         }
 
@@ -203,12 +208,12 @@
         }
 
         // get the confirm URL
-        String confirmUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.confirm");
+        String confirmUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "confirmUrl", configString, "payment.paypal.confirm");
 
         // get the redirect URL
-        String redirectUrl = UtilProperties.getPropertyValue(configString, "payment.paypal.redirect");
+        String redirectUrl = getPaymentGatewayConfigValue(delegator, paymentGatewayConfigId, "redirectUrl", configString, "payment.paypal.redirect");
 
-        if (confirmUrl == null || redirectUrl == null) {
+        if (UtilValidate.isEmpty(confirmUrl) || UtilValidate.isEmpty(redirectUrl)) {
             Debug.logError("Payment properties is not configured properly, no confirm URL defined!", module);
             request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resourceErr, "payPalEvents.problemsGettingMerchantConfiguration", locale));
             return "error";
@@ -238,21 +243,24 @@
         } catch (IOException e) {
             Debug.logError(e, "Problems sending verification message", module);
         }
-
-        if (confirmResp.trim().equals("VERIFIED")) {
-            // we passed verification
-            Debug.logInfo("Got verification from PayPal, processing..", module);
-        } else {
-            Debug.logError("###### PayPal did not verify this request, need investigation!", module);
-            Set <String> keySet = parametersMap.keySet();
-            Iterator <String> i = keySet.iterator();
-            while (i.hasNext()) {
-                String name = (String) i.next();
-                String value = request.getParameter(name);
-                Debug.logError("### Param: " + name + " => " + value, module);
+        
+        Debug.logInfo("Got verification from PayPal, processing..", module);
+        boolean verified = false;
+        Set <String> keySet = parametersMap.keySet();
+        Iterator <String> i = keySet.iterator();
+        while (i.hasNext()) {
+            String name = (String) i.next();
+            String value = request.getParameter(name);
+            Debug.logError("### Param: " + name + " => " + value, module);
+            if (UtilValidate.isNotEmpty(name) && "payer_status".equalsIgnoreCase(name) &&
+                UtilValidate.isNotEmpty(value) && "verified".equalsIgnoreCase(value)) {
+                verified = true;
             }
         }
-
+        if (!verified) {
+            Debug.logError("###### PayPal did not verify this request, need investigation!", module);
+        }
+        
         // get the user
         GenericValue userLogin = null;
         String userLoginId = request.getParameter("custom");
@@ -504,4 +512,28 @@
 
         return true;
     }
+    
+    private static String getPaymentGatewayConfigValue(GenericDelegator delegator, String paymentGatewayConfigId, String paymentGatewayConfigParameterName,
+                                                       String resource, String parameterName) {
+        String returnValue = "";
+        if (UtilValidate.isNotEmpty(paymentGatewayConfigId)) {
+            try {
+                GenericValue payPal = delegator.findOne("PaymentGatewayPayPal", UtilMisc.toMap("paymentGatewayConfigId", paymentGatewayConfigId), false);
+                if (UtilValidate.isNotEmpty(payPal)) {
+                    Object payPalField = payPal.get(paymentGatewayConfigParameterName);
+                    if (payPalField != null) {
+                        returnValue = payPalField.toString().trim();
+                    }
+                }
+            } catch (GenericEntityException e) {
+                Debug.logError(e, module);
+            }
+        } else {
+            String value = UtilProperties.getPropertyValue(resource, parameterName);
+            if (value != null) {
+                returnValue = value.trim();
+            }
+        }
+        return returnValue;
+    }
 }
\ No newline at end of file

Modified: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml Sun Apr 12 21:11:42 2009
@@ -427,6 +427,12 @@
         <response name="success" type="view" value="ViewGatewayConfiguration"/>
         <response name="error" type="view" value="ViewGatewayConfiguration"/>
     </request-map>
+    <request-map uri="UpdateGatewayConfigurationPayPal">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="updateGatewayConfigurationPayPal"/>
+        <response name="success" type="view" value="ViewGatewayConfiguration"/>
+        <response name="error" type="view" value="ViewGatewayConfiguration"/>
+    </request-map>
     <request-map uri="UpdateGatewayConfigurationClearCommerce">
         <security https="true" auth="true"/>
         <event type="service" invoke="updateGatewayConfigurationClearCommerce"/>

Modified: ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsForms.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsForms.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsForms.xml Sun Apr 12 21:11:42 2009
@@ -184,4 +184,12 @@
             <submit button-type="button"/>
         </field>
     </form>
+    
+    <form name="ViewGatewayConfigurationPayPal" type="single" target="UpdateGatewayConfigurationPayPal" default-map-name="paymentGatewayPayPal" header-row-style="header-row" default-table-style="basic-table">
+        <auto-fields-entity entity-name="PaymentGatewayPayPal" default-field-type="edit"/>
+        <field name="paymentGatewayConfigId"><hidden/></field>
+        <field name="submitButton" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit">
+            <submit button-type="button"/>
+        </field>
+    </form>
 </forms>
\ No newline at end of file

Modified: ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsScreens.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsScreens.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/PaymentGatewayConfigurationsScreens.xml Sun Apr 12 21:11:42 2009
@@ -88,6 +88,9 @@
                 <entity-one entity-name="PaymentGatewayPayflowPro" value-field="paymentGatewayPayflowPro">
                     <field-map field-name="paymentGatewayConfigId" from-field="parameters.paymentGatewayConfigId"/>
                 </entity-one>
+                <entity-one entity-name="PaymentGatewayPayPal" value-field="paymentGatewayPayPal">
+                    <field-map field-name="paymentGatewayConfigId" from-field="parameters.paymentGatewayConfigId"/>
+                </entity-one>
                 <entity-one entity-name="PaymentGatewayClearCommerce" value-field="paymentGatewayClearCommerce">
                     <field-map field-name="paymentGatewayConfigId" from-field="parameters.paymentGatewayConfigId"/>
                 </entity-one>
@@ -132,6 +135,27 @@
                         </section>
                         <section>
                             <condition>
+                                <not><if-empty field="paymentGatewayPayPal"/></not>
+                            </condition>
+                            <widgets>
+                                <container style="screenlet">
+                                    <container style="screenlet-title-bar">
+                                        <container style="h3">
+                                            <label text="${uiLabelMap.PageTitleUpdatePaymentGatewayConfigurationPayPal}"/>
+                                        </container>
+                                    </container>
+                                    <container style="screenlet-body">
+                                        <section>
+                                            <widgets>
+                                                <include-form name="ViewGatewayConfigurationPayPal" location="component://accounting/widget/PaymentGatewayConfigurationsForms.xml"/>
+                                            </widgets>
+                                        </section>
+                                    </container>
+                                </container>
+                            </widgets>
+                        </section>
+                        <section>
+                            <condition>
                                 <not><if-empty field="paymentGatewayClearCommerce"/></not>
                             </condition>
                             <widgets>

Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml Sun Apr 12 21:11:42 2009
@@ -69,7 +69,7 @@
     <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="GIFT_CARD" paymentServiceTypeEnumId="PRDS_PAY_AUTH" paymentService="alwaysApproveGCProcessor" paymentCustomMethodId="GIFT_AUTH_ALWAYSAPPR"/>
     <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="GIFT_CARD" paymentServiceTypeEnumId="PRDS_PAY_RELEASE" paymentService="testGCRelease" paymentCustomMethodId="GIFT_RELEASE_TEST"/>
 
-    <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="EXT_PAYPAL" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>
+    <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="EXT_PAYPAL" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId="" paymentGatewayConfigId="PAYPAL_CONFIG"/>
     <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="EXT_WORLDPAY" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>
     <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="EXT_OFFLINE" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>
     <ProductStorePaymentSetting productStoreId="9000" paymentMethodTypeId="EXT_COD" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>

Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoRentalProduct.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoRentalProduct.xml?rev=764327&r1=764326&r2=764327&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/data/DemoRentalProduct.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoRentalProduct.xml Sun Apr 12 21:11:42 2009
@@ -42,7 +42,7 @@
     <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="EFT_ACCOUNT" paymentServiceTypeEnumId="PRDS_PAY_AUTH" paymentService="alwaysApproveEFTProcessor" paymentCustomMethodId="EFT_AUTH_ALWAYSAPPRO"/>
     <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="GIFT_CARD" paymentServiceTypeEnumId="PRDS_PAY_AUTH" paymentService="alwaysApproveGCProcessor" paymentCustomMethodId="GIFT_AUTH_ALWAYSAPPR"/>
     <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="GIFT_CARD" paymentServiceTypeEnumId="PRDS_PAY_RELEASE" paymentService="testGCRelease" paymentCustomMethodId="GIFT_RELEASE_TEST"/>
-    <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="EXT_PAYPAL" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>
+    <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="EXT_PAYPAL" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId="" paymentGatewayConfigId="PAYPAL_CONFIG"/>
     <ProductStorePaymentSetting productStoreId="RentalStore" paymentMethodTypeId="EXT_WORLDPAY" paymentServiceTypeEnumId="PRDS_PAY_EXTERNAL" paymentService="" paymentCustomMethodId=""/>
 
     <ProductStoreEmailSetting productStoreId="RentalStore" emailType="PRDS_ODR_CONFIRM" bodyScreenLocation="component://ecommerce/widget/EmailOrderScreens.xml#OrderConfirmNotice" xslfoAttachScreenLocation="component://ecommerce/widget/EmailOrderScreens.xml#OrderConfirmNoticePdf" subject="OFBiz Demo - Order Confirmation #${orderId}" bccAddress="ofbiztest@yahoo.com" fromAddress="ofbiztest@yahoo.com"/>