allinpay_cnp 0.1.1 → 0.1.3

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
  SHA256:
3
- metadata.gz: d6a122d0fc477863ecbad367004a05ecae0b0f1876fe04ba82d3c1e24a6bad69
4
- data.tar.gz: 88c28a107d766171b93f35bd0e78ff33324503f85401191e904899dd72a45d0b
3
+ metadata.gz: 787579a7e6a53167b1a4e104b39333b520e60034f64897e125ddefec64990272
4
+ data.tar.gz: 7a172d01a6331d8ab71c2407ca6b5b41bf472fb746a26262abb6dad7b554afec
5
5
  SHA512:
6
- metadata.gz: 6cf074a1b6b0de55d3beb38c9624fc3a784bd5896af05b6f82838fc24b4e0914f769815e5bf6e5345c1752cedc5688a4c1490d423ee6c47b2452ad08dcd33c79
7
- data.tar.gz: adfa675fc31a869b101527c8e54aa3b021ff468f8c33254051fb197a22581f3da027cf6af346353041610e6bc7c2669f6c2532e008df3e71d0c6c4b088021870
6
+ metadata.gz: f7e81f3e83443da5da92bfaa0ae81a43935ee13ae398c823a588789d5355f0cc62fe2dd113b3c27ff1f953dcc64c6b7f7a7195856e4abd10ea649616b71f7b61
7
+ data.tar.gz: 0e56c1c311629fda04207148a3abb7af9c68c31e8f01989d16a14e72a267621a8ef2c30463d7a024f7edf017641c4f863a2c3d660dc70f6557bcb3b6bcd1a203
@@ -4,7 +4,15 @@ module AllinpayCnp
4
4
  class Client
5
5
  VERSION = 'V2.0.0'
6
6
 
7
- def unified_pay(access_order_id:, amount:, currency:, urls:, **options)
7
+ def unified_pay(hash_or_opts = nil, **kwargs)
8
+ opts = (hash_or_opts || {}).merge(kwargs).transform_keys(&:to_sym)
9
+
10
+ access_order_id = opts.fetch(:access_order_id)
11
+ amount = opts.fetch(:amount)
12
+ currency = opts.fetch(:currency)
13
+ urls = opts.fetch(:urls)
14
+ options = opts.except(:access_order_id, :amount, :currency, :urls)
15
+
8
16
  params = build_unified_pay_params(
9
17
  access_order_id: access_order_id,
10
18
  amount: amount,
@@ -12,28 +20,42 @@ module AllinpayCnp
12
20
  urls: urls,
13
21
  **options
14
22
  )
23
+
15
24
  request.post(:unified_pay, params)
16
25
  end
17
26
 
18
- def query(ori_access_order_id)
27
+ def query(hash_or_opts = nil, **kwargs)
28
+ opts = (hash_or_opts || {}).merge(kwargs).transform_keys(&:to_sym)
29
+
30
+ merchant_no = opts.fetch(:merchant_no, config.merchant_id)
31
+ ori_access_order_id = opts.fetch(:ori_access_order_id)
32
+
19
33
  params = {
20
34
  version: VERSION,
21
- mchtId: config.merchant_id,
35
+ mchtId: merchant_no,
22
36
  transType: 'Query',
23
37
  oriAccessOrderId: ori_access_order_id
24
38
  }
25
39
  request.post(:quickpay, params)
26
40
  end
27
41
 
28
- def refund(ori_access_order_id:, refund_amount:, access_order_id: nil)
42
+ def refund(hash_or_opts = nil, **kwargs)
43
+ opts = (hash_or_opts || {}).merge(kwargs).transform_keys(&:to_sym)
44
+
45
+ merchant_no = opts.fetch(:merchant_no)
46
+ ori_access_order_id = opts.fetch(:ori_access_order_id)
47
+ refund_amount = opts.fetch(:refund_amount)
48
+ access_order_id = opts.fetch(:access_order_id, generate_order_id)
49
+
29
50
  params = {
30
51
  version: VERSION,
31
- mchtId: config.merchant_id,
52
+ mchtId: merchant_no,
32
53
  transType: 'Refund',
33
54
  accessOrderId: access_order_id,
34
55
  oriAccessOrderId: ori_access_order_id,
35
- refundAmount: refund_amount.to_s
36
- }
56
+ refundAmount: refund_amount.to_s,
57
+ notifyUrl: opts.fetch(:notify_url, nil)
58
+ }.reject { |_, v| v.nil? }
37
59
  request.post(:quickpay, params)
38
60
  end
39
61
 
@@ -45,6 +67,10 @@ module AllinpayCnp
45
67
 
46
68
  private
47
69
 
70
+ def generate_order_id
71
+ Time.now.to_i.to_s
72
+ end
73
+
48
74
  def config
49
75
  AllinpayCnp.config
50
76
  end
@@ -53,23 +79,23 @@ module AllinpayCnp
53
79
  @request ||= Request.new
54
80
  end
55
81
 
56
- def build_unified_pay_params(access_order_id:, amount:, currency:, urls:, **options)
82
+ def build_unified_pay_params(access_order_id:, amount:, currency:, urls:, merchant_no: nil, **options)
57
83
  build_base_params(access_order_id, amount, currency, urls, options)
58
84
  .merge(build_shipping_params(options))
59
85
  .merge(build_billing_params(options))
60
86
  .compact
61
87
  end
62
88
 
63
- def build_base_params(access_order_id, amount, currency, urls, options)
64
- build_order_core_params(access_order_id, amount, currency)
89
+ def build_base_params(access_order_id, amount, currency, urls, options, merchant_no = nil)
90
+ build_order_core_params(access_order_id, amount, currency, merchant_no)
65
91
  .merge(notify_return_urls(urls))
66
92
  .merge(build_base_option_params(options))
67
93
  end
68
94
 
69
- def build_order_core_params(access_order_id, amount, currency)
95
+ def build_order_core_params(access_order_id, amount, currency, merchant_no = nil)
70
96
  {
71
97
  version: VERSION,
72
- mchtId: config.merchant_id,
98
+ mchtId: merchant_no || config.merchant_id,
73
99
  accessOrderId: access_order_id,
74
100
  amount: amount.to_s,
75
101
  currency: currency
@@ -52,7 +52,7 @@ module AllinpayCnp
52
52
  end
53
53
 
54
54
  def payment_url
55
- body['paymentUrl'] || body['counterUrl'] || body['url']
55
+ body['payUrl']
56
56
  end
57
57
 
58
58
  def status
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AllinpayCnp
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.3'
5
5
  end
data/lib/debug.rb ADDED
@@ -0,0 +1,86 @@
1
+ require './allinpay_cnp'
2
+
3
+ AllinpayCnp.configure do |config|
4
+ config.merchant_id = '086310058120045'
5
+ config.private_key = <<~XXX
6
+ -----BEGIN PRIVATE KEY-----
7
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFt99S9adbC84l
8
+ LExEF4vjFHiurFNRmBVEMmVVeJQfzQbQ/6fY0s+2Vx0lHVcD5ZVdDRwbTl2LG+8S
9
+ lWH6aXmvOk5j5DI9wGJEwPo2L8GH9RHbHMQu0jr9+UO97kBCjKNZKmWkbNsPrfUb
10
+ HxWuKKFILaZcv4LYNsjBNvVkvRU674lJVQ+TZ8ZsPLvc5+I3anJGLbu5Bt1igqbn
11
+ vpMV1seYsUnNbuDBSoYHl09CPvGRc5krmRyouwwLlXiwcJDNDudl5Uohwj2LCuiC
12
+ TWfkd/Me1ty1YrAZR9a/zh+vM7dLc9aCBnic2/7JYBtPwcKKC0Zix9ODbNehLahE
13
+ Nqvxm9KtAgMBAAECggEAE3lb1rj5Zd9Qy5qEXISRM6mVhWbVwgift5rbHkMFG+i+
14
+ ziEQMCv7Z3NHHJu6MVkQkBy1cv8R+ZyjvInYH6j54kd05yPXyvtC8pCrVGD5x+Fc
15
+ g99ed1ofk1pU0MVBsQxXHnYtkrdiEDZLGQPDx+aalBhi9Wmrgo5K0bUPEIALMkWv
16
+ RIBTkRbA/SB4WatB7zmKJxkqA+YIRzAmLDgUE1qjyhE/1VG/d/aetkwGkMo+HSDU
17
+ x87ERKSbgLCri80UQ9RnMtV/wp9nh0VD3b6+MVFKacfKLHBrAwT3E/8Lv4S0I/Sr
18
+ I94IoxOP4gCxytps+BslNuSCd3mMp8OuxCkqg2PBhQKBgQDmC+SpWH4WU/1XO/w9
19
+ C0HnV7b0mpLt4+BqN/1eHdKK29L4R0iOqRjnO9bCkWGnV8nGU0kzNk9jueK2QBdR
20
+ eOnmwqFCvEaIksyG/sUcHkzCxgtUvHxhy3e9IvjKv/5y47P9w/YgIZn62X+tWsnv
21
+ EzPKPfw2+ALxllkVWZsBqB3hrwKBgQDcBkoL1JRWlrPaaSzcUbyJKUQWwIm9trHj
22
+ XAYzwwsNjhGuV/aefVI7priLOxWR9Djq5IuOabNQ290ve6Bu2BBrEtbIsL/0UXwq
23
+ HAmWXuCFc9/MfocQ+TiE0BuUDKgsYqQU2DE+JLaxvaUv1DNw2bUgm9z3zQyJJed4
24
+ ZAHrYqo0YwKBgE9GGe4hiJG5L7w395wxnOxT1cBE5A0GUfdIhA9Cx6MCTZkxN1ex
25
+ /drxS/iQkM5R+j5VxQvY01LSY8XaIC77M99Jgri0mLnHnKOId/RQnLMh/BWfPl2U
26
+ +BY9Tu7Paqe8v/Ha7Z309lLzUIQ0nRG91EMFSTzICnumC9zHnBreDC4RAoGBAMWl
27
+ JKjh6eqqb594MSMsjVcM6awigtkXn05kYPHoeCpR/5IEVHZkjxUkm8v+ZE76+pIO
28
+ gUqJqtms11ELFb/ceUsl3ijjlVssQ4Q0MWyRh9B5mYVB96SIq3uq0cs5X2yXo1tS
29
+ JVH0euTJPfTsAtWRy4IiYOl8mZEtqnNcKtk+hTSPAoGAKSF7NCZU0hQwu/rf8v7v
30
+ go/qdS/oYDUohs5HVLG074Eerb1Q4w/xUfSz8zIJvTg04PLWwiBO3P5hCoXUXEaR
31
+ V3Dl1g4i/pGrurOQQHhH9gdPINGBb7okthIwl02QT1UxX3Ibq1OjuH27qoCRQtWJ
32
+ 7oJx+aHeFOuOHjULBy+6/CU=
33
+ -----END PRIVATE KEY-----
34
+ XXX
35
+ config.public_key = <<~PEM
36
+ -----BEGIN PUBLIC KEY-----
37
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsNGWmxYl6uYA/X3k1OOY
38
+ nMlLvmgJpYMvahxDLUc9CEXbaqMoMMuLbsvfR6Zf3JIeYCjjfgNVDJTsJY/HWWbp
39
+ HEd4GvQAgv6wywsQ8AJqIHe3fM3B8iwS3XIxZM9fs92lU+mHuVHQdMvciQyaB3iw
40
+ 3IvBBzCEgyqSFcGBrlQOGf1x7fZZKY9RH3EDxqzE+Zrs27BjE8T3sNvUCKcfWGhQ
41
+ GKX80jcqLEnFBl9CIlgL4TRSksQ1U4GhOY0/4Db6UsmbTAQeG2plWgbJ0l0khJ2O
42
+ DYqTtDujl4zN3tGXQ2gwCErxqBbukIFMkT+jS1lxrBeGGrvuOXTz408tDbAsJnbU
43
+ YwIDAQAB
44
+ -----END PUBLIC KEY-----
45
+ PEM
46
+ config.environment = :test
47
+ config.logger = Logger.new($stdout)
48
+ end
49
+
50
+ client = AllinpayCnp.client
51
+
52
+ # 测试创建订单
53
+ response = client.unified_pay(
54
+ access_order_id: "TEST_#{Time.now.to_i}",
55
+ amount: '1.00',
56
+ currency: 'HKD',
57
+ urls: {
58
+ notify_url: 'https://example.com/callback',
59
+ return_url: 'https://example.com/return'
60
+ },
61
+ email: 'test@example.com',
62
+ product_info: [
63
+ {
64
+ # sku: '123456789',
65
+ productName: 'MacBook Pro'
66
+ # price: '1.00',
67
+ # quantity: '1'
68
+ }
69
+ ],
70
+ shipping: {
71
+ first_name: 'Peter',
72
+ last_name: 'Zhang',
73
+ address1: '123 Test Street',
74
+ city: 'Hong Kong',
75
+ state: 'Hong Kong',
76
+ country: 'HK',
77
+ zip_code: '000000',
78
+ phone: '12345678'
79
+ }
80
+ )
81
+
82
+ q = client.query('TEST_1771053407')
83
+ puts "Success: #{response.success?}"
84
+ puts "Result Code: #{response.result_code}"
85
+ puts "Result Desc: #{response.result_desc}"
86
+ puts "Payment URL: #{response.payment_url}" if response.success?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allinpay_cnp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - DrinE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-05 00:00:00.000000000 Z
11
+ date: 2026-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -45,6 +45,7 @@ files:
45
45
  - lib/allinpay_cnp/response.rb
46
46
  - lib/allinpay_cnp/signature.rb
47
47
  - lib/allinpay_cnp/version.rb
48
+ - lib/debug.rb
48
49
  homepage: https://github.com/CoolDrinELiu/allinpay
49
50
  licenses:
50
51
  - MIT