Skip to content
forked from eagleas/webmoney

Interface library for WebMoney Transfer payment system. Gem.

Notifications You must be signed in to change notification settings

admsev/webmoney

This branch is 31 commits behind eagleas/webmoney:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c9092dd · Jun 29, 2012
Apr 23, 2011
Jun 29, 2012
Feb 10, 2012
Apr 11, 2012
Jan 13, 2012
Apr 11, 2012
Jan 13, 2012
Jan 13, 2012
Jan 13, 2012
Apr 11, 2012
Apr 11, 2012
Apr 11, 2012

Repository files navigation

About Webmoney library

This library should help to make requests to WebMoney Transfer http://www.wmtransfer.com XML-interfaces: http://www.wmtransfer.com/eng/developers/interfaces/index.shtml

Gem have built-in native wmsigner.

Compatible with ruby: 1.8.7, 1.9.2 Reqirements: Nokogiri >= 1.4.1 built with libxml2 >= 2.7 (IMPORTANT!)

Author:: Alexander Oryol (mailto:[email protected]) License:: MIT License

Request types

Completed:

  • create_invoice - x1
  • create_transaction - x2
  • outgoing_invoices - x4
  • send_message - x6
  • find_wm - x8
  • get_passport - x11
  • i_trust - x15
  • trust_me - x15
  • check_user - x19
  • bussines_level
  • login

Incompleted (help need!):

  • operation_history - x3
  • finish_protect - x5
  • check_sign - x7
  • balance - x9
  • incoming_invoices - x10
  • reject_protection - x13
  • transaction_moneyback - x14
  • trust_save - x15
  • create_purse - x16
  • create_contract - x17
  • transaction_get - x18

Please, see relative documentation and parameters on wiki:

http://wiki.wmtransfer.com/wiki/list/XML-Interfaces

http://wiki.webmoney.ru/wiki/list/XML-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%8B (in russian)

or official sites:

http://www.wmtransfer.com/eng/developers/interfaces/xml/index.shtml

http://www.webmoney.ru/rus/developers/interfaces/xml/index.shtml (in russian)

Examples

Setup

class MyWM
  include Webmoney
end
@wm = MyWM.new(:wmid => '123456789012', :password => 'my_pass', :key => 'gQABAIR6...2cC8FZTyKyjBM=')

wmid = '111222333444'

Light

cert = OpenSSL::X509::Certificate.new(File.read("webmoney.cert"))
key = OpenSSL::PKey::RSA.new(File.read("webmoney.key"), "password")
mywm = MyWM.new(:wmid => '123456789012', :cert => cert, :key => key)

Passport (X11)

Get attestat data:

passport = Webmoney::Passport.new(wmid)
passport.attestat     # { # hash
                      #   :attestat => 110, # == FORMAL attestat, as example
                      #   :created_at => Wed Feb 25 21:54:01 +0300 2004 # Time object
                      #   :cid => "103453"
                      #   and etc.
                      # }
passport.wmids        # All wmids attached to the attestat
passport.userinfo[:country]          # => 'Russia' # Userinfo fields in string context
passport.userinfo[:country].checked  # => true     # with checked/locked attribute
passport.directory    # Base dictionary

Bussines level

bl = @wm.request(:bussines_level, :wmid => wmid)       #  => 15

Sending message

... for one message:

@wm.request(:send_message, :wmid => wmid, :subj => 'Subject', :text => 'Body of \<b>message\</b>')

... for many messages (with queue):

@wm.send_message(:wmid => wmid, :subj => 'Subject', :text => 'Body of \<b>message\</b>') do |msg, result|
  File.open("logfile", "w") do |file|
    case result
    when Hash
      file.puts "Message #{msg.inspect} sended in:#{result[:date]} with id:#{result[:id]}"
    else
      file.puts "Error sent message #{msg.inspect}: #{result.message}"
    end
  end
end

Purses and WMIDs

@wm.wmid_exist?('123456789012')                   # => true

purse = Purse.new('Z123456789012')
purse.wmid                                        # => '123456789012'
purse.belong_to?('123456789012')                  # => true

Example: Create invoice and check it's state

@wm = MyWM.new(:wmid => '123456789012', :password => 'my_pass', :key => 'gQABAIR6...2cC8FZTyKyjBM=')

Create invoice

@invoice = @wm.request(:create_invoice,
  :orderid => 5,
  :amount => 10,
  :customerwmid => CUSTOMER_WMID,
  :storepurse => STORE_PURSE,
  :desc => "Test invoice",
  :address => "Delivery Address"
)

Check state

res = @wm.request(:outgoing_invoices,
  :purse => STORE_PURSE,
  :wminvid => @invoice[:id],
  :orderid => @invoice[:orderid],
  :customerwmid => CUSTOMER_WMID,
  :datestart => @invoice[:created_at],
  :datefinish => @invoice[:created_at]
)
if res[:retval].should == 0 && !res[:invoices].empty?
  invoice = res[:invoices].first
  case invoice[:state]
    when 0 then # Not Paid
    when 1 then # Paid with protection
    when 2 then # Payment complete
    when 3 then # Rejected
  end
end

Check purse owner

res = @wm.request(:check_user,
  :operation => {
    :type => 2,
    :amount => 100,
    :pursetype => "WMZ"
  },
  :userinfo => {
    :wmid => "123445532523",
    :iname => "Alexander",
    :fname => "Ivanov"
  }
)

Also, see spec/* for examples.

About

Interface library for WebMoney Transfer payment system. Gem.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 53.9%
  • Ruby 42.4%
  • C 3.7%