###############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
###############################################################################
####
# Payment Processor Configuration File
####

############################################
# General Payment Gateway Configuration
############################################

# time (in days) to auto re-auth before capture (set to 0 to not auto re-auth)
# when a capture is performed; the auth date is checked and a re-auth is done
# before the capture if the date exceeds the amount defined below.

payment.general.reauth.disc.days=90
payment.general.reauth.amex.days=30
payment.general.reauth.mc.days=30
payment.general.reauth.visa.days=7
payment.general.reauth.other.days=7
payment.general.reauth.paypal.days=3
payment.general.cc_create.auth=0
payment.general.cc_update.auth=0


############################################
# General Gift Certificate Configuration
############################################

# Fulfillment (purchase) Information Survey ID (survey for sending gift card email)
payment.giftcert.purchase.surveyId=1000

# Survey question (description field) which contains the recipient's email address
payment.giftcert.purchase.survey.sendToEmail=recipientEmail

# Survey question (description field) which contains the "copy me" flag
payment.giftcert.purchase.survey.copyMe=copyMe

# Fulfillment (reload) Information Survey ID (survey for reloading gift cards)
payment.giftcert.reload.surveyId=1001

# Survey question (description field) which contains the card number
payment.giftcert.reload.survey.cardNumber=giftCardNumber

# Survey question (description field) which contains the pin number
payment.giftcert.reload.survey.pinNumber=giftCardPin

# Gift Certificate type (ofbiz || valuelink)
payment.giftcert.type=ofbiz

############################################
# CyberSource Configuration
############################################

# your merchant Id
payment.cybersource.merchantID=[MerchantID]

# target API version
payment.cybersource.api.version=1.43

# enable production "mode" (true|false)
payment.cybersource.production=false

# directory of the keys from CyberSource (Generate using online tools)
payment.cybersource.keysDir=${sys:getProperty('ofbiz.home')}/applications/accounting/icskeys

# name of the keystore (if different then <merchantID>.p12)
#payment.cybersource.keysFile=

# log transaction information (true|false)
payment.cybersource.log=true

# log directory
payment.cybersource.log.dir=${sys:getProperty('ofbiz.home')}/runtime/logs

# log file name
payment.cybersource.log.file=cybersource.log

# max log size (megabytes)
payment.cybersource.log.size=10

# Merchant Description - Shown on credit card statement
payment.cybersource.merchantDescr=Some Nice Web Store

# Merchant Description Contact Information - Shown on credit card statement
#payment.cybersource.merchantContact=

# Auto-Bill In Authorization (true|false)
payment.cybersource.autoBill=false

# Use DAV In Authorization -- May not be supported any longer
#payment.cybersource.enableDav=N

# Use Fraud Scoring In Authorization -- May not be supported any longer
#payment.cybersource.fraudScore=N

# Ignore AVS results (true|false)
payment.cybersource.ignoreAvs=false

# Disable AVS for Capture -- May not be supported any longer
#payment.cybersource.disableBillAvs=Y

# 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
############################################

# Useful for tagging/grouping transactions
payment.clearcommerce.sourceId=mySource
payment.clearcommerce.groupId=myGroup

# Account information
payment.clearcommerce.clientId=[ClearCommerce clientId]
payment.clearcommerce.username=[ClearCommerce username]
payment.clearcommerce.password=[ClearCommerce password]
payment.clearcommerce.alias=[ClearCommerce alias]
payment.clearcommerce.effectiveAlias=

# Process mode (Y: approve / N: decline / R: random / P: production)
payment.clearcommerce.processMode=P

# Server URL of the payment processor
payment.clearcommerce.serverURL=https://test5x.clearcommerce.com:11500

# Enable Card Verification Methods (CID, CVC, CVV2)
payment.clearcommerce.enableCVM=N

############################################
# ValueLink Configuration
############################################

# Full merchant ID (MMMMMMMMMMM)
payment.valuelink.merchantId=[MerchantID]

# Terminal ID (should be different for each application server starting at 0001)
payment.valuelink.terminalId=0001

# Alternate merchant ID (i.e. store ID, etc)
payment.valuelink.altMerchantId=999

# Modes (SVDotRaw, Debug, etc) delimited by '/'
payment.valuelink.modes=Debug/SVDotRaw

# URL to use to communicate with ValueLink
payment.valuelink.url=https://www.callit.com/vltest/api1.asp

# Connection timeout in seconds
payment.valuelink.timeout=34

# Debug mode dumps all request/response info to the console (Y|N)
payment.valuelink.debug=Y

# Certificate alias to pass for client auth
payment.valuelink.certificateAlias=

# ValueLink Timestamp Format
payment.valuelink.timestamp=ddMMyyyyHHmmss

# Prime Modulus (P) for key generation (should be a hex string will be converted to unsigned BigInteger from byte array)
payment.valuelink.prime=

# Generator (G) for key generation (should be smaller then prime, so this should be in the form for a integer)
payment.valuelink.generator=

# ValueLink Public Value (128byte as Hex String)
payment.valuelink.publicValue=

############################################
# VeriSign PayFlow Pro Configuration
############################################

# Path the the VeriSign Certificate
payment.verisign.certsPath=${sys:getProperty('ofbiz.home')}/applications/accounting/pfcerts

# Address and port of the payment processor
payment.verisign.hostAddress=pilot-payflowpro.paypal.com
payment.verisign.hostPort=443

# Account information
payment.verisign.vendor=[Vendor]
payment.verisign.user=[PayFlow UserID]
payment.verisign.pwd=[PayFlow Password]
payment.verisign.partner=[PayFlow Partner]

# Use Address Verification
payment.verisign.checkAvs=Y

# Require CVV2 Verification
payment.verisign.checkCvv2=Y

# Pre-Authorize Payments (if set to N will auto-capture)
payment.verisign.preAuth=Y

# Set to false to not transmit anything
payment.verisign.enable_transmit=true

# Logging
payment.verisign.logFileName=${sys:getProperty('ofbiz.home')}/runtime/logs/payflow_java.log
payment.verisign.loggingLevel=6
payment.verisign.maxLogFileSize=1000000
payment.verisign.stackTraceOn=N

############################################
# WorldPay Select Pro Configuration
############################################
# Redirect URL
payment.worldpay.redirectUrl=https://select-test.worldpay.com/wcc/purchase

# Worldpay instance Id
payment.worldpay.instId=[WorldPay InstID]

# AuthMode (A: Full-Auth / E: Pre-Auth)
payment.worldpay.authMode=A

# FixContact - Will displace contact info on WorldPay in non-editable format
payment.worldpay.fixContact=N

# HideContact - Will hide the contact info completely
payment.worldpay.hideContact=N

# HideCurrency - this causes the currency drop down to be no hidden, so fixing the currency that the shopper must value purchase in
payment.worldpay.hideCurrency=N

# langId - The shopper's language choice, as a 2-character ISO 639 code, with optional regionalisation using 2-character country code separated by hyphen
payment.worldpay.langId=

# noLanguageMenu - This suppresses the display of the language menu if noLanguageMenu no you have a choice of languages enabled for your value installation
payment.worldpay.noLanguageMenu=N

# withDelivery - Displays input fields for delivery address and withDelivery no mandate that they be filled in
payment.worldpay.withDelivery=N

# TestMode (100: approve / 101: cancelled / 0: Live Mode (no test)
payment.worldpay.testMode=100

############################################
# PayPal Configuration
############################################

# PayPal E-Mail address
#payment.paypal.business=vote@ofbiz.org
payment.paypal.business=

# PayPal Notify URL
#payment.paypal.notify=http://[yourServerName]/ecommerce/control/payPalNotify
payment.paypal.notify=

# PayPal Return URL
#payment.paypal.return=http://[yourServerName]/ecommerce/control/orderhistory
payment.paypal.return=

# PayPal Return On Cancel URL
#payment.paypal.cancelReturn=http://[yourServerName]/ecommerce/control/payPalCancel/main
payment.paypal.cancelReturn=

# Image To Use On PayPal
#payment.paypal.image=http://[yourServerName]/images/ofbiz_logo.gif
payment.paypal.image=

# Thank-You / Confirm Order Template (rendered via Freemarker)
#payment.paypal.confirmTemplate=/order/emailconfirmation.ftl
payment.paypal.confirmTemplate=

# Production PayPal Redirect URL
#payment.paypal.redirect=https://www.paypal.com/cgi-bin/webscr
# Sandbox PayPal Redirect URL
#payment.paypal.redirect=https://www.sandbox.paypal.com/us/cgi-bin/webscr
payment.paypal.redirect=

# Production PayPal Confirm URL (JSSE must be configured to use SSL)
#payment.paypal.confirm=http://www.paypal.com/cgi-bin/webscr
# Sandbox PayPal Confirm URL (JSSE must be configured to use SSL)
#payment.paypal.confirm=https://www.sandbox.paypal.com/us/cgi-bin/webscr
payment.paypal.confirm=

############################################
# PCCharge Configuration
############################################

# PCCharge Processor ID
payment.pccharge.processorID=VISA

# PCCharge Merchant ID
payment.pccharge.merchantID=999999999911

# PCCharge User ID
payment.pccharge.userID=User1

# PCCharge TCP Settings
payment.pccharge.host=localhost
payment.pccharge.port=31419

# Auto-Capture (bill) authorizations (0 false; 1 true)
payment.pccharge.autoBill=1

############################################
# RiTA Configuration
############################################

# RiTA Client/User ID
payment.rita.clientID=100010001
payment.rita.userID=MANAGER
payment.rita.userPW=rita

# RiTA TCP Settings
payment.rita.host=localhost
payment.rita.port=5012

# Auto-Capture (bill) authorizations (0 false; 1 true)
payment.rita.autoBill=1

# Force Transactions (0 false; 1 true) -- overrides duplicate transaction auto-decline
payment.rita.forceTx=1

############################################
# Authorize.Net Configuration
############################################

# Transaction Url
#payment.authorizedotnet.url=https://secure.authorize.net/gateway/transact.dll
# Test Url
payment.authorizedotnet.url=https://certification.authorize.net/gateway/transact.dll

# Certificate Alias
payment.authorizedotnet.certificateAlias=certification.authorize.net-1

# Version - version 3.0 is currently the only supported version for ofbiz. eventually version 3.1 may be available
payment.authorizedotnet.version=3.1

# Delimited data - if the authorize.net response should delimited (no need to change this)
payment.authorizedotnet.delimited=TRUE

# Delimited Character - the delimiter to use in the response. (no need to change this)
payment.authorizedotnet.delimiter=|

# Method - CC for credit card processing. version 3.1 will support a few more of these.
payment.authorizedotnet.method=CC

# Email Customer? - if should send an email to the customer for each transaction
payment.authorizedotnet.emailcustomer=FALSE

# Trans Key - to use version 3.1 you must register a Transaction Key with the authorize.net
payment.authorizedotnet.trankey=

# Email Merchant? - if should send email to the merchant for each transaction
payment.authorizedotnet.emailmerchant=FALSE

# Test Mode - forces the url property to the test url and adds more logging info to the logs
payment.authorizedotnet.test=TRUE

# Relay Response? - if should relay the reposnse to a different server. (this is untested)
payment.authorizedotnet.relay=FALSE

# Username - your authorize.net userid
payment.authorizedotnet.login=

# Password - your authorize.net password
payment.authorizedotnet.password=

# Default Transaction Description
payment.authorizedotnet.transdescription=OFBizAuthNet

# Default Duplicate Window - Check the duplicate transaction in the specified time duration which is specified in seconds. If found in the defined time limit then return error.
# payment.authorizedotnet.duplicatewindow=120

# For testing authorize.net, set the properties
# payment.authorizedotnet.url=https://certification.authorize.net/gateway/transact.dll
# payment.authorizedotnet.test=TRUE
# payment.authorizedotnet.login=realaccountid
# payment.authorizedotnet.password=realpassword
# Note that you need a valid authorize.net account even for testing.

############################################
# Securepay Configuration
############################################

# Account information
payment.securepay.merchantID=[SecurePay MerchantID]
payment.securepay.pwd=[SecurePay Password]

# Timeout of the payment processor
payment.securepay.processtimeout=80

# Server URL of the payment processor
payment.securepay.serverurl=https://api.securepay.com.au/xmlapi/payment

#Enable rounds the currency amount to .00 (Y For test server / N for live server)
payment.securepay.enableamountround=N

############################################
# iDEAL Configuration
############################################

## Account information
# Id van de webshop, door de acceptant te verkrijgen via het iDEAL Dashboard
merchantId=

# Sub Id van de webshop, alleen te wijzigen na overleg met de acquirer
merchantSubId=0

# URL van de pagina in de webshop waarnaar de consument wordt geredirect na de iDEAL transactie
#merchantReturnURL=http://[yourServerName]/ecommerce/control/payPalNotify
merchantReturnURL=https://localhost:8443/ecommerce/control/idealNotify

## acquirer attributes
# URL van de acquirer van de acceptant; niet wijzigen
# https://idealtest.secure-ing.com/ideal/iDeal voor test
# https://ideal.secure-ing.com/ideal/iDeal voor productie
acquirerURL=https://idealtest.secure-ing.com/ideal/iDeal

# Connection timeout in seconds
# Default:10 seconds
acquirerTimeout=10

# Vervaltijd per transactie; zie paragraaf 3.3.1 van het document
# iDEAL_010 standaarden voor de toegestane waarden en de default
# Default: If not set the issuer will use the default value of PT1H (one hour)
expirationPeriod=PT1H

## crypto attributes
# Naam van de acceptant-organisatie zoals opgegeven tijdens
# de creatie van het certificaat
privateCert=

# Keystore File and Password of the merchant certificate
# used for signing requests. See Ideal Advanced Java
# integration manual for details.
# Note: file must be available on the classpath!
merchantKeyStoreFilename=
merchantKeyStorePassword=

# Truststore File and Password with the acquirer public
# key used for verifying acquirer responses.
# Note: file must be available on the classpath!
acquirerKeyStoreFilename=acquirer.keystore
acquirerKeyStorePassword={xor}MiYPPiwsKDAtOw==
