samples/create_payouts.rb in paypal-payouts-sdk-1.0.0 vs samples/create_payouts.rb in paypal-payouts-sdk-1.0.1

- old
+ new

@@ -7,89 +7,138 @@ # Creates a payout batch with 5 payout items # Calls the create batch api (POST - /v1/payments/payouts) # A maximum of 15000 payout items are supported in a single batch request def create_payouts(debug = false) + body = build_create_payload() + request = PayoutsPostRequest.new() + request.request_body(body) + + begin + response = PayPalClient::client.execute(request) + if debug + puts "Status Code: #{response.status_code}" + puts "Status: #{response.result.status}" + puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}" + puts "Payout Batch Status: #{response.result.batch_header.batch_status}" + puts "Links: " + for link in response.result.links + # this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method + puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}" + end + puts PayPalClient::openstruct_to_hash(response.result).to_json + end + return response + rescue PayPalHttp::HttpError => ioe + # Exception occured while processing the payouts. + puts " Status Code: #{ioe.status_code}" + puts " Debug Id: #{ioe.result.debug_id}" + puts " Response: #{ioe.result}" + end + end + + # Creates a payout batch with 5 payout items having invalid amount + # Calls the create batch api (POST - /v1/payments/payouts) + # A maximum of 15000 payout items are supported in a single batch request + def create_payouts_failure(debug = false) + body = build_create_payload(true) + request = PayoutsPostRequest.new() + request.request_body(body) + + begin + response = PayPalClient::client.execute(request) + if debug + puts "Status Code: #{response.status_code}" + puts "Status: #{response.result.status}" + puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}" + puts "Payout Batch Status: #{response.result.batch_header.batch_status}" + puts "Links: " + for link in response.result.links + # this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method + puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}" + end + puts PayPalClient::openstruct_to_hash(response.result).to_json + end + return response + rescue PayPalHttp::HttpError => ioe + # Exception occured while processing the payouts. + puts "Status Code: #{ioe.status_code}" + puts "Response: #{ioe.result}" + puts "Name: #{ioe.result.name}" + puts "Message: #{ioe.result.message}" + puts "Information link: #{ioe.result.information_link}" + puts "Debug Id: #{ioe.result.debug_id}" + puts "Details: " + ioe.result.details.each { |detail| + puts "Error Location: #{detail["location"]}" + puts "Error Field: #{detail["field"]}" + puts "Error issue: #{detail["issue"]}" + } + end + end + + private + + def build_create_payload(include_validation_failure = false) sender_batch_id = 'Test_sdk_' + SecureRandom.base64(6) + amount = include_validation_failure ? '1.0.0' : '1.00' body = { sender_batch_header: { recipient_type: 'EMAIL', email_message: 'SDK payouts test txn', note: 'Enjoy your Payout!!', sender_batch_id: sender_batch_id, email_subject: 'This is a test transaction from SDK' }, items: [{ - note: 'Your 5$ Payout!', + note: 'Your 1$ Payout!', amount: { currency: 'USD', - value: '1.00' + value: amount }, receiver: 'payout-sdk-1@paypal.com', sender_item_id: 'Test_txn_1' }, { - note: 'Your 5$ Payout!', + note: 'Your 1$ Payout!', amount: { currency: 'USD', - value: '1.00' + value: amount }, receiver: 'payout-sdk-2@paypal.com', sender_item_id: 'Test_txn_2' }, { - note: 'Your 5$ Payout!', + note: 'Your 1$ Payout!', amount: { currency: 'USD', - value: '1.00' + value: amount }, receiver: 'payout-sdk-3@paypal.com', sender_item_id: 'Test_txn_3' }, { - note: 'Your 5$ Payout!', + note: 'Your 1$ Payout!', amount: { currency: 'USD', - value: '1.00' + value: amount }, receiver: 'payout-sdk-4@paypal.com', sender_item_id: 'Test_txn_4' }, { - note: 'Your 5$ Payout!', + note: 'Your 1$ Payout!', amount: { currency: 'USD', - value: '1.00' + value: amount }, receiver: 'payout-sdk-5@paypal.com', sender_item_id: 'Test_txn_5' }] } - request = PayoutsPostRequest.new() - request.request_body(body) - - begin - response = PayPalClient::client.execute(request) - if debug - puts "Status Code: #{response.status_code}" - puts "Status: #{response.result.status}" - puts "Payout Batch ID: #{response.result.batch_header.payout_batch_id}" - puts "Payout Batch Status: #{response.result.batch_header.batch_status}" - puts "Links: " - for link in response.result.links - # this could also be called as link.rel or link.href but as method is a reserved keyword for ruby avoid calling link.method - puts "\t#{link["rel"]}: #{link["href"]}\tCall Type: #{link["method"]}" - end - puts PayPalClient::openstruct_to_hash(response.result).to_json - end - return response - rescue PayPalHttp::HttpError => ioe - # Exception occured while processing the payouts. - puts " Status Code: #{ioe.status_code}" - puts " Debug Id: #{ioe.result.debug_id}" - puts " Response: #{ioe.result}" - end + return body end - end end # This is the driver function which invokes the create_payouts function to create an payouts batch. if __FILE__ == $0 Samples::CreatePayouts::new().create_payouts(true) + #Simulate failure in create payload to showcase validation failure and how to parse the reason for failure + Samples::CreatePayouts::new().create_payouts_failure(true) end \ No newline at end of file