killbill-paypal-express 5.0.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d765db3a2813b2f3a9b7406027a484d10ea9e52f
4
- data.tar.gz: 87064c5691db0b0e556d1e1213d434a0b57168d0
3
+ metadata.gz: 970b025716dc5389cd01ac25702ce931e3686296
4
+ data.tar.gz: faf8930e662f33a926a06c8d81c64740aa7c6d3c
5
5
  SHA512:
6
- metadata.gz: 4abb317a565c2c7cf4b95b4df2f44f5b53aa9a525fb23c97e67817c621d88a58e97155546b955c571d395dc69c4d824a05c7b379cb82d778209a34ef084fdc28
7
- data.tar.gz: 290092a38ab0a72fe4882e524273ea86da9f02838d99714678a74479f64d71464ed142be83210035d84dbc8e6957d819f6c174ff3b232b7e8885bdb74638fe43
6
+ metadata.gz: 3d3fbf7d32ed777c35a0da4d056a0bb2bbb0b328f3551d1381f1d8feb60cb96726051730cadec9321d345ce93f0fc57b52a5ea3ab8dc1eb8867c453454445fa1
7
+ data.tar.gz: 63c0b6a1eeeb30c105e2200b67394213a5d9f52bffe3e467bfcb2f2efbf3853132853ba01fe9b6ed398a66e9e7f27962bac5147d9e4ef8b1902405204684c1f1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- killbill-paypal-express (5.0.0)
4
+ killbill-paypal-express (5.0.1)
5
5
  actionpack (~> 4.1.0)
6
6
  actionview (~> 4.1.0)
7
7
  activemerchant (~> 1.53.0)
data/Jarfile.lock CHANGED
@@ -13,6 +13,8 @@
13
13
  - org.kill-bill.commons:killbill-clock:jar:0.20
14
14
  - org.kill-bill.billing:killbill-util:jar:0.18.0
15
15
  - com.fasterxml.jackson.dataformat:jackson-dataformat-csv:jar:2.4.5
16
+ - org.bouncycastle:bcprov-jdk15on:jar:1.55
17
+ - org.bouncycastle:bcpkix-jdk15on:jar:1.55
16
18
  - org.kill-bill.billing.plugin:killbill-plugin-api-entitlement:jar:0.23
17
19
  - org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:jar:1.16
18
20
  - com.h2database:h2:jar:1.4.186
@@ -33,11 +35,9 @@
33
35
  - io.dropwizard.metrics:metrics-ehcache:jar:3.1.1
34
36
  - org.jdbi:jdbi:jar:2.62
35
37
  - com.fasterxml.jackson.core:jackson-core:jar:2.4.5
36
- - org.bouncycastle:bcpkix-jdk15on:jar:1.54
37
38
  - org.apache.felix:org.apache.felix.framework:jar:4.4.1
38
39
  - org.joda:joda-money:jar:0.9
39
40
  - org.kill-bill.billing.plugin:killbill-plugin-api-payment:jar:0.23
40
- - org.bouncycastle:bcprov-jdk15on:jar:1.54
41
41
  - org.apache.shiro:shiro-core:jar:1.2.3
42
42
  - org.kill-bill.billing:killbill-internal-api:jar:0.18.0
43
43
  - org.kill-bill.billing:killbill-util:jar:tests:0.18.0
data/NEWS CHANGED
@@ -1,3 +1,8 @@
1
+ 5.0.1
2
+ Always issue GetExpressCheckoutDetails during authorize or purchase to store payer info
3
+ Store PayPal error codes
4
+ Added private APIs for look-ups
5
+
1
6
  5.0.0
2
7
  Initial release for Kill Bill 0.18.x
3
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.0.0
1
+ 5.0.1
data/db/ddl.sql CHANGED
@@ -114,5 +114,7 @@ CREATE TABLE `paypal_express_responses` (
114
114
  `kb_account_id` varchar(255) DEFAULT NULL,
115
115
  `kb_tenant_id` varchar(255) DEFAULT NULL,
116
116
  PRIMARY KEY (`id`),
117
- KEY `idx_paypal_express_responses_on_kb_payment_id_kb_tenant_id` (`kb_payment_id`, `kb_tenant_id`)
117
+ KEY `idx_paypal_express_responses_on_kb_payment_id_kb_tenant_id` (`kb_payment_id`, `kb_tenant_id`),
118
+ KEY `idx_paypal_express_responses_on_kb_account_id` (`kb_account_id`),
119
+ KEY `idx_paypal_express_responses_on_payer_email` (`payer_email`)
118
120
  ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
@@ -0,0 +1,7 @@
1
+ class AddIndexes < ActiveRecord::Migration
2
+
3
+ def change
4
+ add_index(:paypal_express_responses, :kb_account_id, :name => 'idx_paypal_express_responses_on_kb_account_id')
5
+ add_index(:paypal_express_responses, :payer_email, :name => 'idx_paypal_express_responses_on_payer_email')
6
+ end
7
+ end
data/db/schema.rb CHANGED
@@ -117,4 +117,6 @@ ActiveRecord::Schema.define(:version => 20151008153635) do
117
117
  end
118
118
 
119
119
  add_index(:paypal_express_responses, [:kb_payment_id, :kb_tenant_id], :name => 'idx_paypal_express_responses_on_kb_payment_id_kb_tenant_id')
120
+ add_index(:paypal_express_responses, :kb_account_id, :name => 'idx_paypal_express_responses_on_kb_account_id')
121
+ add_index(:paypal_express_responses, :payer_email, :name => 'idx_paypal_express_responses_on_payer_email')
120
122
  end
@@ -131,10 +131,10 @@ module Killbill #:nodoc:
131
131
  # Go to Paypal to get the Payer id (GetExpressCheckoutDetails call)
132
132
  payment_processor_account_id = find_value_from_properties(properties, :payment_processor_account_id)
133
133
  payment_processor_account_id ||= find_payment_processor_id_from_initial_call(kb_account_id, context.tenant_id, token)
134
- payer_id = find_payer_id(token, kb_account_id, context.tenant_id, payment_processor_account_id)
134
+ payer_info = get_payer_info(token, kb_account_id, context.tenant_id, payment_processor_account_id)
135
135
  options = {
136
136
  :paypal_express_token => token,
137
- :paypal_express_payer_id => payer_id,
137
+ :paypal_express_payer_id => payer_info.payer_id,
138
138
  :payment_processor_account_id => payment_processor_account_id
139
139
  }
140
140
  end
@@ -281,19 +281,25 @@ module Killbill #:nodoc:
281
281
  @response_model.last_token(kb_account_id, kb_tenant_id)
282
282
  end
283
283
 
284
- def find_payer_id(token, kb_account_id, kb_tenant_id, payment_processor_account_id)
285
- raise 'Could not find the payer_id: the token is missing' if token.blank?
284
+ def get_payer_info(token,
285
+ kb_account_id,
286
+ kb_tenant_id,
287
+ payment_processor_account_id,
288
+ kb_payment_id = nil,
289
+ kb_payment_transaction_id = nil,
290
+ transaction_type = nil)
291
+ raise 'Could not retrieve the payer info: the token is missing' if token.blank?
286
292
 
287
293
  # Go to Paypal to get the Payer id (GetExpressCheckoutDetails call)
288
294
  payment_processor_account_id = payment_processor_account_id || :default
289
295
  gateway = lookup_gateway(payment_processor_account_id, kb_tenant_id)
290
296
  gw_response = gateway.details_for(token)
291
- response, transaction = save_response_and_transaction(gw_response, :details_for, kb_account_id, kb_tenant_id, payment_processor_account_id)
297
+ response, transaction = save_response_and_transaction(gw_response, :details_for, kb_account_id, kb_tenant_id, payment_processor_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type)
292
298
 
293
299
  raise response.message unless response.success?
294
- raise "Could not find the payer_id for token #{token}" if response.payer_id.blank?
300
+ raise "Could not retrieve the payer info for token #{token}" if response.payer_id.blank?
295
301
 
296
- response.payer_id
302
+ response
297
303
  end
298
304
 
299
305
  def add_required_options(kb_payment_transaction_id, kb_payment_method_id, context, options)
@@ -396,13 +402,14 @@ module Killbill #:nodoc:
396
402
  payment_processor_account_id ||= find_payment_processor_id_from_initial_call(kb_account_id, context.tenant_id, options[:token])
397
403
  options[:payment_processor_account_id] = payment_processor_account_id
398
404
 
399
- # Populate the Payer id if missing
400
- options[:payer_id] = ::Killbill::Plugin::ActiveMerchant::Utils.normalized(properties_hash, :payer_id)
401
405
  begin
402
- options[:payer_id] ||= find_payer_id(options[:token],
403
- kb_account_id,
404
- context.tenant_id,
405
- payment_processor_account_id)
406
+ payer_info = get_payer_info(options[:token],
407
+ kb_account_id,
408
+ context.tenant_id,
409
+ payment_processor_account_id,
410
+ kb_payment_id,
411
+ kb_payment_transaction_id,
412
+ transaction_type)
406
413
  rescue => e
407
414
  # Maybe invalid token?
408
415
  response = @response_model.create(:api_call => api_call_type,
@@ -419,6 +426,11 @@ module Killbill #:nodoc:
419
426
  :message => { :payment_plugin_status => :CANCELED, :exception_class => e.class.to_s, :exception_message => e.message }.to_json)
420
427
  return response.to_transaction_info_plugin(nil)
421
428
  end
429
+ options[:payer_id] = ::Killbill::Plugin::ActiveMerchant::Utils.normalized(properties_hash, :payer_id)
430
+ if options[:payer_id].nil?
431
+ options[:payer_id] = payer_info.payer_id
432
+ end
433
+ options[:payer_email] = payer_info.payer_email
422
434
 
423
435
  properties = merge_properties(properties, options)
424
436
  dispatch_to_gateways(api_call_type, kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context, gateway_call_proc, nil, {:payer_id => options[:payer_id]})
@@ -103,3 +103,34 @@ get '/plugins/killbill-paypal-express/1.0/responses/:id', :provides => 'json' do
103
103
  status 404
104
104
  end
105
105
  end
106
+
107
+ # curl -v http://127.0.0.1:9292/plugins/killbill-paypal-express/1.0/accounts/somebody@example.com
108
+ get '/plugins/killbill-paypal-express/1.0/accounts/:email', :provides => 'json' do
109
+ if ids = ::Killbill::PaypalExpress::PaypalExpressResponse.uniq.where(:payer_email => params[:email]).pluck(:kb_account_id)
110
+ ids.to_json
111
+ else
112
+ status 404
113
+ end
114
+ end
115
+
116
+ # curl -v http://127.0.0.1:9292/plugins/killbill-paypal-express/1.0/account_external_keys/somebody@example.com?kb_tenant_id=some_uuid
117
+ get '/plugins/killbill-paypal-express/1.0/account_external_keys/:email', :provides => 'json' do
118
+ if ids = ::Killbill::PaypalExpress::PaypalExpressResponse.uniq.where(:payer_email => params[:email]).pluck(:kb_account_id)
119
+ kb_tenant_id = request.GET['kb_tenant_id']
120
+ kb_tenant = request.env['killbill_tenant']
121
+ kb_tenant_id ||= kb_tenant.id.to_s unless kb_tenant.nil?
122
+
123
+ plugin(session).get_external_keys_for_accounts(ids, kb_tenant_id).to_json
124
+ else
125
+ status 404
126
+ end
127
+ end
128
+
129
+ # curl -v http://127.0.0.1:9292/plugins/killbill-paypal-express/1.0/payer_emails/41d95965-8213-4434-ac04-0f7dbe51988c
130
+ get '/plugins/killbill-paypal-express/1.0/payer_emails/:kb_account_id', :provides => 'json' do
131
+ if emails = ::Killbill::PaypalExpress::PaypalExpressResponse.uniq.where(:kb_account_id => params[:kb_account_id]).where("payer_email IS NOT NULL").pluck(:payer_email)
132
+ emails.to_json
133
+ else
134
+ status 404
135
+ end
136
+ end
@@ -6,6 +6,10 @@ module Killbill #:nodoc:
6
6
 
7
7
  has_one :paypal_express_transaction
8
8
 
9
+ def self.ignore_none(value)
10
+ value == 'none' ? nil : value
11
+ end
12
+
9
13
  def self.from_response(api_call, kb_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type, payment_processor_account_id, kb_tenant_id, response, extra_params = {}, model = ::Killbill::PaypalExpress::PaypalExpressResponse)
10
14
  super(api_call,
11
15
  kb_account_id,
@@ -47,7 +51,7 @@ module Killbill #:nodoc:
47
51
  :payment_info_exchangerate => (extract(response, 'PaymentInfo', 'ExchangeRate') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ExchangeRate')),
48
52
  :payment_info_paymentstatus => (extract(response, 'PaymentInfo', 'PaymentStatus') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'PaymentStatus')),
49
53
  :payment_info_pendingreason => (extract(response, 'PaymentInfo', 'PendingReason') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'PendingReason')),
50
- :payment_info_reasoncode => (extract(response, 'PaymentInfo', 'ReasonCode') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ReasonCode')),
54
+ :payment_info_reasoncode => (ignore_none(extract(response, 'PaymentInfo', 'ReasonCode')) || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ReasonCode') || extract(response, 'error_codes')),
51
55
  :payment_info_protectioneligibility => (extract(response, 'PaymentInfo', 'ProtectionEligibility') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ProtectionEligibility')),
52
56
  :payment_info_protectioneligibilitytype => (extract(response, 'PaymentInfo', 'ProtectionEligibilityType') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ProtectionEligibilityType')),
53
57
  :payment_info_shipamount => (extract(response, 'PaymentInfo', 'ShipAmount') || extract(response, 'PaymentTransactionDetails', 'PaymentInfo', 'ShipAmount')),
@@ -85,6 +89,10 @@ module Killbill #:nodoc:
85
89
  :message => { :payment_plugin_status => :CANCELED, :exception_message => 'Token expired. Payment Canceled by Janitor.' }.to_json)
86
90
  end
87
91
 
92
+ def gateway_error_code
93
+ payment_info_reasoncode
94
+ end
95
+
88
96
  def to_transaction_info_plugin(transaction=nil)
89
97
  t_info_plugin = super(transaction)
90
98
 
@@ -36,6 +36,11 @@ module Killbill #:nodoc:
36
36
  gateway = gateway(payment_processor_account_id, kb_tenant_id)
37
37
  gateway.redirect_url_for(response.token)
38
38
  end
39
+
40
+ def get_external_keys_for_accounts(kb_account_ids, kb_tenant_id)
41
+ context = kb_apis.create_context(kb_tenant_id)
42
+ kb_account_ids.map {|id| kb_apis.account_user_api.get_account_by_id(id, context).external_key }
43
+ end
39
44
  end
40
45
  end
41
46
  end
data/pom.xml CHANGED
@@ -26,7 +26,7 @@
26
26
  <groupId>org.kill-bill.billing.plugin.ruby</groupId>
27
27
  <artifactId>paypal-express-plugin</artifactId>
28
28
  <packaging>pom</packaging>
29
- <version>5.0.0</version>
29
+ <version>5.0.1</version>
30
30
  <name>paypal-express-plugin</name>
31
31
  <url>http://github.com/killbill/killbill-paypal-express-plugin</url>
32
32
  <description>Plugin for accessing Paypal Express Checkout as a payment gateway</description>
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ed="urn:ebay:apis:EnhancedDataTypes" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
+ <SOAP-ENV:Header>
4
+ <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
5
+ <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
6
+ <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
7
+ <Username xsi:type="xs:string"/>
8
+ <Password xsi:type="xs:string"/>
9
+ <Signature xsi:type="xs:string"/>
10
+ <Subject xsi:type="xs:string"/>
11
+ </Credentials>
12
+ </RequesterCredentials>
13
+ </SOAP-ENV:Header>
14
+ <SOAP-ENV:Body id="_0">
15
+ <DoExpressCheckoutPaymentResponse xmlns="urn:ebay:api:PayPalAPI">
16
+ <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2016-11-23T01:50:51Z</Timestamp>
17
+ <Ack xmlns="urn:ebay:apis:eBLBaseComponents">SuccessWithWarning</Ack>
18
+ <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">cfce8071e839</CorrelationID>
19
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
20
+ <ShortMessage xsi:type="xs:string">Duplicate Request</ShortMessage>
21
+ <LongMessage xsi:type="xs:string">A successful transaction has already been completed for this token.</LongMessage>
22
+ <ErrorCode xsi:type="xs:token">11607</ErrorCode>
23
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Warning</SeverityCode>
24
+ </Errors>
25
+ <Version xmlns="urn:ebay:apis:eBLBaseComponents">124</Version>
26
+ <Build xmlns="urn:ebay:apis:eBLBaseComponents">000000</Build>
27
+ <DoExpressCheckoutPaymentResponseDetails xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:DoExpressCheckoutPaymentResponseDetailsType">
28
+ <Token xsi:type="ebl:ExpressCheckoutTokenType">EC-MY_TOKEN</Token>
29
+ <PaymentInfo xsi:type="ebl:PaymentInfoType">
30
+ <TransactionID>3K289148GS508731G</TransactionID>
31
+ <ParentTransactionID xsi:type="ebl:TransactionId"/>
32
+ <ReceiptID/>
33
+ <TransactionType xsi:type="ebl:PaymentTransactionCodeType">express-checkout</TransactionType>
34
+ <PaymentType xsi:type="ebl:PaymentCodeType">instant</PaymentType>
35
+ <PaymentDate xsi:type="xs:dateTime">2016-11-23T01:50:43Z</PaymentDate>
36
+ <GrossAmount currencyID="USD" xsi:type="cc:BasicAmountType">100.00</GrossAmount>
37
+ <FeeAmount currencyID="USD" xsi:type="cc:BasicAmountType">3.20</FeeAmount>
38
+ <TaxAmount currencyID="USD" xsi:type="cc:BasicAmountType">0.00</TaxAmount>
39
+ <ExchangeRate xsi:type="xs:string"/>
40
+ <PaymentStatus xsi:type="ebl:PaymentStatusCodeType">Refunded</PaymentStatus>
41
+ <PendingReason xsi:type="ebl:PendingStatusCodeType">none</PendingReason>
42
+ <ReasonCode xsi:type="ebl:ReversalReasonCodeType">none</ReasonCode>
43
+ <ProtectionEligibility xsi:type="xs:string">Eligible</ProtectionEligibility>
44
+ <ProtectionEligibilityType xsi:type="xs:string">ItemNotReceivedEligible,UnauthorizedPaymentEligible</ProtectionEligibilityType>
45
+ <SellerDetails xsi:type="ebl:SellerDetailsType">
46
+ <SecureMerchantAccountID xsi:type="ebl:UserIDType">MY_MERCHANT_ID</SecureMerchantAccountID>
47
+ </SellerDetails>
48
+ </PaymentInfo>
49
+ <SuccessPageRedirectRequested xsi:type="xs:string">false</SuccessPageRedirectRequested>
50
+ <CoupledPaymentInfo xsi:type="ebl:CoupledPaymentInfoType"/>
51
+ </DoExpressCheckoutPaymentResponseDetails>
52
+ </DoExpressCheckoutPaymentResponse>
53
+ </SOAP-ENV:Body>
54
+ </SOAP-ENV:Envelope>
@@ -0,0 +1,102 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ed="urn:ebay:apis:EnhancedDataTypes" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
+ <SOAP-ENV:Header>
4
+ <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
5
+ <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
6
+ <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
7
+ <Username xsi:type="xs:string"/>
8
+ <Password xsi:type="xs:string"/>
9
+ <Signature xsi:type="xs:string"/>
10
+ <Subject xsi:type="xs:string"/>
11
+ </Credentials>
12
+ </RequesterCredentials>
13
+ </SOAP-ENV:Header>
14
+ <SOAP-ENV:Body id="_0">
15
+ <GetExpressCheckoutDetailsResponse xmlns="urn:ebay:api:PayPalAPI">
16
+ <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2016-11-23T01:50:39Z</Timestamp>
17
+ <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Success</Ack>
18
+ <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">bb9e0ee3a9d12</CorrelationID>
19
+ <Version xmlns="urn:ebay:apis:eBLBaseComponents">124</Version>
20
+ <Build xmlns="urn:ebay:apis:eBLBaseComponents">000000</Build>
21
+ <GetExpressCheckoutDetailsResponseDetails xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:GetExpressCheckoutDetailsResponseDetailsType">
22
+ <Token xsi:type="ebl:ExpressCheckoutTokenType">EC-MY_TOKEN</Token>
23
+ <PayerInfo xsi:type="ebl:PayerInfoType">
24
+ <Payer xsi:type="ebl:EmailAddressType">test@example.com</Payer>
25
+ <PayerID xsi:type="ebl:UserIDType">MY_PAYER_ID</PayerID>
26
+ <PayerStatus xsi:type="ebl:PayPalUserStatusCodeType">verified</PayerStatus>
27
+ <PayerName xsi:type="ebl:PersonNameType">
28
+ <Salutation xmlns="urn:ebay:apis:eBLBaseComponents"/>
29
+ <FirstName xmlns="urn:ebay:apis:eBLBaseComponents">test</FirstName>
30
+ <MiddleName xmlns="urn:ebay:apis:eBLBaseComponents"/>
31
+ <LastName xmlns="urn:ebay:apis:eBLBaseComponents">buyer</LastName>
32
+ <Suffix xmlns="urn:ebay:apis:eBLBaseComponents"/>
33
+ </PayerName>
34
+ <PayerCountry xsi:type="ebl:CountryCodeType">US</PayerCountry>
35
+ <PayerBusiness xsi:type="xs:string"/>
36
+ <Address xsi:type="ebl:AddressType">
37
+ <Name xsi:type="xs:string">test buyer</Name>
38
+ <Street1 xsi:type="xs:string">1 Main St</Street1>
39
+ <Street2 xsi:type="xs:string"/>
40
+ <CityName xsi:type="xs:string">San Jose</CityName>
41
+ <StateOrProvince xsi:type="xs:string">CA</StateOrProvince>
42
+ <Country xsi:type="ebl:CountryCodeType">US</Country>
43
+ <CountryName>United States</CountryName>
44
+ <PostalCode xsi:type="xs:string">95131</PostalCode>
45
+ <AddressOwner xsi:type="ebl:AddressOwnerCodeType">PayPal</AddressOwner>
46
+ <AddressStatus xsi:type="ebl:AddressStatusCodeType">Confirmed</AddressStatus>
47
+ </Address>
48
+ </PayerInfo>
49
+ <InvoiceID xsi:type="xs:string">1234</InvoiceID>
50
+ <BillingAgreementAcceptedStatus>false</BillingAgreementAcceptedStatus>
51
+ <PaymentDetails xsi:type="ebl:PaymentDetailsType">
52
+ <OrderTotal currencyID="USD" xsi:type="cc:BasicAmountType">100.00</OrderTotal>
53
+ <ItemTotal currencyID="USD" xsi:type="cc:BasicAmountType">100.00</ItemTotal>
54
+ <ShippingTotal currencyID="USD" xsi:type="cc:BasicAmountType">0.00</ShippingTotal>
55
+ <HandlingTotal currencyID="USD" xsi:type="cc:BasicAmountType">0.00</HandlingTotal>
56
+ <TaxTotal currencyID="USD" xsi:type="cc:BasicAmountType">0.00</TaxTotal>
57
+ <InvoiceID xsi:type="xs:string">1234</InvoiceID>
58
+ <ShipToAddress xsi:type="ebl:AddressType">
59
+ <Name xsi:type="xs:string">test buyer</Name>
60
+ <Street1 xsi:type="xs:string">1 Main St</Street1>
61
+ <Street2 xsi:type="xs:string"/>
62
+ <CityName xsi:type="xs:string">San Jose</CityName>
63
+ <StateOrProvince xsi:type="xs:string">CA</StateOrProvince>
64
+ <Country xsi:type="ebl:CountryCodeType">US</Country>
65
+ <CountryName>United States</CountryName>
66
+ <Phone xsi:type="xs:string"/>
67
+ <PostalCode xsi:type="xs:string">95131</PostalCode>
68
+ <AddressID xsi:type="xs:string"/>
69
+ <AddressOwner xsi:type="ebl:AddressOwnerCodeType">PayPal</AddressOwner>
70
+ <ExternalAddressID xsi:type="xs:string"/>
71
+ <AddressStatus xsi:type="ebl:AddressStatusCodeType">Confirmed</AddressStatus>
72
+ <AddressNormalizationStatus xsi:type="ebl:AddressNormalizationStatusCodeType">None</AddressNormalizationStatus>
73
+ </ShipToAddress>
74
+ <InsuranceTotal currencyID="USD" xsi:type="cc:BasicAmountType">0.00</InsuranceTotal>
75
+ <ShippingDiscount currencyID="USD" xsi:type="cc:BasicAmountType">0.00</ShippingDiscount>
76
+ <InsuranceOptionOffered xsi:type="xs:string">false</InsuranceOptionOffered>
77
+ <SellerDetails xsi:type="ebl:SellerDetailsType">
78
+ <PayPalAccountID xsi:type="xs:string">test-facilitator@example.com</PayPalAccountID>
79
+ </SellerDetails>
80
+ <PaymentRequestID xsi:type="xs:string"/>
81
+ <OrderURL xsi:type="xs:string"/>
82
+ <SoftDescriptor xsi:type="xs:string"/>
83
+ </PaymentDetails>
84
+ <CheckoutStatus xsi:type="xs:string">PaymentActionNotInitiated</CheckoutStatus>
85
+ <PaymentRequestInfo xsi:type="ebl:PaymentRequestInfoType"/>
86
+ <PaymentInfo xsi:type="ebl:PaymentInfoType">
87
+ <TransactionID/>
88
+ <ParentTransactionID xsi:type="ebl:TransactionId"/>
89
+ <ReceiptID/>
90
+ <TransactionType xsi:type="ebl:PaymentTransactionCodeType">none</TransactionType>
91
+ <PaymentType xsi:type="ebl:PaymentCodeType">none</PaymentType>
92
+ <ExchangeRate xsi:type="xs:string"/>
93
+ <PaymentStatus xsi:type="ebl:PaymentStatusCodeType">None</PaymentStatus>
94
+ <PendingReason xsi:type="ebl:PendingStatusCodeType">none</PendingReason>
95
+ <ReasonCode xsi:type="ebl:ReversalReasonCodeType">none</ReasonCode>
96
+ <SellerDetails xsi:type="ebl:SellerDetailsType"/>
97
+ </PaymentInfo>
98
+ <CartChangeTolerance xsi:type="xs:string"/>
99
+ </GetExpressCheckoutDetailsResponseDetails>
100
+ </GetExpressCheckoutDetailsResponse>
101
+ </SOAP-ENV:Body>
102
+ </SOAP-ENV:Envelope>
@@ -23,14 +23,25 @@ shared_examples 'baid_spec_common' do
23
23
 
24
24
  # Verify GET API
25
25
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
26
- payment_infos.size.should == 1
26
+ payment_infos.size.should == 2
27
+ # details_for
27
28
  payment_infos[0].kb_payment_id.should == @kb_payment.id
28
29
  payment_infos[0].transaction_type.should == :PURCHASE
29
- payment_infos[0].amount.should == @amount
30
- payment_infos[0].currency.should == @currency
30
+ payment_infos[0].amount.should be_nil
31
+ payment_infos[0].currency.should be_nil
31
32
  payment_infos[0].status.should == :PROCESSED
32
33
  payment_infos[0].gateway_error.should == 'Success'
33
34
  payment_infos[0].gateway_error_code.should be_nil
35
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
36
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
37
+ # purchase
38
+ payment_infos[1].kb_payment_id.should == @kb_payment.id
39
+ payment_infos[1].transaction_type.should == :PURCHASE
40
+ payment_infos[1].amount.should == @amount
41
+ payment_infos[1].currency.should == @currency
42
+ payment_infos[1].status.should == :PROCESSED
43
+ payment_infos[1].gateway_error.should == 'Success'
44
+ payment_infos[1].gateway_error_code.should be_nil
34
45
  find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
35
46
  find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
36
47
 
@@ -42,22 +53,34 @@ shared_examples 'baid_spec_common' do
42
53
 
43
54
  # Verify GET API
44
55
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
45
- payment_infos.size.should == 2
56
+ payment_infos.size.should == 3
57
+ # details_for
46
58
  payment_infos[0].kb_payment_id.should == @kb_payment.id
47
59
  payment_infos[0].transaction_type.should == :PURCHASE
48
- payment_infos[0].amount.should == @amount
49
- payment_infos[0].currency.should == @currency
60
+ payment_infos[0].amount.should be_nil
61
+ payment_infos[0].currency.should be_nil
50
62
  payment_infos[0].status.should == :PROCESSED
51
63
  payment_infos[0].gateway_error.should == 'Success'
52
64
  payment_infos[0].gateway_error_code.should be_nil
53
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
65
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
66
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
67
+ # purchase
54
68
  payment_infos[1].kb_payment_id.should == @kb_payment.id
55
- payment_infos[1].transaction_type.should == :REFUND
69
+ payment_infos[1].transaction_type.should == :PURCHASE
56
70
  payment_infos[1].amount.should == @amount
57
71
  payment_infos[1].currency.should == @currency
58
72
  payment_infos[1].status.should == :PROCESSED
59
73
  payment_infos[1].gateway_error.should == 'Success'
60
74
  payment_infos[1].gateway_error_code.should be_nil
75
+ find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
76
+ # refund
77
+ payment_infos[2].kb_payment_id.should == @kb_payment.id
78
+ payment_infos[2].transaction_type.should == :REFUND
79
+ payment_infos[2].amount.should == @amount
80
+ payment_infos[2].currency.should == @currency
81
+ payment_infos[2].status.should == :PROCESSED
82
+ payment_infos[2].gateway_error.should == 'Success'
83
+ payment_infos[2].gateway_error_code.should be_nil
61
84
  find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
62
85
  end
63
86
 
@@ -71,14 +94,25 @@ shared_examples 'baid_spec_common' do
71
94
 
72
95
  # Verify GET API
73
96
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
74
- payment_infos.size.should == 1
97
+ payment_infos.size.should == 2
98
+ # details_for
75
99
  payment_infos[0].kb_payment_id.should == @kb_payment.id
76
100
  payment_infos[0].transaction_type.should == :AUTHORIZE
77
- payment_infos[0].amount.should == @amount
78
- payment_infos[0].currency.should == @currency
101
+ payment_infos[0].amount.should be_nil
102
+ payment_infos[0].currency.should be_nil
79
103
  payment_infos[0].status.should == :PROCESSED
80
104
  payment_infos[0].gateway_error.should == 'Success'
81
105
  payment_infos[0].gateway_error_code.should be_nil
106
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
107
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
108
+ # purchase
109
+ payment_infos[1].kb_payment_id.should == @kb_payment.id
110
+ payment_infos[1].transaction_type.should == :AUTHORIZE
111
+ payment_infos[1].amount.should == @amount
112
+ payment_infos[1].currency.should == @currency
113
+ payment_infos[1].status.should == :PROCESSED
114
+ payment_infos[1].gateway_error.should == 'Success'
115
+ payment_infos[1].gateway_error_code.should be_nil
82
116
  find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
83
117
  find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
84
118
 
@@ -92,15 +126,15 @@ shared_examples 'baid_spec_common' do
92
126
 
93
127
  # Verify GET API
94
128
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
95
- payment_infos.size.should == 1 + i
96
- payment_infos[i].kb_payment_id.should == @kb_payment.id
97
- payment_infos[i].transaction_type.should == :CAPTURE
98
- payment_infos[i].amount.should == partial_capture_amount
99
- payment_infos[i].currency.should == @currency
100
- payment_infos[i].status.should == :PROCESSED
101
- payment_infos[i].gateway_error.should == 'Success'
102
- payment_infos[i].gateway_error_code.should be_nil
103
- find_value_from_properties(payment_infos[i].properties, 'payment_processor_account_id').should == @payment_processor_account_id
129
+ payment_infos.size.should == 2 + i
130
+ payment_infos[i + 1].kb_payment_id.should == @kb_payment.id
131
+ payment_infos[i + 1].transaction_type.should == :CAPTURE
132
+ payment_infos[i + 1].amount.should == partial_capture_amount
133
+ payment_infos[i + 1].currency.should == @currency
134
+ payment_infos[i + 1].status.should == :PROCESSED
135
+ payment_infos[i + 1].gateway_error.should == 'Success'
136
+ payment_infos[i + 1].gateway_error_code.should be_nil
137
+ find_value_from_properties(payment_infos[i + 1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
104
138
  end
105
139
 
106
140
  # Try a partial refund
@@ -111,15 +145,15 @@ shared_examples 'baid_spec_common' do
111
145
 
112
146
  # Verify GET API
113
147
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
114
- payment_infos.size.should == 5
115
- payment_infos[4].kb_payment_id.should == @kb_payment.id
116
- payment_infos[4].transaction_type.should == :REFUND
117
- payment_infos[4].amount.should == partial_capture_amount
118
- payment_infos[4].currency.should == @currency
119
- payment_infos[4].status.should == :PROCESSED
120
- payment_infos[4].gateway_error.should == 'Success'
121
- payment_infos[4].gateway_error_code.should be_nil
122
- find_value_from_properties(payment_infos[4].properties, 'payment_processor_account_id').should == @payment_processor_account_id
148
+ payment_infos.size.should == 6
149
+ payment_infos[5].kb_payment_id.should == @kb_payment.id
150
+ payment_infos[5].transaction_type.should == :REFUND
151
+ payment_infos[5].amount.should == partial_capture_amount
152
+ payment_infos[5].currency.should == @currency
153
+ payment_infos[5].status.should == :PROCESSED
154
+ payment_infos[5].gateway_error.should == 'Success'
155
+ payment_infos[5].gateway_error_code.should be_nil
156
+ find_value_from_properties(payment_infos[5].properties, 'payment_processor_account_id').should == @payment_processor_account_id
123
157
 
124
158
  # Try to capture again
125
159
  payment_response = @plugin.capture_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[5].id, @pm.kb_payment_method_id, partial_capture_amount, @currency, @properties, @call_context)
@@ -129,15 +163,15 @@ shared_examples 'baid_spec_common' do
129
163
 
130
164
  # Verify GET API
131
165
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
132
- payment_infos.size.should == 6
133
- payment_infos[5].kb_payment_id.should == @kb_payment.id
134
- payment_infos[5].transaction_type.should == :CAPTURE
135
- payment_infos[5].amount.should == partial_capture_amount
136
- payment_infos[5].currency.should == @currency
137
- payment_infos[5].status.should == :PROCESSED
138
- payment_infos[5].gateway_error.should == 'Success'
139
- payment_infos[5].gateway_error_code.should be_nil
140
- find_value_from_properties(payment_infos[5].properties, 'payment_processor_account_id').should == @payment_processor_account_id
166
+ payment_infos.size.should == 7
167
+ payment_infos[6].kb_payment_id.should == @kb_payment.id
168
+ payment_infos[6].transaction_type.should == :CAPTURE
169
+ payment_infos[6].amount.should == partial_capture_amount
170
+ payment_infos[6].currency.should == @currency
171
+ payment_infos[6].status.should == :PROCESSED
172
+ payment_infos[6].gateway_error.should == 'Success'
173
+ payment_infos[6].gateway_error_code.should be_nil
174
+ find_value_from_properties(payment_infos[6].properties, 'payment_processor_account_id').should == @payment_processor_account_id
141
175
  end
142
176
 
143
177
  it 'should be able to auth and void' do
@@ -145,18 +179,31 @@ shared_examples 'baid_spec_common' do
145
179
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
146
180
  payment_response.amount.should == @amount
147
181
  payment_response.transaction_type.should == :AUTHORIZE
182
+ payer_id = find_value_from_properties(payment_response.properties, 'payerId')
183
+ payer_id.should_not be_nil
148
184
 
149
185
  # Verify GET API
150
186
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
151
- payment_infos.size.should == 1
187
+ payment_infos.size.should == 2
188
+ # details_for
152
189
  payment_infos[0].kb_payment_id.should == @kb_payment.id
153
190
  payment_infos[0].transaction_type.should == :AUTHORIZE
154
- payment_infos[0].amount.should == @amount
155
- payment_infos[0].currency.should == @currency
191
+ payment_infos[0].amount.should be_nil
192
+ payment_infos[0].currency.should be_nil
156
193
  payment_infos[0].status.should == :PROCESSED
157
194
  payment_infos[0].gateway_error.should == 'Success'
158
195
  payment_infos[0].gateway_error_code.should be_nil
159
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
196
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
197
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
198
+ # authorize
199
+ payment_infos[1].kb_payment_id.should == @kb_payment.id
200
+ payment_infos[1].transaction_type.should == :AUTHORIZE
201
+ payment_infos[1].amount.should == @amount
202
+ payment_infos[1].currency.should == @currency
203
+ payment_infos[1].status.should == :PROCESSED
204
+ payment_infos[1].gateway_error.should == 'Success'
205
+ payment_infos[1].gateway_error_code.should be_nil
206
+ find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
160
207
 
161
208
  payment_response = @plugin.void_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[1].id, @pm.kb_payment_method_id, @properties, @call_context)
162
209
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
@@ -164,23 +211,35 @@ shared_examples 'baid_spec_common' do
164
211
 
165
212
  # Verify GET API
166
213
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
167
- payment_infos.size.should == 2
214
+ payment_infos.size.should == 3
215
+ # details_for
168
216
  payment_infos[0].kb_payment_id.should == @kb_payment.id
169
217
  payment_infos[0].transaction_type.should == :AUTHORIZE
170
- payment_infos[0].amount.should == @amount
171
- payment_infos[0].currency.should == @currency
218
+ payment_infos[0].amount.should be_nil
219
+ payment_infos[0].currency.should be_nil
172
220
  payment_infos[0].status.should == :PROCESSED
173
221
  payment_infos[0].gateway_error.should == 'Success'
174
222
  payment_infos[0].gateway_error_code.should be_nil
175
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
223
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
224
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
225
+ # authorize
176
226
  payment_infos[1].kb_payment_id.should == @kb_payment.id
177
- payment_infos[1].transaction_type.should == :VOID
178
- payment_infos[1].amount.should be_nil
179
- payment_infos[1].currency.should be_nil
227
+ payment_infos[1].transaction_type.should == :AUTHORIZE
228
+ payment_infos[1].amount.should == @amount
229
+ payment_infos[1].currency.should == @currency
180
230
  payment_infos[1].status.should == :PROCESSED
181
231
  payment_infos[1].gateway_error.should == 'Success'
182
232
  payment_infos[1].gateway_error_code.should be_nil
183
233
  find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
234
+ # void
235
+ payment_infos[2].kb_payment_id.should == @kb_payment.id
236
+ payment_infos[2].transaction_type.should == :VOID
237
+ payment_infos[2].amount.should be_nil
238
+ payment_infos[2].currency.should be_nil
239
+ payment_infos[2].status.should == :PROCESSED
240
+ payment_infos[2].gateway_error.should == 'Success'
241
+ payment_infos[2].gateway_error_code.should be_nil
242
+ find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == @payment_processor_account_id
184
243
  end
185
244
 
186
245
  it 'should be able to auth, partial capture and void' do
@@ -188,17 +247,30 @@ shared_examples 'baid_spec_common' do
188
247
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
189
248
  payment_response.amount.should == @amount
190
249
  payment_response.transaction_type.should == :AUTHORIZE
250
+ payer_id = find_value_from_properties(payment_response.properties, 'payerId')
251
+ payer_id.should_not be_nil
191
252
 
192
253
  # Verify GET API
193
254
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
194
- payment_infos.size.should == 1
255
+ payment_infos.size.should == 2
256
+ # details_for
195
257
  payment_infos[0].kb_payment_id.should == @kb_payment.id
196
258
  payment_infos[0].transaction_type.should == :AUTHORIZE
197
- payment_infos[0].amount.should == @amount
198
- payment_infos[0].currency.should == @currency
259
+ payment_infos[0].amount.should be_nil
260
+ payment_infos[0].currency.should be_nil
199
261
  payment_infos[0].status.should == :PROCESSED
200
262
  payment_infos[0].gateway_error.should == 'Success'
201
263
  payment_infos[0].gateway_error_code.should be_nil
264
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
265
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
266
+ # authorize
267
+ payment_infos[1].kb_payment_id.should == @kb_payment.id
268
+ payment_infos[1].transaction_type.should == :AUTHORIZE
269
+ payment_infos[1].amount.should == @amount
270
+ payment_infos[1].currency.should == @currency
271
+ payment_infos[1].status.should == :PROCESSED
272
+ payment_infos[1].gateway_error.should == 'Success'
273
+ payment_infos[1].gateway_error_code.should be_nil
202
274
  find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
203
275
 
204
276
  partial_capture_amount = BigDecimal.new('10')
@@ -209,15 +281,15 @@ shared_examples 'baid_spec_common' do
209
281
 
210
282
  # Verify GET API
211
283
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
212
- payment_infos.size.should == 2
213
- payment_infos[1].kb_payment_id.should == @kb_payment.id
214
- payment_infos[1].transaction_type.should == :CAPTURE
215
- payment_infos[1].amount.should == partial_capture_amount
216
- payment_infos[1].currency.should == @currency
217
- payment_infos[1].status.should == :PROCESSED
218
- payment_infos[1].gateway_error.should == 'Success'
219
- payment_infos[1].gateway_error_code.should be_nil
220
- find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
284
+ payment_infos.size.should == 3
285
+ payment_infos[2].kb_payment_id.should == @kb_payment.id
286
+ payment_infos[2].transaction_type.should == :CAPTURE
287
+ payment_infos[2].amount.should == partial_capture_amount
288
+ payment_infos[2].currency.should == @currency
289
+ payment_infos[2].status.should == :PROCESSED
290
+ payment_infos[2].gateway_error.should == 'Success'
291
+ payment_infos[2].gateway_error_code.should be_nil
292
+ find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == @payment_processor_account_id
221
293
 
222
294
  payment_response = @plugin.void_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[2].id, @pm.kb_payment_method_id, @properties, @call_context)
223
295
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
@@ -225,15 +297,15 @@ shared_examples 'baid_spec_common' do
225
297
 
226
298
  # Verify GET API
227
299
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
228
- payment_infos.size.should == 3
229
- payment_infos[2].kb_payment_id.should == @kb_payment.id
230
- payment_infos[2].transaction_type.should == :VOID
231
- payment_infos[2].amount.should be_nil
232
- payment_infos[2].currency.should be_nil
233
- payment_infos[2].status.should == :PROCESSED
234
- payment_infos[2].gateway_error.should == 'Success'
235
- payment_infos[2].gateway_error_code.should be_nil
236
- find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == @payment_processor_account_id
300
+ payment_infos.size.should == 4
301
+ payment_infos[3].kb_payment_id.should == @kb_payment.id
302
+ payment_infos[3].transaction_type.should == :VOID
303
+ payment_infos[3].amount.should be_nil
304
+ payment_infos[3].currency.should be_nil
305
+ payment_infos[3].status.should == :PROCESSED
306
+ payment_infos[3].gateway_error.should == 'Success'
307
+ payment_infos[3].gateway_error_code.should be_nil
308
+ find_value_from_properties(payment_infos[3].properties, 'payment_processor_account_id').should == @payment_processor_account_id
237
309
  end
238
310
 
239
311
  it 'should generate forms correctly' do