From 60ee332ebfc8aebf34fe67d50b9f3a85aa51df8b Mon Sep 17 00:00:00 2001 From: Andy Palmer Date: Fri, 23 Mar 2018 13:03:21 +1100 Subject: [PATCH] SecurePayAU: Send order ID for payments with stored cards As per XML spec (https://auspost.com.au/payments/docs/securepay/resources/API_Card_Storage_and_Scheduled_Payments.pdf ) test/unit/gateways/secure_pay_au_test.rb 24 tests, 106 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed test/remote/gateways/remote_secure_pay_au_test.rb 18 tests, 57 assertions, 0 failures, 0 errors, 0 pendings, 2 omissions, 0 notifications 100% passed Co-authored-by: David Cook --- lib/active_merchant/billing/gateways/secure_pay_au.rb | 1 + test/remote/gateways/remote_secure_pay_au_test.rb | 3 ++- test/unit/gateways/secure_pay_au_test.rb | 10 +++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/active_merchant/billing/gateways/secure_pay_au.rb b/lib/active_merchant/billing/gateways/secure_pay_au.rb index de81c2ffed3..53e1d2603ee 100644 --- a/lib/active_merchant/billing/gateways/secure_pay_au.rb +++ b/lib/active_merchant/billing/gateways/secure_pay_au.rb @@ -203,6 +203,7 @@ def build_periodic_item(action, money, credit_card, options) end xml.tag! 'amount', amount(money) xml.tag! 'periodicType', PERIODIC_TYPES[action] if PERIODIC_TYPES[action] + xml.tag! 'transactionReference', options[:order_id] if options[:order_id] xml.target! end diff --git a/test/remote/gateways/remote_secure_pay_au_test.rb b/test/remote/gateways/remote_secure_pay_au_test.rb index 202b5f44e0c..41fefc26397 100644 --- a/test/remote/gateways/remote_secure_pay_au_test.rb +++ b/test/remote/gateways/remote_secure_pay_au_test.rb @@ -21,7 +21,7 @@ def setup @credit_card = credit_card('4242424242424242', { month: 9, year: 15 }) @options = { - order_id: '2', + order_id: 'order123', billing_address: address, description: 'Store Purchase' } @@ -166,6 +166,7 @@ def test_successful_triggered_payment assert response = @gateway.purchase(12300, 'test1234', @options) assert_success response assert_equal response.params['amount'], '12300' + assert_equal response.params['ponum'], 'order123' assert_equal 'Approved', response.message end diff --git a/test/unit/gateways/secure_pay_au_test.rb b/test/unit/gateways/secure_pay_au_test.rb index 4bbd0213712..88f9a83f32c 100644 --- a/test/unit/gateways/secure_pay_au_test.rb +++ b/test/unit/gateways/secure_pay_au_test.rb @@ -13,7 +13,7 @@ def setup @amount = 100 @options = { - order_id: '1', + order_id: 'order123', billing_address: address, description: 'Store Purchase' } @@ -79,6 +79,14 @@ def test_purchase_with_stored_id_calls_commit_periodic @gateway.purchase(@amount, '123', @options) end + def test_periodic_payment_submits_order_id + stub_comms(@gateway, :ssl_request) do + @gateway.purchase(@amount, '123', @options) + end.check_request do |method, endpoint, data, headers| + assert_match(/order123<\/transactionReference>/, data) + end.respond_with(successful_purchase_response) + end + def test_purchase_with_creditcard_calls_commit_with_purchase @gateway.expects(:commit).with(:purchase, anything)