killbill-paypal-express 5.0.0 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
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