{"action":"created","comment":{"url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/comments/84537905","pull_request_review_id":5313195,"id":84537905,"diff_hunk":"@@ -0,0 +1,316 @@\n+module OffsitePayments #:nodoc:\n+  module Integrations #:nodoc:\n+    module Paytm\n+      require 'openssl'\n+      require 'base64'\n+      require 'digest'\n+      require 'securerandom'\n+\n+      $DEBUG = false\n+      #$RUN_UNIT_TEST = 0 #do not make this true, in normal \n+\n+      mattr_accessor :test_url\n+      mattr_accessor :production_url\n+\n+      self.test_url = 'https://pguat.paytm.com/oltp-web/processTransaction'\n+      self.production_url = 'https://secure.paytm.in/oltp-web/processTransaction'\n+\n+      def self.service_url\n+        # self.production_url\n+        OffsitePayments.mode == :production ? production_url : test_url\n+      end\n+\n+      def self.notification(post, options = {})\n+        Notification.new(post, options)\n+      end\n+\n+      def self.return(post, options = {})\n+        Return.new(post, options)\n+      end\n+\n+      def self.checksum(chkParams, secret_key, salt = nil)\n+        if salt.nil?\n+        \to = [('a'..'z'), ('A'..'Z'), ('0'..'9')].map { |i| i.to_a }.flatten\n+\t\t\tsalt = (0...4).map { o[Random.rand(o.length)] }.join\n+        end\n+        keys = chkParams.keys\n+        str = nil\n+        keystr = nil\n+        keys = keys.sort\n+        keys.each do |k|\n+          \n+          if chkParams[k].nil?\n+            next\n+          end\n+          \n+          if str.nil?\n+            str = chkParams[k].to_s\n+            keystr = k.to_s+\"=\"+chkParams[k].to_s+\"&\"\n+            next\n+          end\n+          str = str + '|' + chkParams[k].to_s\n+          keystr = keystr + k.to_s+\"=\"+chkParams[k].to_s+\"&\"\n+        end\n+        str = str + '|' + salt\n+\n+        if $DEBUG \n+        \tputs \"KeyMAp: \" + keystr + \";   Values: \"+str+\"; salt: \" + salt + \";\"\n+        end\n+\n+        check_sum = Digest::SHA256.hexdigest(str)\n+        check_sum += salt\n+\n+        ### encrypting checksum ###\n+        aes = OpenSSL::Cipher::Cipher.new('aes-128-cbc')\n+        aes.encrypt\n+        aes.key = secret_key\n+        aes.iv = '@@@@&&&&####$$$$'\n+\n+\t\t\n+        encrypted_data = aes.update(check_sum.to_s) + aes.final\n+        encrypted_data = Base64.encode64(encrypted_data)\n+\n+        check_sum = encrypted_data.delete(\"\\n\")\n+        check_sum\n+      end\n+\n+      class Helper < OffsitePayments::Helper\n+        CHECKSUM_FIELDS = %w(MID ORDER_ID CALLBACK_URL CUST_ID TXN_AMOUNT CHANNEL_ID INDUSTRY_TYPE_ID WEBSITE MOBILE_NO).freeze\n+\n+        mapping :amount, 'TXN_AMOUNT'\n+        mapping :account, 'MID'\n+        mapping :order, 'ORDER_ID'\n+\n+        mapping :customer, :email => 'CUST_ID',\n+                           :phone => 'MOBILE_NO'\n+\n+        # Which tab you want to be open default on Paytm\n+        # CC (CreditCard) or NB (NetBanking)\n+        mapping :mode, 'pg'\n+        mapping :credential3, 'INDUSTRY_TYPE_ID'\n+        mapping :credential4, 'WEBSITE'\n+        mapping :channel_id, 'CHANNEL_ID'\n+        mapping :return_url, 'CALLBACK_URL'\n+        mapping :checksum, 'CHECKSUMHASH'\n+\n+\n+        def initialize(order, account, options = {})\n+          super\n+          @options = options\n+          add_field(mappings[:channel_id], \"WEB\")\n+          self.pg = 'CC'\n+        end\n+\n+        def form_fields\n+          sanitize_fields\n+          @fields.merge(mappings[:checksum] => generate_checksum)\n+        end\n+\n+        def generate_checksum\n+          \n+          checksum_payload_items = Hash.new\n+          CHECKSUM_FIELDS.each do |field|\n+              checksum_payload_items[field] = @fields[field]\n+          end          \n+          Paytm.checksum(checksum_payload_items, @options[:credential2])\n+        end\n+\n+        def sanitize_fields\n+          %w(email phone).each do |field|\n+            @fields[field].gsub!(/[^a-zA-Z0-9\\-_@\\/\\s.]/, '') if @fields[field]\n+          end\n+        end\n+\n+      end\n+\n+\n+\n+      class Notification < OffsitePayments::Notification\n+        PAYTM_RESPONSE_PARAMS = %w(SUBS_ID MID BANKTXNID TXNAMOUNT CURRENCY STATUS RESPCODE RESPMSG TXNDATE GATEWAYNAME BANKNAME PAYMENTMODE PROMO_CAMP_ID PROMO_STATUS PROMO_RESPCODE ORDERID TXNID REFUNDAMOUNT REFID).freeze\n+        def initialize(post, options = {})\n+          super(post, options)\n+          @merchant_id = options[:credential1]\n+          @secret_key = options[:credential2]\n+        end\n+\n+        def complete?\n+          status == 'Completed'\n+        end\n+\n+        def status\n+          if transaction_status.casecmp(\"TXN_SUCCESS\").zero? \n+            return 'Completed'\n+          elsif transaction_status.casecmp(\"pending\").zero? \n+            return 'Pending'\n+          else\n+            return 'Failed'\n+          end\n+        end\n+\n+        def invoice_ok?(order_id)\n+          order_id.to_s == invoice.to_s\n+        end\n+\n+        # Order amount should be equal to gross - discount\n+        def amount_ok?(order_amount, _order_discount = BigDecimal.new('0.0'))\n+          BigDecimal.new(original_gross) == order_amount\n+        end\n+\n+        # Status of transaction return from the Paytm. List of possible values:\n+        # <tt>TXN_SUCCESS</tt>::\n+        # <tt>pending</tt>::\n+        # <tt>TXN_FAILURE</tt>::\n+        def transaction_status\n+          params['STATUS']\n+        end\n+\n+        # ID of this transaction (Paytm transaction id)\n+        def transaction_id\n+          params['TXNID']\n+        end\n+\n+        # Mode of Payment\n+        #\n+        # 'CC' for credit-card\n+        # 'NB' for net-banking\n+\n+        def type\n+          params['PAYMENTMODE']\n+        end\n+\n+        # What currency have we been dealing with\n+        def currency\n+          'INR'\n+        end\n+\n+        def item_id\n+          params['ORDERID']\n+        end\n+\n+        # This is the invoice which you passed to Paytm\n+        def invoice\n+          params['ORDERID']\n+        end\n+\n+        # Merchant Id provided by the Paytm\n+        def account\n+          params['MID']\n+        end\n+\n+        # original amount send by merchant\n+        def original_gross\n+          params['TXNAMOUNT']\n+        end\n+\n+        def gross\n+          parse_and_round_gross_amount(params['TXNAMOUNT'])\n+        end\n+\n+        def checksum #double check check get via get call\n+          params['CHECKSUMHASH'].tr(' ', '+')","path":"lib/offsite_payments/integrations/paytm.rb","position":210,"original_position":210,"commit_id":"278209ffeb1bcdc24376d0eb3c626d91481610d8","original_commit_id":"278209ffeb1bcdc24376d0eb3c626d91481610d8","user":{"login":"gauravmc","id":1014540,"avatar_url":"https://avatars.githubusercontent.com/u/1014540?v=3","gravatar_id":"","url":"https://api.github.com/users/gauravmc","html_url":"https://github.com/gauravmc","followers_url":"https://api.github.com/users/gauravmc/followers","following_url":"https://api.github.com/users/gauravmc/following{/other_user}","gists_url":"https://api.github.com/users/gauravmc/gists{/gist_id}","starred_url":"https://api.github.com/users/gauravmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gauravmc/subscriptions","organizations_url":"https://api.github.com/users/gauravmc/orgs","repos_url":"https://api.github.com/users/gauravmc/repos","events_url":"https://api.github.com/users/gauravmc/events{/privacy}","received_events_url":"https://api.github.com/users/gauravmc/received_events","type":"User","site_admin":false},"body":"It's failing again because `params['CHECKSUMHASH']` is bring returning as `nil` here. 😕 ","created_at":"2016-10-21T20:22:39Z","updated_at":"2016-10-21T20:22:39Z","html_url":"https://github.com/activemerchant/offsite_payments/pull/200#discussion_r84537905","pull_request_url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200","_links":{"self":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/comments/84537905"},"html":{"href":"https://github.com/activemerchant/offsite_payments/pull/200#discussion_r84537905"},"pull_request":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200"}}},"pull_request":{"url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200","id":67998506,"html_url":"https://github.com/activemerchant/offsite_payments/pull/200","diff_url":"https://github.com/activemerchant/offsite_payments/pull/200.diff","patch_url":"https://github.com/activemerchant/offsite_payments/pull/200.patch","issue_url":"https://api.github.com/repos/activemerchant/offsite_payments/issues/200","number":200,"state":"open","locked":false,"title":"Paytm payment gateway ","user":{"login":"Mohit-Aggarwal1","id":12406696,"avatar_url":"https://avatars.githubusercontent.com/u/12406696?v=3","gravatar_id":"","url":"https://api.github.com/users/Mohit-Aggarwal1","html_url":"https://github.com/Mohit-Aggarwal1","followers_url":"https://api.github.com/users/Mohit-Aggarwal1/followers","following_url":"https://api.github.com/users/Mohit-Aggarwal1/following{/other_user}","gists_url":"https://api.github.com/users/Mohit-Aggarwal1/gists{/gist_id}","starred_url":"https://api.github.com/users/Mohit-Aggarwal1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mohit-Aggarwal1/subscriptions","organizations_url":"https://api.github.com/users/Mohit-Aggarwal1/orgs","repos_url":"https://api.github.com/users/Mohit-Aggarwal1/repos","events_url":"https://api.github.com/users/Mohit-Aggarwal1/events{/privacy}","received_events_url":"https://api.github.com/users/Mohit-Aggarwal1/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-04-27T05:26:29Z","updated_at":"2016-10-21T20:22:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"58a281384ac74bb08a39c2055fa6a1290c099b87","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200/commits","review_comments_url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200/comments","review_comment_url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/comments{/number}","comments_url":"https://api.github.com/repos/activemerchant/offsite_payments/issues/200/comments","statuses_url":"https://api.github.com/repos/activemerchant/offsite_payments/statuses/278209ffeb1bcdc24376d0eb3c626d91481610d8","head":{"label":"Mohit-Aggarwal1:master","ref":"master","sha":"278209ffeb1bcdc24376d0eb3c626d91481610d8","user":{"login":"Mohit-Aggarwal1","id":12406696,"avatar_url":"https://avatars.githubusercontent.com/u/12406696?v=3","gravatar_id":"","url":"https://api.github.com/users/Mohit-Aggarwal1","html_url":"https://github.com/Mohit-Aggarwal1","followers_url":"https://api.github.com/users/Mohit-Aggarwal1/followers","following_url":"https://api.github.com/users/Mohit-Aggarwal1/following{/other_user}","gists_url":"https://api.github.com/users/Mohit-Aggarwal1/gists{/gist_id}","starred_url":"https://api.github.com/users/Mohit-Aggarwal1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mohit-Aggarwal1/subscriptions","organizations_url":"https://api.github.com/users/Mohit-Aggarwal1/orgs","repos_url":"https://api.github.com/users/Mohit-Aggarwal1/repos","events_url":"https://api.github.com/users/Mohit-Aggarwal1/events{/privacy}","received_events_url":"https://api.github.com/users/Mohit-Aggarwal1/received_events","type":"User","site_admin":false},"repo":{"id":37510246,"name":"offsite_payments","full_name":"Mohit-Aggarwal1/offsite_payments","owner":{"login":"Mohit-Aggarwal1","id":12406696,"avatar_url":"https://avatars.githubusercontent.com/u/12406696?v=3","gravatar_id":"","url":"https://api.github.com/users/Mohit-Aggarwal1","html_url":"https://github.com/Mohit-Aggarwal1","followers_url":"https://api.github.com/users/Mohit-Aggarwal1/followers","following_url":"https://api.github.com/users/Mohit-Aggarwal1/following{/other_user}","gists_url":"https://api.github.com/users/Mohit-Aggarwal1/gists{/gist_id}","starred_url":"https://api.github.com/users/Mohit-Aggarwal1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mohit-Aggarwal1/subscriptions","organizations_url":"https://api.github.com/users/Mohit-Aggarwal1/orgs","repos_url":"https://api.github.com/users/Mohit-Aggarwal1/repos","events_url":"https://api.github.com/users/Mohit-Aggarwal1/events{/privacy}","received_events_url":"https://api.github.com/users/Mohit-Aggarwal1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Mohit-Aggarwal1/offsite_payments","description":"A simple and unified API to handle dozens of different offsite payment pages.","fork":true,"url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments","forks_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/forks","keys_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/teams","hooks_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/hooks","issue_events_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/issues/events{/number}","events_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/events","assignees_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/assignees{/user}","branches_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/branches{/branch}","tags_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/tags","blobs_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/git/refs{/sha}","trees_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/statuses/{sha}","languages_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/languages","stargazers_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/stargazers","contributors_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/contributors","subscribers_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/subscribers","subscription_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/subscription","commits_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/commits{/sha}","git_commits_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/git/commits{/sha}","comments_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/comments{/number}","issue_comment_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/issues/comments{/number}","contents_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/contents/{+path}","compare_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/merges","archive_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/downloads","issues_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/issues{/number}","pulls_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/pulls{/number}","milestones_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/milestones{/number}","notifications_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/labels{/name}","releases_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/releases{/id}","deployments_url":"https://api.github.com/repos/Mohit-Aggarwal1/offsite_payments/deployments","created_at":"2015-06-16T05:37:11Z","updated_at":"2016-04-01T05:28:46Z","pushed_at":"2016-10-20T05:37:00Z","git_url":"git://github.com/Mohit-Aggarwal1/offsite_payments.git","ssh_url":"git@github.com:Mohit-Aggarwal1/offsite_payments.git","clone_url":"https://github.com/Mohit-Aggarwal1/offsite_payments.git","svn_url":"https://github.com/Mohit-Aggarwal1/offsite_payments","homepage":"","size":540,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"activemerchant:master","ref":"master","sha":"bb5e31058a3e100f0e22427e41018591220ca626","user":{"login":"activemerchant","id":12955944,"avatar_url":"https://avatars.githubusercontent.com/u/12955944?v=3","gravatar_id":"","url":"https://api.github.com/users/activemerchant","html_url":"https://github.com/activemerchant","followers_url":"https://api.github.com/users/activemerchant/followers","following_url":"https://api.github.com/users/activemerchant/following{/other_user}","gists_url":"https://api.github.com/users/activemerchant/gists{/gist_id}","starred_url":"https://api.github.com/users/activemerchant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/activemerchant/subscriptions","organizations_url":"https://api.github.com/users/activemerchant/orgs","repos_url":"https://api.github.com/users/activemerchant/repos","events_url":"https://api.github.com/users/activemerchant/events{/privacy}","received_events_url":"https://api.github.com/users/activemerchant/received_events","type":"Organization","site_admin":false},"repo":{"id":20425338,"name":"offsite_payments","full_name":"activemerchant/offsite_payments","owner":{"login":"activemerchant","id":12955944,"avatar_url":"https://avatars.githubusercontent.com/u/12955944?v=3","gravatar_id":"","url":"https://api.github.com/users/activemerchant","html_url":"https://github.com/activemerchant","followers_url":"https://api.github.com/users/activemerchant/followers","following_url":"https://api.github.com/users/activemerchant/following{/other_user}","gists_url":"https://api.github.com/users/activemerchant/gists{/gist_id}","starred_url":"https://api.github.com/users/activemerchant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/activemerchant/subscriptions","organizations_url":"https://api.github.com/users/activemerchant/orgs","repos_url":"https://api.github.com/users/activemerchant/repos","events_url":"https://api.github.com/users/activemerchant/events{/privacy}","received_events_url":"https://api.github.com/users/activemerchant/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/activemerchant/offsite_payments","description":"A simple and unified API to handle dozens of different offsite payment pages.","fork":false,"url":"https://api.github.com/repos/activemerchant/offsite_payments","forks_url":"https://api.github.com/repos/activemerchant/offsite_payments/forks","keys_url":"https://api.github.com/repos/activemerchant/offsite_payments/keys{/key_id}","collaborators_url":"https://api.github.com/repos/activemerchant/offsite_payments/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/activemerchant/offsite_payments/teams","hooks_url":"https://api.github.com/repos/activemerchant/offsite_payments/hooks","issue_events_url":"https://api.github.com/repos/activemerchant/offsite_payments/issues/events{/number}","events_url":"https://api.github.com/repos/activemerchant/offsite_payments/events","assignees_url":"https://api.github.com/repos/activemerchant/offsite_payments/assignees{/user}","branches_url":"https://api.github.com/repos/activemerchant/offsite_payments/branches{/branch}","tags_url":"https://api.github.com/repos/activemerchant/offsite_payments/tags","blobs_url":"https://api.github.com/repos/activemerchant/offsite_payments/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/activemerchant/offsite_payments/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/activemerchant/offsite_payments/git/refs{/sha}","trees_url":"https://api.github.com/repos/activemerchant/offsite_payments/git/trees{/sha}","statuses_url":"https://api.github.com/repos/activemerchant/offsite_payments/statuses/{sha}","languages_url":"https://api.github.com/repos/activemerchant/offsite_payments/languages","stargazers_url":"https://api.github.com/repos/activemerchant/offsite_payments/stargazers","contributors_url":"https://api.github.com/repos/activemerchant/offsite_payments/contributors","subscribers_url":"https://api.github.com/repos/activemerchant/offsite_payments/subscribers","subscription_url":"https://api.github.com/repos/activemerchant/offsite_payments/subscription","commits_url":"https://api.github.com/repos/activemerchant/offsite_payments/commits{/sha}","git_commits_url":"https://api.github.com/repos/activemerchant/offsite_payments/git/commits{/sha}","comments_url":"https://api.github.com/repos/activemerchant/offsite_payments/comments{/number}","issue_comment_url":"https://api.github.com/repos/activemerchant/offsite_payments/issues/comments{/number}","contents_url":"https://api.github.com/repos/activemerchant/offsite_payments/contents/{+path}","compare_url":"https://api.github.com/repos/activemerchant/offsite_payments/compare/{base}...{head}","merges_url":"https://api.github.com/repos/activemerchant/offsite_payments/merges","archive_url":"https://api.github.com/repos/activemerchant/offsite_payments/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/activemerchant/offsite_payments/downloads","issues_url":"https://api.github.com/repos/activemerchant/offsite_payments/issues{/number}","pulls_url":"https://api.github.com/repos/activemerchant/offsite_payments/pulls{/number}","milestones_url":"https://api.github.com/repos/activemerchant/offsite_payments/milestones{/number}","notifications_url":"https://api.github.com/repos/activemerchant/offsite_payments/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/activemerchant/offsite_payments/labels{/name}","releases_url":"https://api.github.com/repos/activemerchant/offsite_payments/releases{/id}","deployments_url":"https://api.github.com/repos/activemerchant/offsite_payments/deployments","created_at":"2014-06-03T01:11:00Z","updated_at":"2016-10-11T12:12:05Z","pushed_at":"2016-10-20T05:37:01Z","git_url":"git://github.com/activemerchant/offsite_payments.git","ssh_url":"git@github.com:activemerchant/offsite_payments.git","clone_url":"https://github.com/activemerchant/offsite_payments.git","svn_url":"https://github.com/activemerchant/offsite_payments","homepage":"","size":1043,"stargazers_count":101,"watchers_count":101,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":136,"mirror_url":null,"open_issues_count":81,"forks":136,"open_issues":81,"watchers":101,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200"},"html":{"href":"https://github.com/activemerchant/offsite_payments/pull/200"},"issue":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/issues/200"},"comments":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/issues/200/comments"},"review_comments":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200/comments"},"review_comment":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/pulls/200/commits"},"statuses":{"href":"https://api.github.com/repos/activemerchant/offsite_payments/statuses/278209ffeb1bcdc24376d0eb3c626d91481610d8"}}}}
{"actor":{"display_login":"gauravmc"}}