bpruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in bpruby.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 TODO: Write your name
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # Bpruby
2
+
3
+ This Gem is for making easy Api-Calls to the Bitpay.com Payment Api.
4
+ It currently supports Creating an Invoice and getting the Status of an Invoice.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'bpruby'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install bpruby
19
+
20
+ ## Usage
21
+
22
+
23
+ There are two methods available :
24
+
25
+ #createInvoice(apikey,price,orderId,posData,options={})
26
+
27
+ #Example Call : Bpruby::Bplib.createInvoice(
28
+ 'XXXXAPIKEYHERE',
29
+ 15.40,
30
+ '333',
31
+ '230928307203',
32
+ :transactionSpeed => 'high',
33
+ :itemDesc =>'Test',
34
+ :currency => 'USD',
35
+ :buyerEmail =>'test@bitpay.com',
36
+ :buyerAddress1 =>'On the',
37
+ :buyerAddress2 =>'Teststreet')
38
+
39
+ Required Parameters :
40
+
41
+ - Api-Key : Obtainable in your Bitpay Merchant Account
42
+ - Price : This is the amount that is required to be collected from the
43
+ buyer. Note, if this is specified in a currency other than BTC,
44
+ the price will be converted into BTC at market exchange
45
+ rates to determine the amount collected from the buyer.
46
+ - orderID : Used to display an orderID to the buyer. In the account
47
+ summary view, this value is used to identify a ledger entry if
48
+ present.
49
+ - posData : This content of this field is included in status updates or
50
+ requests to get an invoice. It is intended to be used by
51
+ the merchant to uniquely identify an order associated with
52
+ an invoice in their system. Aside from that, Bit-Pay does
53
+ not use the data in this field. The data in this field can be
54
+ anything that is meaningful to the merchant
55
+
56
+ -Parameters that are required but are already set to a default :
57
+
58
+ -:currency => BTC ,can be overwritten if needed. Currently BTC and USD supported. Get more infos from Bitpay.
59
+
60
+ -Optional Parameters :
61
+
62
+ -:itemDesc ,:itemCode, :notificationEmail, :notificationURL, :redirectURL,
63
+ -:currency, :physical, :fullNotifications, :transactionSpeed, :buyerName,
64
+ -:buyerAddress1, :buyerAddress2, :buyerCity, :buyerState, :buyerZip, :buyerEmail, :buyerPhone
65
+
66
+ -The Method returns a Json-Object with the following Information :
67
+
68
+ -id : The unique id of the invoice.
69
+ -url : An https URL where the invoice can be viewed.
70
+ -posData : A data field provided by the merchant and designed to be used by the merchant to
71
+ -correlate : the invoice with an order or other object in their system.
72
+ -status : The current invoice status. The possible states are described earlier in this document.
73
+ -btcPrice : The amount of bitcoins being requested for payment of this invoice (same as the price if
74
+ the merchant set the price in BTC).
75
+ -price : The price set by the merchant (in terms of the provided currency).
76
+ -currency : The 3 letter currency code in which the invoice was priced.
77
+ -invoiceTime : The time the invoice was created in milliseconds since midnight January 1, 1970.
78
+ -expirationTime : The time at which the invoice expires and no further payment will be accepted (in
79
+ -milliseconds : since midnight January 1, 1970). Currently, all invoices are valid for 15
80
+ minutes.
81
+ -currentTime : The current time on the Bit-Pay.com system (by subtracting the current time from the
82
+ -expiration : time, the amount of time remaining for payment can be determined).
83
+
84
+ More Information about Parameters and calls : https://bitpay.com/help-api
85
+
86
+
87
+
88
+ #getInvoice(apikey,invoiceID)
89
+
90
+ #example call : Bpruby::Bplib.getInvoice('XXXXXXXXXXYOURAPIKEYHERE','T11zE6Xmoz4rK1qq5ktalduPTUO9C9V9NN-BBEpv58o=')
91
+
92
+ To get the current state of an invoice, an http GET request can be sent to https://bitpay.com/api/invoice/
93
+ <id> where the id is the invoice id provided when the invoice was created. The format of the response is
94
+ exactly the same as that which is returned when creating an invoice.
95
+
96
+
97
+ ## Contributing
98
+
99
+ 1. Fork it
100
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
101
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
102
+ 4. Push to the branch (`git push origin my-new-feature`)
103
+ 5. Create new Pull Request
104
+
105
+ ## About me :
106
+
107
+ I am a Ruby Newbie and i like to try ideas. If i have fundamental flaws or when i'm missing best practices please tell me , i am eager to learn !
108
+
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/bin/bpruby ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'bpruby'
4
+
5
+ puts Bpruby::Bplib.createInvoice('JRcbOrlCYNhMFDfYygX3NSHypUibMZzC59v15P95AQg',0.14,'45','85',:transactionSpeed => 'high',:itemDesc =>'Test',:currency => 'USD',:buyerEmail =>'gekuesst@googlemail.com',:buyerAddress1 =>'Hinterm',:buyerAddress2 =>'Testheim')
6
+
7
+ puts Bpruby::Bplib.getInvoice('JRcbOrlCYNhMFDfYygX3NSHypUibMZzC59v15P95AQg','T11zE6Xmoz4rK1qq5ktalduPTUO9C9V9NN-BBEpv58o=')
data/bpruby.gemspec ADDED
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/bpruby/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Phantastisch"]
6
+ gem.email = ["gekuesst@googlemail.com"]
7
+ gem.description = %q{Bitpay for Ruby}
8
+ gem.summary = %q{Easy Bitpay-Api Calls for Ruby}
9
+ gem.homepage = "https://github.com/phanaster/BP-for-Ruby"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "bpruby"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Bpruby::VERSION
17
+ gem.add_dependency "rest-client"
18
+ end
data/lib/bpruby.rb ADDED
@@ -0,0 +1,86 @@
1
+ require "bpruby/version"
2
+
3
+
4
+ module Bpruby
5
+ class Bplib
6
+ require 'rest-client'
7
+
8
+ =begin
9
+ Required Parameters :
10
+
11
+ - Api-Key : Obtainable in your Bitpay Merchant Account
12
+ - Price : This is the amount that is required to be collected from the
13
+ buyer. Note, if this is specified in a currency other than BTC,
14
+ the price will be converted into BTC at market exchange
15
+ rates to determine the amount collected from the buyer.
16
+ - orderID : Used to display an orderID to the buyer. In the account
17
+ summary view, this value is used to identify a ledger entry if
18
+ present.
19
+ - posData : This content of this field is included in status updates or
20
+ requests to get an invoice. It is intended to be used by
21
+ the merchant to uniquely identify an order associated with
22
+ an invoice in their system. Aside from that, Bit-Pay does
23
+ not use the data in this field. The data in this field can be
24
+ anything that is meaningful to the merchant
25
+
26
+ Parameters that are required but are already set to a default :
27
+
28
+ :currency => BTC ,can be overwritten if needed. Currently BTC and USD supported. Get more infos from Bitpay.
29
+
30
+ Optional Parameters :
31
+
32
+ :itemDesc ,:itemCode, :notificationEmail, :notificationURL, :redirectURL,
33
+ :currency, :physical, :fullNotifications, :transactionSpeed, :buyerName,
34
+ :buyerAddress1, :buyerAddress2, :buyerCity, :buyerState, :buyerZip, :buyerEmail, :buyerPhone
35
+
36
+ The Method returns a Json-Object with the following Information :
37
+
38
+ id : The unique id of the invoice.
39
+ url : An https URL where the invoice can be viewed.
40
+ posData : A data field provided by the merchant and designed to be used by the merchant to
41
+ correlate : the invoice with an order or other object in their system.
42
+ status : The current invoice status. The possible states are described earlier in this document.
43
+ btcPrice : The amount of bitcoins being requested for payment of this invoice (same as the price if
44
+ the merchant set the price in BTC).
45
+ price : The price set by the merchant (in terms of the provided currency).
46
+ currency : The 3 letter currency code in which the invoice was priced.
47
+ invoiceTime : The time the invoice was created in milliseconds since midnight January 1, 1970.
48
+ expirationTime : The time at which the invoice expires and no further payment will be accepted (in
49
+ milliseconds : since midnight January 1, 1970). Currently, all invoices are valid for 15
50
+ minutes.
51
+ currentTime : The current time on the Bit-Pay.com system (by subtracting the current time from the
52
+ expiration : time, the amount of time remaining for payment can be determined).
53
+
54
+ More Information about Parameters and calls : https://bitpay.com/help-api
55
+
56
+ =end
57
+
58
+ def self.createInvoice(apikey,price,orderId,posData,options={})
59
+
60
+ defaultoptions ||= {
61
+ :currency => 'BTC' ,
62
+ :physical => 'true',
63
+ :fullNotifications => 'true',
64
+ :transactionSpeed => 'low',
65
+ }
66
+
67
+ options = defaultoptions.merge(options)
68
+ options[:price] = price
69
+ options[:orderId]= orderId
70
+ options[:posData]= posData
71
+
72
+
73
+
74
+
75
+ response = RestClient.post "https://#{apikey}:@bitpay.com/api/invoice", options, :content_type => :json, :accept => :json
76
+ return response
77
+ end
78
+
79
+
80
+ def self.getInvoice(apikey,invoiceId)
81
+
82
+ response = RestClient.get "http://#{apikey}:@bitpay.com/api/invoice/#{invoiceId}", :content_type => :json, :accept => :json
83
+ return response
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,49 @@
1
+ module BPRUBY
2
+ class BPLIB
3
+ require 'rest-client'
4
+
5
+
6
+
7
+
8
+
9
+ def bpCreateInvoice(price,orderid,posData,options={})
10
+
11
+
12
+ @options ||= {
13
+ 'currency' => 'BTC' ,
14
+ 'notificationEmail' => '',
15
+ 'notificationURL' => '',
16
+ 'redirectURL' => '',
17
+ 'physical' => 'true',
18
+ 'fullNotifications' => 'true',
19
+ 'transactionSpeed' => 'low',
20
+ }
21
+
22
+
23
+
24
+ options = @options.merge(options)
25
+ options[:price] = price
26
+ options[:orderId]= orderid
27
+ options[:posData]= posData
28
+
29
+
30
+ postOptions = ['orderID', 'itemDesc', 'itemCode', 'notificationEmail', 'notificationURL', 'redirectURL',
31
+ 'posData', 'price', 'currency', 'physical', 'fullNotifications', 'transactionSpeed', 'buyerName',
32
+ 'buyerAddress1', 'buyerAddress2', 'buyerCity', 'buyerState', 'buyerZip', 'buyerEmail', 'buyerPhone']
33
+
34
+ postOptions.each_with_index do |opt,index|
35
+ if options.include(opt[index])
36
+ postdata[index] = options[index]
37
+ end
38
+ end
39
+
40
+
41
+
42
+ postdata = {}
43
+
44
+
45
+ response = RestClient.post "https://JRcbOrlCYNhMFDfYygX3NSHypUibMZzC59v15P95AQg:@bitpay.com/api/invoice", postdata, :content_type => :json, :accept => :json
46
+ return response
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ module Bpruby
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bpruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Phantastisch
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Bitpay for Ruby
31
+ email:
32
+ - gekuesst@googlemail.com
33
+ executables:
34
+ - bpruby
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE
41
+ - README.md
42
+ - Rakefile
43
+ - bin/bpruby
44
+ - bpruby.gemspec
45
+ - lib/bpruby.rb
46
+ - lib/bpruby/bplib.rb
47
+ - lib/bpruby/version.rb
48
+ homepage: https://github.com/phanaster/BP-for-Ruby
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 1.8.24
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: Easy Bitpay-Api Calls for Ruby
72
+ test_files: []