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 +4 -4
- data/lib/allinpay_cnp/client.rb +38 -12
- data/lib/allinpay_cnp/response.rb +1 -1
- data/lib/allinpay_cnp/version.rb +1 -1
- data/lib/debug.rb +86 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 787579a7e6a53167b1a4e104b39333b520e60034f64897e125ddefec64990272
|
|
4
|
+
data.tar.gz: 7a172d01a6331d8ab71c2407ca6b5b41bf472fb746a26262abb6dad7b554afec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f7e81f3e83443da5da92bfaa0ae81a43935ee13ae398c823a588789d5355f0cc62fe2dd113b3c27ff1f953dcc64c6b7f7a7195856e4abd10ea649616b71f7b61
|
|
7
|
+
data.tar.gz: 0e56c1c311629fda04207148a3abb7af9c68c31e8f01989d16a14e72a267621a8ef2c30463d7a024f7edf017641c4f863a2c3d660dc70f6557bcb3b6bcd1a203
|
data/lib/allinpay_cnp/client.rb
CHANGED
|
@@ -4,7 +4,15 @@ module AllinpayCnp
|
|
|
4
4
|
class Client
|
|
5
5
|
VERSION = 'V2.0.0'
|
|
6
6
|
|
|
7
|
-
def unified_pay(
|
|
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(
|
|
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:
|
|
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(
|
|
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:
|
|
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
|
data/lib/allinpay_cnp/version.rb
CHANGED
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.
|
|
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-
|
|
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
|