### How to Test ###
1. go to ecommerce website.
2. select product and add to cart.
3. at 3)How shall you pay?, Pay With iDEAL which show the consumer’s bank.
4. submit order.

###  config ###
first of all, add the following jars to the /applications/accounting/lib directory:
ing-iac-2.0.3.jar
jibx-run.jar
remove the line : <exclude name="org/apache/ofbiz/accounting/thirdparty/ideal/**"/> from /accounting/build.xml
run ./ant 

1. go to Accounting component
2. go to Payment Gateway Config, then click find
3. select iDEAL Payment Gateway (iDEAL Config)
4. fill in Update Payment Gateway Config iDEAL (Merchant Id, Merchant ReturnURL, etc.), then click Update


### Configuration Attributes for detailed information for activate ###
1. merchantID: The ID of the webshop, received by the acceptor during the registration process

2. merchantSubId: SubID of the webshop, default value = 0 (zero); only to be changed in consultation with the acquirer

3. merchantReturnURL: URL of the page in the webshop to which the consumer is redirected after an iDEAL transaction. This value can be overruled as necessary in the webshop implementation.

4. acquirerURL: URL of the acceptor’s acquirer; the following prescribed values apply to ING:
              •   Test environment:               https://idealtest.secure-ing.com/ideal/iDeal
              •   Production environment:         https://ideal.secure-ing.com/ideal/iDeal
5. acquirerTimeout: Number of seconds (default = 10) of waiting time for a response from the iDEAL services. If no response is received during that time, an exception is displayed.

6. privateCert: Name of the acceptor’s organization as given during the creation of his or her own certificate. See section 0 for more information about the acceptor’s certificate.

7. acquirerKeyStoreFilename / acquirerKeyStorePassword: Keystore file and acquirer’s password

8. merchantKeyStoreFilename / merchantKeyStorePassword: Keystore file and merchant’s password


### Example iDEAL Configuration:###
You can config on payment.properties

merchantId=005040237
merchantSubId=0
merchantReturnURL=https://localhost:8443/ecommerce/control/idealNotify
acquirerURL=https://idealtest.secure-ing.com/ideal/iDeal
acquirerTimeout=10
expirationPeriod=PT1H
privateCert=acquirer.keystore
merchantKeyStoreFilename=merchant.keystore
merchantKeyStorePassword={xor}bm1sa2pp
acquirerKeyStoreFilename=acquirer.keystore
acquirerKeyStorePassword={xor}MiYPPiwsKDAtOw==




