Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

CircleCI

coinbase-commerce-ruby

Note: This repository is not actively maintained.

Coinbase Commerce Ruby Gem

Table of contents

Ruby Version

Ruby 2.3, 2.4, 2.5, 2.6RC are supported and tested.

Third Party Libraries and Dependencies

The following libraries will be installed when you install the client library:

Documentation

For more details visit Coinbase API docs.

To start using library, you'll need to create a Coinbase Commmerce account. Once you've created your Coinbase Commerce account, create an API_KEY in Settings.

Next create a Client object for interacting with the API:

require'coinbase_commerce'API_KEY="API KEY"client=CoinbaseCommerce::Client.new(api_key: API_KEY)

Client contains links to every Ruby Class representations of the API resources Checkout, Charge, Event

You can call list, auto_paging, create, retrieve, modify methods from API resource classes

client.charge.createclient.checkout.auto_pagingclient.event.listclient.charge.retrieveclient.checkout.modify

as well as save, delete, refresh methods from API resource class instances.

checkout=client.checkout.retrieve<id>checkout.refreshcheckout.savecheckout.delete

Each API method returns an APIObject representing the JSON response from the API, all of the models support hash and JSON representation.
Also when the response data is parsed into Ruby objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.

The client supports handling of common API errors and warnings. All errors occuring during the interaction with the API will be raised as exceptions.

ErrorStatus Code
APIError*
InvalidRequestError400
ParamRequiredError400
ValidationError400
AuthenticationError401
ResourceNotFoundError404
RateLimitExceededError429
InternalServerError500
ServiceUnavailableError503

Installation

Add this line to your application's Gemfile:

gem'coinbase_commerce'

Then execute:

bundle install

Or install it yourself as:

gem install coinbase_commerce

Usage

require'coinbase_commerce'client=CoinbaseCommerce::Client.new(api_key: 'your_api_key')

Checkouts

Checkouts API docs

Retrieve

checkout=client.checkout.retrieve <checkout_id>

Create

checkout_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}checkout=client.checkout.create(checkout_info)# orcheckout=client.checkout.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"},:requested_info=>["name","email"])

Update

checkout=client.checkout.retrieve <checkout_id>
checkout.name='new name'checkout.save# orclient.checkout.modify(<checkout_id>,"local_price": {"amount": "10000.00","currency": "USD"})

Delete

checkout.delete

List

checkouts=client.checkout.list

Paging list iterations

client.checkout.auto_pagingdo |ch|
putsch.idend

Charges

Charges API docs

Retrieve

charge=client.charge.retrieve <charge_id>

Create

charge_info={"name": "The Sovereign Individual","description": "Mastering the Transition to the Information Age","pricing_type": "fixed_price","local_price": {"amount": "1.00","currency": "USD"},"requested_info": ["name","email"]}charge=client.charge.create(charge_info)# orcharge=client.charge.create(:name=>'The Sovereign Individual',:description=>'Mastering the Transition to the Information Age',:pricing_type=>'fixed_price',:local_price=>{"amount": "100.00","currency": "USD"})

List

charges_list=client.charge.list

Paging list iterations

client.charge.auto_pagingdo |charge|
putscharge.idend

Events

Events API Docs

Retrieve

event=client.event.retrieve <event_id>

List

events=client.event.list

Paging list iterations

client.event.auto_pagingdo |event|
putsevent.idend

Validating webhook signatures

You should verify the webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from the request header, and the endpoint’s secret. In case of an invalid request signature or request payload, you will receive an appropriate error message.

WEBHOOK_SECRET='your_webhook_secret'# Using Sinatrapost'/webhooks'dorequest_payload=request.body.readsig_header=request.env['HTTP_X_CC_WEBHOOK_SIGNATURE']beginevent=CoinbaseCommerce::Webhook.construct_event(request_payload,sig_header,WEBHOOK_SECRET)# event handleputs"Received event id=#{event.id}, type=#{event.type}"status200# errors handlerescueJSON::ParserError=>eputs"json parse error"status400returnrescueCoinbaseCommerce::Errors::SignatureVerificationError=>eputs"signature verification error"status400returnrescueCoinbaseCommerce::Errors::WebhookInvalidPayload=>eputs"missing request or headers data"status400returnendend

Testing and Contributing

Any and all contributions are welcome! The process is simple: fork this repo, make your changes, add tests, run the test suite, and submit a pull request. Tests are run via rspec. To run the tests, clone the repository and then:

# Install the requirements
gem install coinbase_commerce
rspec spec
# or via Bundle
bundle install
bundle exec rspec spec

About

Coinbase Commerce Ruby Gem

Resources

Security policy

Stars

35 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages