Class: AllinpayCnp::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/allinpay_cnp/response.rb

Constant Summary collapse

SUCCESS_CODE =
'0000'

Instance Method Summary collapse

Constructor Details

#initialize(http_response, error: nil, public_key: nil) ⇒ Response

Returns a new instance of Response.



9
10
11
12
13
14
# File 'lib/allinpay_cnp/response.rb', line 9

def initialize(http_response, error: nil, public_key: nil)
  @http_response = http_response
  @error = error
  @public_key = public_key
  @body = nil
end

Instance Method Details

#[](key) ⇒ Object



105
106
107
# File 'lib/allinpay_cnp/response.rb', line 105

def [](key)
  body[key.to_s]
end

#access_order_idObject



46
47
48
# File 'lib/allinpay_cnp/response.rb', line 46

def access_order_id
  body['accessOrderId']
end

#amountObject



66
67
68
# File 'lib/allinpay_cnp/response.rb', line 66

def amount
  body['amount']
end

#bodyObject



30
31
32
# File 'lib/allinpay_cnp/response.rb', line 30

def body
  @body ||= parse_body
end

#card_noObject



87
88
89
# File 'lib/allinpay_cnp/response.rb', line 87

def card_no
  body['cardNo']
end

#card_orgnObject



91
92
93
# File 'lib/allinpay_cnp/response.rb', line 91

def card_orgn
  body['cardOrgn']
end

#currencyObject



70
71
72
# File 'lib/allinpay_cnp/response.rb', line 70

def currency
  body['currency']
end

#failure?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/allinpay_cnp/response.rb', line 26

def failure?
  !success?
end

#http_success?Boolean

Returns:

  • (Boolean)


16
17
18
19
20
# File 'lib/allinpay_cnp/response.rb', line 16

def http_success?
  return false if @error

  @http_response&.success? == true
end

#order_idObject



50
51
52
# File 'lib/allinpay_cnp/response.rb', line 50

def order_id
  body['orderId']
end

#payment_urlObject



54
55
56
# File 'lib/allinpay_cnp/response.rb', line 54

def payment_url
  body['payUrl']
end

#raw_bodyObject



34
35
36
# File 'lib/allinpay_cnp/response.rb', line 34

def raw_body
  @http_response&.body
end

#refund_amountObject



74
75
76
# File 'lib/allinpay_cnp/response.rb', line 74

def refund_amount
  body['refundAmount']
end

#result_codeObject



38
39
40
# File 'lib/allinpay_cnp/response.rb', line 38

def result_code
  body['resultCode']
end

#result_descObject



42
43
44
# File 'lib/allinpay_cnp/response.rb', line 42

def result_desc
  body['resultDesc']
end

#signObject



95
96
97
# File 'lib/allinpay_cnp/response.rb', line 95

def sign
  body['sign']
end

#statusObject



58
59
60
# File 'lib/allinpay_cnp/response.rb', line 58

def status
  body['status']
end

#status_descObject



62
63
64
# File 'lib/allinpay_cnp/response.rb', line 62

def status_desc
  body['statusDesc']
end

#success?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/allinpay_cnp/response.rb', line 22

def success?
  http_success? && result_code == SUCCESS_CODE
end

#to_hObject



109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/allinpay_cnp/response.rb', line 109

def to_h
  {
    success: success?,
    result_code: result_code,
    result_desc: result_desc,
    access_order_id: access_order_id,
    order_id: order_id,
    payment_url: payment_url,
    status: status,
    amount: amount,
    currency: currency,
    raw: body
  }
end

#trans_timeObject



78
79
80
81
82
83
84
85
# File 'lib/allinpay_cnp/response.rb', line 78

def trans_time
  time_str = body['transTime']
  return nil unless time_str

  Time.strptime(time_str, '%Y%m%d%H%M%S')
rescue ArgumentError
  nil
end

#valid_signature?Boolean

Returns:

  • (Boolean)


99
100
101
102
103
# File 'lib/allinpay_cnp/response.rb', line 99

def valid_signature?
  return false unless @public_key && sign

  Signature.verify(body, @public_key)
end