{"id":2859,"date":"2022-07-14T10:51:55","date_gmt":"2022-07-14T10:51:55","guid":{"rendered":"https:\/\/www.reloadly.com\/blog\/?p=2859"},"modified":"2022-08-22T09:44:57","modified_gmt":"2022-08-22T09:44:57","slug":"utility-payments-ruby-quickstart","status":"publish","type":"post","link":"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/","title":{"rendered":"Utility Payments Ruby Quickstart"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_46 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"ez-toc-toggle-icon-1\"><label for=\"item-69d2b69123397\" aria-label=\"Table of Content\"><span style=\"display: flex;align-items: center;width: 35px;height: 30px;justify-content: center;direction:ltr;\"><svg style=\"fill: #000000;color:#000000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/label><input  type=\"checkbox\" id=\"item-69d2b69123397\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-visibility-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#Get_an_access_token\" title=\"Get an access token\">Get an access token<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#Pay_a_utility_bill\" title=\"Pay a utility bill\">Pay a utility bill<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>This quick start will guide you through integrating Reloadly\u2019s Utility Payments API using a Ruby application. Prerequisites needed for this guide are:<\/p>\n\n\n\n<ul><li>The reader should have a decent understanding of Ruby<\/li><li>A Reloadly account. If you don\u2019t already have one, <a href=\"https:\/\/www.reloadly.com\/registration\">follow the registration procedure<\/a>.<\/li><li>Next, you need to have funds in your test wallet. When you sign up, a certain amount of funds are automatically added to your test wallet. You can fund your live wallet by following the steps in the <a href=\"https:\/\/developers.reloadly.com\/wallet\">Wallet<\/a> section.<\/li><li>Sign in to retrieve your <strong>client_id<\/strong> and <strong>client_secret<\/strong> keys for test mode. You can get both keys by toggling from live to test mode on the sidebar and navigating to <strong>Developers &gt; API<\/strong> settings<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Get_an_access_token\"><\/span>Get an access token<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Reloadly issues access tokens (also called bearer tokens) that are used to authorize API requests. Using the right parameters, make a request to Reloadly\u2019s authorization URL to obtain the appropriate access token.<\/p>\n\n\n\n<p>You can get a test access token by making a request in your Ruby application like this<\/p>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>require 'json'\nrequire 'uri'\nrequire 'net\/http'\nrequire 'openssl'\n\nurl = URI('https:\/\/auth.reloadly.com\/oauth\/token')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest&#091;'Content-Type'] = 'application\/json'\nrequest.body = {\n  client_id: 'qwcLzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',\n  client_secret: '7kscVxQZ32-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',\n  grant_type: 'client_credentials',\n  audience: 'https:\/\/utilities-sandbox.reloadly.com'\n}.to_json\n\nresponse = http.request(request)\nputs response.read_body\n<\/code><\/pre>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>While production access tokens are valid for 60 days, test access tokens are only valid for 24 hours.<\/p>\n\n\n\n<p>If your request is successful, you should get the following response.<\/p>\n\n\n\n<div style=\"height:42px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"access_token\": \"eyJraWQiOiI1N2JjZjNhNy01YmYwLTQ1M2QtODQ0Mi03ODhlMTA4OWI3MDIiLCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2NzkzIiwiaXNzIjoiaHR0cHM6Ly9yZWxvYWRseS1zYW5kYm94LmF1dGgwLmNvbS8iLCJodHRwczovL3JlbG9hZGx5LmNvbS9zYW5kYm94Ijp0cnVlLCJodHRwczovL3JlbG9hZGx5LmNvbS9wcmVwYWlkVXNlcklkIjoiNjc5MyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyIsImF1ZCI6Imh0dHBzOi8vdG9wdXBzLWhzMjU2LXNhbmRib3gucmVsb2FkbHkuY29tIiwibmJmIjoxNjU0MDgzNjY3LCJhenAiOiI2NzkzIiwic2NvcGUiOiJzZW5kLXRvcHVwcyByZWFkLW9wZXJhdG9ycyByZWFkLXByb21vdGlvbnMgcmVhZC10b3B1cHMtaGlzdG9yeSByZWFkLXByZXBhaWQtYmFsYW5jZSByZWFkLXByZXBhaWQtY29tbWlzc2lvbnMiLCJleHAiOjE2NTQxNzAwNjcsImh0dHBzOi8vcmVsb2FkbHkuY29tL2p0aSI6IjYwMTY4ODNiLWYxYTgtNGJhMy1hNmM3LWIwNjBkNDRmN2EyMCIsImlhdCI6MTY1NDA4MzY2NywianRpIjoiZGUwNzRlM2QtM2JkYi00N2ExLTkzNDktZTk1YmZiNjZlNGVmIn0.ZXUzCYbCCTzpDMr5hP7YvgWYqniy9kBY0Y5vWS8wRrA\",\n    \"scope\": \"developer\",\n    \"expires_in\": 86400,\n    \"token_type\": \"Bearer\"\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pay_a_utility_bill\"><\/span>Pay a utility bill<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Now that you have an access token, you can pay a utility bill with the Utility Payments API. You can find details of the bill you want to pay by <a href=\"https:\/\/docs.reloadly.com\/utility-payments\/tag\/Utility-Billers#operation\/utilitypayments\/get-all-billers\">Getting all billers<\/a> available on Reloadly\u2019s platform.<\/p>\n\n\n\n<p>In the example below, we will show how making a bill payment works by paying for an electricity bill for a Nigerian electricity payment provider.<\/p>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>require 'json'\nrequire 'uri'\nrequire 'net\/http'\nrequire 'openssl'\n\nurl = URI('https:\/\/utilities-sandbox.reloadly.com\/pay')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest&#091;'Content-Type'] = 'application\/json'\nrequest&#091;'Authorization'] = 'Bearer &lt;YOUR_TOKEN_HERE&gt;'\nrequest.body = {\n  subscriberAccountNumber: 4223568280,\n  amount: 1000,\n  billerId: 5,\n  useLocalAmount: false,\n  referenceId: 'april-electricity-bill'\n}.to_json\n\nresponse = http.request(request)\nputs response.read_body\n\n<\/code><\/pre>\n\n\n\n<div style=\"height:42px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>If your request is successful, you should receive a response from Reloadly<\/p>\n\n\n\n<div style=\"height:41px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:38px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"id\": 69,\n    \"status\": \"PROCESSING\",\n    \"referenceId\": null,\n    \"code\": \"PAYMENT_PROCESSING_IN_PROGRESS\",\n    \"message\": \"The payment is being processed, status will be updated when biller processes the payment.\",\n    \"submittedAt\": \"2022-06-10 16:46:32\",\n    \"finalStatusAvailabilityAt\": \"2022-06-11 16:46:31\"\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:41px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>If you made it to this point, you have successfully made your first utility payment in a Ruby application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This quick start will guide you through integrating Reloadly\u2019s Utility Payments API using a Ruby application. Prerequisites needed for this guide are: The reader should have a decent understanding of Ruby A Reloadly account. If you don\u2019t already have one, follow the registration procedure. Next, you need to have funds in your test wallet. When<\/p>\n","protected":false},"author":17,"featured_media":2689,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[274],"tags":[277,415,282,410],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Utility Payments Ruby Quickstart - Reloadly<\/title>\n<meta name=\"description\" content=\"Reloadly Resources. Insights, Info and Analysis For The Mobile Airtime API Community\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utility Payments Ruby Quickstart - Reloadly\" \/>\n<meta property=\"og:description\" content=\"Reloadly Resources. Insights, Info and Analysis For The Mobile Airtime API Community\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\" \/>\n<meta property=\"og:site_name\" content=\"Reloadly\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-14T10:51:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-22T09:44:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.reloadly.com\/blog\/wp-content\/uploads\/2022\/05\/api-benefits-for-business.png\" \/>\n\t<meta property=\"og:image:width\" content=\"641\" \/>\n\t<meta property=\"og:image:height\" content=\"334\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"2 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/#organization\",\"name\":\"Reloadly\",\"url\":\"https:\/\/www.reloadly.com\/blog\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/blog.reloadly.com\/blog\/wp-content\/uploads\/2020\/11\/logo-1.svg\",\"width\":100,\"height\":100,\"caption\":\"Reloadly\"},\"image\":{\"@id\":\"https:\/\/www.reloadly.com\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/#website\",\"url\":\"https:\/\/www.reloadly.com\/blog\/\",\"name\":\"Reloadly\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.reloadly.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.reloadly.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/blog.reloadly.com\/blog\/wp-content\/uploads\/2022\/05\/api-benefits-for-business.png\",\"width\":641,\"height\":334},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#webpage\",\"url\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\",\"name\":\"Utility Payments Ruby Quickstart - Reloadly\",\"isPartOf\":{\"@id\":\"https:\/\/www.reloadly.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#primaryimage\"},\"datePublished\":\"2022-07-14T10:51:55+00:00\",\"dateModified\":\"2022-08-22T09:44:57+00:00\",\"description\":\"Reloadly Resources. Insights, Info and Analysis For The Mobile Airtime API Community\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/\",\"url\":\"https:\/\/www.reloadly.com\/blog\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\",\"url\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/\",\"name\":\"Utility Payments Ruby Quickstart\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.reloadly.com\/blog\/#\/schema\/person\/2400042054e3b3009489e487224a6984\"},\"headline\":\"Utility Payments Ruby Quickstart\",\"datePublished\":\"2022-07-14T10:51:55+00:00\",\"dateModified\":\"2022-08-22T09:44:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.reloadly.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#primaryimage\"},\"keywords\":\"api,bill payment,developer,ruby\",\"articleSection\":\"Developer Blog\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.reloadly.com\/blog\/utility-payments-ruby-quickstart\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/#\/schema\/person\/2400042054e3b3009489e487224a6984\",\"name\":\"Raphael Ugwu\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.reloadly.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/656844c0101d37e5695eee915ed3a49d?s=96&d=mm&r=g\",\"caption\":\"Raphael Ugwu\"},\"url\":\"https:\/\/blog.reloadly.com\/blog\/author\/fullstackmafia\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","authors":[{"term_id":359,"user_id":17,"is_guest":0,"slug":"fullstackmafia","display_name":"Raphael Ugwu"}],"_links":{"self":[{"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/posts\/2859"}],"collection":[{"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/comments?post=2859"}],"version-history":[{"count":2,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/posts\/2859\/revisions"}],"predecessor-version":[{"id":3434,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/posts\/2859\/revisions\/3434"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/media\/2689"}],"wp:attachment":[{"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/media?parent=2859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/categories?post=2859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.reloadly.com\/blog\/wp-json\/wp\/v2\/tags?post=2859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}