README.markdown in datatrans-1.0.0 vs README.markdown in datatrans-2.0.0

- old
+ new

@@ -1,32 +1,176 @@ Datatrans ========= Ruby adapter for the Datatrans payment gateway (http://www.datatrans.ch). -Usage -===== - Configuration ------------- +Set your datatrans credentials in your environment. + Datatrans.configure do |config| config.merchant_id = '1234567' - config.sign_key = '...' + config.sign_key = 'ab739fd5b7c2a1...' config.environment = :production end Possible values for the environment: `:production`, `:development` -Controller ----------- +Web Authorization +================= -TODO +If you want to process a credit card the first time a web authorization is +necessary. Add the following code to a controller action that shows the form. +You need to pass at least `amount`, `currency` and `refno` (order number). -View + @transaction = Datatrans::Web::Transaction.new({ + :amount => 1000, # in cents! + :currency => 'CHF', + :refno => 'ABCDEF', + :uppCustomerEmail => 'customer@email.com' + # feel free to add more upp infos here ... + }) + +In your View your show the credit card form with a convenient helper: + +In this example we use just ECA (Mastercard) as paymentmethod. Feel free to +provide an appropriate select field to offer more payment methods. This is the +form you will show in your "new" method. + + = form_tag Datatrans.web_authorize_url do + + = text_field_tag :paymentmethod, 'ECA' + = text_field_tag :cardno + = text_field_tag :expm + = text_field_tag :expy + = text_field_tag :cvv + + = hidden_field_tag :successUrl, <your_application_return_url> + = hidden_field_tag :cancelUrl, <your_application_return_url> + = hidden_field_tag :errorUrl, <your_application_return_url> + + = datatrans_notification_request_hidden_fields(@transaction) + + = submit_tag "send" + +In this example we use just ECA (Mastercard) as paymentmethod. Feel free to +provide an appropriate select field to offer more payment methods. Don't forget +to add `successUrl`, `cancelUrl` and `errorUrl`. We recommend to set them all +to the same value. + +After you submit the request to Datatrans they redirect back to your application. +Now you can process the transaction like this: + + begin + transaction = Datatrans::Web::Transaction.new(params) + + if transaction.authorize + # transaction was successful, access the following attributes + # transaction.transaction_id + # transaction.creditcard_alias + # transaction.masked_cc + # transaction.authorization_code + # ... + + else + # transaction was not successful, accces the error details + # transaction.error_code, transaction.error_message, transaction.error_detail + + end + rescue Datatrans::InvalidSignatureError => exception + # the signature was wrong, the request may have been compromised... + end + +XML Transactions +================ + +If you have already a credit card alias or an authorized transaction you can +use the convenient XML methods to process payments. + +Authorize +--------- + + transaction = Datatrans::XML::Transaction.new( + :refno => 'ABCDEF', + :amount => 1000, # in cents! + :currency => 'CHF', + :aliasCC => '8383843729284848348', + :expm => 12, + :expy => 15 + ) + + if transaction.authorize + # ok, the transaction is authorized... + # access same values as in the web authorization (e.g. transaction.transaction_id) + else + # transaction.error_code, transaction.error_message, transaction.error_detail + end + + +Capture +------- + +To capture an authorized transaction you use the following code: + + transaction = Datatrans::XML::Transaction.new( + :refno => 'ABCDEF', + :amount => 1000, # in cents! + :currency => 'CHF', + :transaction_id => 19834324987349723948729834 + ) + + begin + if transaction.capture + # ok, the money is yours... + else + # transaction.error_code, transaction.error_message, transaction.error_detail + end + rescue Datatrans::InvalidSignatureError => exception + # the signature was wrong, the request may have been compromised... + end + + +Void ---- -TODO +To make an authorized transaction invalid use void. + + transaction = Datatrans::XML::Transaction.new( + :refno => 'ABCDEF', + :amount => 1000, # in cents! + :currency => 'CHF', + :transaction_id => 19834324987349723948729834 + ) + + if transaction.void + # ok, the transaction is not longer valid... + else + # transaction.error_code, transaction.error_message, transaction.error_detail + end + + +Todo +==== + +* allow signing of xml transactions +* allow signing with different keys +* add credit method to reverse already captured transactions +* add purchase method to authorize and capture in one step +* dry code more + + +Contribute +========== + +* Fork the project. +* Make your feature addition or bug fix. +* Add specs for it. This is important so we don't break it in a + future version unintentionally. +* Commit, do not mess with rakefile, version, or history. + (if you want to have your own version, that is fine but bump version in a commit by itself we can ignore when we pull) +* Send us a pull request. Bonus points for topic branches. + Credits ======= Datatrans is maintained by Simplificator GmbH (http://simplificator.com).