class Payments
Constants
- BANK_CODES
- HTTP_CREATED
- HTTP_OK
- PROVIDERS
Public Class Methods
new(username, apikey)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 36 def initialize username, apikey @username = username @apikey = apikey end
Public Instance Methods
bankCheckoutCharge(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 144 def bankCheckoutCharge options validateParamsPresence? options, %w(bankAccount productName currencyCode amount narration metadata) parameters = { 'username' => @username, 'productName' => options['productName'], 'bankAccount' => options['bankAccount'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'], 'narration' => options['narration'], 'metadata' => options['metadata'] } url = getBankChargeCheckoutUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) # return InitiateBankCheckoutResponse.new resultObj['status'], resultObj['transactionId'], resultObj['description'] end raise AfricasTalkingException, response end
bankCheckoutValidate(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 165 def bankCheckoutValidate options validateParamsPresence? options, %w(transactionId otp) parameters = { 'username' => @username, 'transactionId' => options['transactionId'], 'otp' => options['otp'] } # url = getValidateBankCheckoutUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) return ValidateBankCheckoutResponse.new resultObj['status'], resultObj['description'] end raise AfricasTalkingException, response end
bankTransfer(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 182 def bankTransfer options validateParamsPresence? options, %w(productName recipients) parameters = { 'username' => @username, 'productName' => options['productName'], 'recipients' => options['recipients'] } url = getBankTransferRequestUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) if (resultObj['entries'].length > 0) results = resultObj['entries'].collect{ |item| BankTransferEntries.new item['accountNumber'], item['status'], item['transactionId'], item['transactionFee'], item['errorMessage'] } return BankTransferResponse.new results, resultObj['errorMessage'] end raise AfricasTalkingException, resultObj['errorMessage'] end raise AfricasTalkingException, response end
cardCheckoutCharge(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 209 def cardCheckoutCharge options validateParamsPresence? options, %w(productName currencyCode amount narration metadata) parameters = { 'username' => @username, 'productName' => options['productName'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'], 'narration' => options['narration'], 'metadata' => options['metadata'] } if (options['checkoutToken'] == nil && options['paymentCard'] == nil) raise AfricasTalkingException, "Please make sure either the checkoutToken or paymentCard parameter is not empty" elsif (options['checkoutToken'] != nil && options['paymentCard'] != nil) raise AfricasTalkingException, "If you have a checkoutToken please make sure paymentCard parameter is empty" end if (options['checkoutToken'] != nil) parameters['checkoutToken'] = options['checkoutToken'] end if (options['paymentCard'] != nil) if validateParamsPresence?(options['paymentCard'], ['number', 'cvvNumber', 'expiryMonth', 'expiryYear', 'countryCode', 'authToken']) parameters['paymentCard'] = options['paymentCard'] end end url = getCardCheckoutChargeUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) # return InitiateCardCheckoutResponse.new resultObj['status'], resultObj['description'], resultObj['transactionId'] end raise AfricasTalkingException, response end
cardCheckoutValidate(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 243 def cardCheckoutValidate options validateParamsPresence? options, %w(transactionId otp) parameters = { 'username' => @username, 'transactionId' => options['transactionId'], 'otp' => options['otp'] } url = getValidateCardCheckoutUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) return ValidateCardCheckoutResponse.new resultObj['status'], resultObj['description'], resultObj['checkoutToken'] # end raise AfricasTalkingException, response end
fetchProductTransactions(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 298 def fetchProductTransactions options validateParamsPresence? options, %w(productName filters) filters = options['filters'] validateParamsPresence? filters, %w(pageNumber count) parameters = { 'username' => @username, 'productName' => options['productName'], 'pageNumber' => filters['pageNumber'], 'count' => filters['count'] } parameters['startDate'] = filters['startDate'] if !(filters['startDate'].nil? || filters['startDate'].empty?) parameters['endDate'] = filters['endDate'] if !(filters['endDate'].nil? || filters['endDate'].empty?) parameters['category'] = filters['category'] if !(filters['category'].nil? || filters['category'].empty?) parameters['status'] = filters['status'] if !(filters['status'].nil? || filters['status'].empty?) parameters['source'] = filters['source'] if !(filters['source'].nil? || filters['source'].empty?) parameters['destination'] = filters['destination'] if !(filters['destination'].nil? || filters['destination'].empty?) parameters['providerChannel'] = filters['providerChannel'] if !(filters['providerChannel'].nil? || filters['providerChannel'].empty?) url = getFetchTransactionsUrl() response = sendJSONRequest(url, parameters, true) if (@response_code == HTTP_OK) resultObj = JSON.parse(response, :quirky_mode =>true) results = [] if (resultObj['responses'].length > 0) results = resultObj['responses'].collect{ |item| FetchTransactionsEntries.new item['sourceType'], item['source'], item['provider'], item['destinationType'], item['description'], item['providerChannel'], item['providerMetadata'], item['status'], item['productName'], item['category'], item['destination'], item['value'], item['transactionId'], item['creationTime'], item['requestMetadata'] } end return FetchTransactionsResponse.new resultObj['status'], resultObj['description'], results end raise AfricasTalkingException, response end
fetchWalletBalance()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 384 def fetchWalletBalance parameters = { 'username' => @username } url = getFetchWalletBalanceUrl() response = sendJSONRequest(url, parameters, true) if (@response_code == HTTP_OK) resultObj = JSON.parse(response, :quirky_mode =>true) return FetchWalletBalanceResponse.new resultObj['status'], resultObj['balance'] end raise AfricasTalkingException, response end
fetchWalletTransactions(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 331 def fetchWalletTransactions options validateParamsPresence? options, ['filters'] filters = options['filters'] validateParamsPresence? filters, %w(pageNumber count) parameters = { 'username' => @username, 'pageNumber' => filters['pageNumber'], 'count' => filters['count'] } parameters['startDate'] = filters['startDate'] if !(filters['startDate'].nil? || filters['startDate'].empty?) parameters['endDate'] = filters['endDate'] if !(filters['endDate'].nil? || filters['endDate'].empty?) parameters['categories'] = filters['categories'] if !(filters['categories'].nil? || filters['categories'].empty?) url = getFetchWalletUrl() response = sendJSONRequest(url, parameters, true) if (@response_code == HTTP_OK) resultObj = JSON.parse(response, :quirky_mode =>true) results = [] if (resultObj['responses'].length > 0) results = resultObj['responses'].collect{ |item| transactionData = TransactionData.new item['transactionData']['requestMetadata'], item['transactionData']['sourceType'], item['transactionData']['source'], item['transactionData']['provider'], item['transactionData']['destinationType'],item['transactionData']['description'], item['transactionData']['providerChannel'], item['transactionData']['providerRefId'], item['transactionData']['providerMetadata'],item['transactionData']['status'], item['transactionData']['productName'], item['transactionData']['category'], item['transactionData']['transactionDate'], item['transactionData']['destination'], item['transactionData']['value'], item['transactionData']['transactionId'], item['transactionData']['creationTime'] FetchWalletEntries.new item['description'], item['balance'], item['date'], item['category'], item['value'], item['transactionId'], transactionData } end return FetchWalletResponse.new resultObj['status'], resultObj['description'], results end raise AfricasTalkingException, response end
findTransaction(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 363 def findTransaction options validateParamsPresence? options, ['transactionId'] parameters = { 'username' => @username, 'transactionId' => options['transactionId'] } url = getFindTransactionUrl() response = sendJSONRequest(url, parameters, true) if (@response_code == HTTP_OK) resultObj = JSON.parse(response, :quirky_mode =>true) transactionData = nil if resultObj['status'] === 'Success' transactionData = TransactionData.new resultObj['data']['requestMetadata'], resultObj['data']['sourceType'],resultObj['data']['source'], resultObj['data']['provider'], resultObj['data']['destinationType'],resultObj['data']['description'], resultObj['data']['providerChannel'], resultObj['data']['providerRefId'], resultObj['data']['providerMetadata'],resultObj['data']['status'], resultObj['data']['productName'], resultObj['data']['category'], resultObj['data']['transactionDate'], resultObj['data']['destination'], resultObj['data']['value'], resultObj['data']['transactionId'], resultObj['data']['creationTime'] end return FindTransactionResponse.new resultObj['status'], transactionData end raise AfricasTalkingException, response end
mobileB2B(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 65 def mobileB2B options validateParamsPresence? options, %w(productName providerData currencyCode amount metadata) validateParamsPresence? options['providerData'], %w(provider destinationAccount destinationChannel transferType) parameters = { 'username' => @username, 'productName' => options['productName'], 'provider' => options['providerData']['provider'], 'destinationChannel' => options['providerData']['destinationChannel'], 'destinationAccount' => options['providerData']['destinationAccount'], 'transferType' => options['providerData']['transferType'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'], 'metadata' => options['metadata'] } url = getMobilePaymentB2BUrl() if options.key?('requester') parameters['requester'] = options['requester'] end response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) # return MobileB2BResponse.new resultObj['status'], resultObj['transactionId'], resultObj['transactionFee'], resultObj['providerChannel'], resultObj['errorMessage'] end raise AfricasTalkingException, response end
mobileB2C(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 93 def mobileB2C options validateParamsPresence? options, %w(recipients productName) parameters = { 'username' => @username, 'productName' => options['productName'], 'recipients' => options['recipients'] } url = getMobilePaymentB2CUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) if (resultObj['entries'].length > 0) results = resultObj['entries'].collect{ |subscriber| MobileB2CResponse.new subscriber['provider'], subscriber['phoneNumber'], subscriber['providerChannel'], subscriber['transactionFee'], subscriber['status'], subscriber['value'], subscriber['transactionId'], subscriber['errorMessage'] } # return results end raise AfricasTalkingException, resultObj['errorMessage'] end raise AfricasTalkingException, response end
mobileCheckout(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 41 def mobileCheckout options validateParamsPresence? options, %w(productName phoneNumber currencyCode amount) parameters = { 'username' => @username, 'productName' => options['productName'], 'phoneNumber' => options['phoneNumber'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'] } parameters['providerChannel'] = options['providerChannel'] if !(options['providerChannel'].nil? || options['providerChannel'].empty?) parameters['metadata'] = options['metadata'] if !(options['metadata'].nil? || options['metadata'].empty?) url = getMobilePaymentCheckoutUrl() response = sendJSONRequest(url, parameters) if @response_code == HTTP_CREATED resultObj = JSON.parse(response, :quirky_mode =>true) # if (resultObj['status'] == 'PendingConfirmation') return MobileCheckoutResponse.new resultObj['status'], resultObj['description'], resultObj['transactionId'], resultObj['providerChannel'] end raise AfricasTalkingException, resultObj['description'] end raise AfricasTalkingException, response end
mobileData(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 117 def mobileData options validateParamsPresence? options, %w(productName) recipients = options['recipients'].each{|item| validateParamsPresence? item, %w(phoneNumber quantity unit validity metadata) } parameters = { 'username' => @username, 'productName' => options['productName'], 'recipients' => recipients, } url = getMobileDataUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) if (resultObj['entries'].length > 0) results = resultObj['entries'].collect{ |data| MobileDataResponse.new data['phoneNumber'], data['provider'], data['status'], data['transactionId'], data['value'], data['errorMessage'] } # return results end raise AfricasTalkingException, resultObj['errorMessage'] end raise AfricasTalkingException, response end
topupStash(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 280 def topupStash options validateParamsPresence? options, %w(productName currencyCode amount metadata) parameters = { 'username' => @username, 'productName' => options['productName'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'], 'metadata' => options['metadata'] } url = getTopupStashUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) return TopupStashResponse.new resultObj['status'], resultObj['description'], resultObj['transactionId'] end raise AfricasTalkingException, response end
walletTransfer(options)
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 260 def walletTransfer options validateParamsPresence? options, %w(productName targetProductCode currencyCode amount metadata) parameters = { 'username' => @username, 'productName' => options['productName'], 'targetProductCode' => options['targetProductCode'], 'currencyCode' => options['currencyCode'], 'amount' => options['amount'], 'metadata' => options['metadata'] } url = getWalletTransferUrl() response = sendJSONRequest(url, parameters) if (@response_code == HTTP_CREATED) resultObj = JSON.parse(response, :quirky_mode =>true) # return WalletTransferResponse.new resultObj['status'], resultObj['description'], resultObj['transactionId'] end raise AfricasTalkingException, response end
Private Instance Methods
getApiHost()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 466 def getApiHost() if(@username == "sandbox") return "https://api.sandbox.africastalking.com" else return "https://api.africastalking.com" end end
getBankChargeCheckoutUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 422 def getBankChargeCheckoutUrl() return getPaymentHost() + "/bank/checkout/charge" end
getBankTransferRequestUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 430 def getBankTransferRequestUrl() return getPaymentHost() + "/bank/transfer" end
getCardCheckoutChargeUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 434 def getCardCheckoutChargeUrl() return getPaymentHost() + "/card/checkout/charge" end
getFetchTransactionsUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 458 def getFetchTransactionsUrl() return getPaymentHost() + "/query/transaction/fetch" end
getFetchWalletBalanceUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 454 def getFetchWalletBalanceUrl() return getPaymentHost() + "/query/wallet/balance" end
getFetchWalletUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 450 def getFetchWalletUrl() return getPaymentHost() + "/query/wallet/fetch" end
getFindTransactionUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 462 def getFindTransactionUrl() return getPaymentHost() + "/query/transaction/find" end
getMobileDataUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 414 def getMobileDataUrl() return getPaymentHost() + "/mobile/data/request" end
getMobilePaymentB2BUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 418 def getMobilePaymentB2BUrl() return getPaymentHost() + "/mobile/b2b/request" end
getMobilePaymentB2CUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 410 def getMobilePaymentB2CUrl() return getPaymentHost() + "/mobile/b2c/request" end
getMobilePaymentCheckoutUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 406 def getMobilePaymentCheckoutUrl() return getPaymentHost() + "/mobile/checkout/request" end
getPaymentHost()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 398 def getPaymentHost() if(@username == "sandbox") return "https://payments.sandbox.africastalking.com" else return "https://payments.africastalking.com" end end
getTopupStashUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 446 def getTopupStashUrl() return getPaymentHost() + "/topup/stash" end
getValidateBankCheckoutUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 426 def getValidateBankCheckoutUrl() return getPaymentHost() + "/bank/checkout/validate" end
getValidateCardCheckoutUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 438 def getValidateCardCheckoutUrl() return getPaymentHost() + "/card/checkout/validate" end
getWalletTransferUrl()
click to toggle source
# File lib/AfricasTalking/Payments.rb, line 442 def getWalletTransferUrl() return getPaymentHost() + "/transfer/wallet" end