Skip to content

Commit

Permalink
SecurePayAU: Send order ID for payments with stored cards
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
andypalmer and dacook committed Aug 19, 2024
1 parent cad5e02 commit 2ef5388
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* Braintree: Support override_application_id [aenand] #5194
* Decidir: Pass CVV for NT [almalee24] #5205
* NMI: Add customer vault fields [yunnydang] #5215
* SecurePayAU: Send order ID for payments with stored card [dacook] #3979

== Version 1.137.0 (August 2, 2024)
* Unlock dependency on `rexml` to allow fixing a CVE (#5181).
Expand Down
1 change: 1 addition & 0 deletions lib/active_merchant/billing/gateways/secure_pay_au.rb
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,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
Expand Down
3 changes: 2 additions & 1 deletion test/remote/gateways/remote_secure_pay_au_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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'
}
Expand Down Expand Up @@ -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
Expand Down
10 changes: 9 additions & 1 deletion test/unit/gateways/secure_pay_au_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def setup
@amount = 100

@options = {
order_id: '1',
order_id: 'order123',
billing_address: address,
description: 'Store Purchase'
}
Expand Down Expand Up @@ -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(/<transactionReference>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)

Expand Down

0 comments on commit 2ef5388

Please sign in to comment.