fuiou 0.1.0 → 0.1.4
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/fuiou/result.rb +14 -0
- data/lib/fuiou/service.rb +26 -12
- data/lib/fuiou/sign.rb +0 -1
- data/lib/fuiou/version.rb +1 -1
- data/lib/fuiou.rb +5 -1
- data/test/test_helper.rb +2 -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: ae232fcdb1b823356426238a1373b183269500de47beacf9e7585f63829a0ce3
|
4
|
+
data.tar.gz: 06d655b1a3a4fdfcf697003d6cf1c5d78b1ccd7749c6bf690fae273b754c9fa8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a07c5893bc4e69b541d2234c23de192c7e4eb73922923c6cc385460dd67ca50be1fa0d5d87e45fadb61aedacbe6f2b5e6d72c5ad82d4ded8239df6f9112d6cbe
|
7
|
+
data.tar.gz: 1f23162d9a3392366bab681ec0967af936fd9847759aa5fc79e0f3c8db1c4f0b23408d85f9dd98fdaf07c8ccc647c12c5f91cd76fdafa556988650d34c6e95ff
|
data/lib/fuiou/result.rb
ADDED
data/lib/fuiou/service.rb
CHANGED
@@ -7,8 +7,6 @@ require 'active_support/core_ext/hash/conversions'
|
|
7
7
|
|
8
8
|
module Fuiou
|
9
9
|
module Service
|
10
|
-
FUIOU_21_URL = "https://fundwx.fuiou.com/preCreate".freeze
|
11
|
-
FUIOU_30_URL = "https://fundwx.fuiou.com/commonQuery".freeze
|
12
10
|
ENCODE_TYPE_GBK = "GBK"
|
13
11
|
|
14
12
|
class << self
|
@@ -17,7 +15,7 @@ module Fuiou
|
|
17
15
|
def invoke_pre_create(params)
|
18
16
|
check_required_options(params, INVOKE_PRE_CREATE_REQUIRED_FIELDS)
|
19
17
|
payload = xmlify_payload(params)
|
20
|
-
invoke_remote(
|
18
|
+
invoke_remote(Fuiou.fuiou_21_url, { req: payload })
|
21
19
|
end
|
22
20
|
|
23
21
|
INVOKE_COMMON_QUERY_REQUIRED_FIELDS = %i[version ins_cd mchnt_cd term_id order_type mchnt_order_no random_str]
|
@@ -25,9 +23,27 @@ module Fuiou
|
|
25
23
|
def invoke_common_query(params)
|
26
24
|
check_required_options(params, INVOKE_COMMON_QUERY_REQUIRED_FIELDS)
|
27
25
|
payload = xmlify_payload(params)
|
28
|
-
invoke_remote(
|
26
|
+
invoke_remote(Fuiou.fuiou_30_url, { req: payload })
|
29
27
|
end
|
30
28
|
|
29
|
+
INVOKE_HIS_TRADE_QUERY_REQUIRED_FIELDS = %i[version ins_cd mchnt_cd term_id order_type]
|
30
|
+
# 历史订单查询: https://fundwx.fuiou.com/doc/#/scanpay/api?id=_310-%e5%8e%86%e5%8f%b2%e8%ae%a2%e5%8d%95%e6%9f%a5%e8%af%a2
|
31
|
+
def invoke_his_trade_query(params)
|
32
|
+
check_required_options(params, INVOKE_HIS_TRADE_QUERY_REQUIRED_FIELDS)
|
33
|
+
payload = xmlify_payload(params)
|
34
|
+
invoke_remote(Fuiou.his_trade_query_url, { req: payload })
|
35
|
+
end
|
36
|
+
|
37
|
+
INVOKE_WX_PRE_CREATE_REQUIRED_FIELDS = %i[version addn_inf ins_cd mchnt_cd term_id random_str goods_des goods_detail goods_tag product_id mchnt_order_no curr_type order_amt term_ip txn_begin_ts notify_url limit_pay trade_type openid sub_openid sub_appid]
|
38
|
+
# 公众号/服务窗统一下单: https://fundwx.fuiou.com/doc/#/scanpay/api?id=_33-%e5%85%ac%e4%bc%97%e5%8f%b7%e6%9c%8d%e5%8a%a1%e7%aa%97%e7%bb%9f%e4%b8%80%e4%b8%8b%e5%8d%95
|
39
|
+
def invoke_wx_pre_create(params)
|
40
|
+
check_required_options(params, INVOKE_WX_PRE_CREATE_REQUIRED_FIELDS)
|
41
|
+
payload = xmlify_payload(params)
|
42
|
+
invoke_remote(Fuiou.wx_pre_create_url, { req: payload })
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
31
47
|
def invoke_remote(url, payload, options = {})
|
32
48
|
resp = RestClient.post(
|
33
49
|
url,
|
@@ -37,26 +53,24 @@ module Fuiou
|
|
37
53
|
charset: ENCODE_TYPE_GBK
|
38
54
|
}
|
39
55
|
)
|
40
|
-
|
56
|
+
Fuiou::Result.parse(resp.body)
|
41
57
|
end
|
42
58
|
|
43
|
-
private
|
44
|
-
|
45
59
|
def xmlify_payload(params)
|
46
60
|
rsa_string = params.sort.map{|k,v| "#{k}=#{v}&" unless k.start_with?("sign") || k.start_with?("reserved")}.join
|
47
|
-
rsa_string = rsa_string.
|
61
|
+
rsa_string = rsa_string.chop if rsa_string.end_with?("&")
|
48
62
|
|
49
63
|
sign = Fuiou::Sign.rsa_sign(rsa_string)
|
50
64
|
|
51
|
-
xml = "<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"yes\"?><xml>#{params.
|
52
|
-
(xml.
|
65
|
+
xml = "<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"yes\"?><xml>#{params.sort.map { |k, v| "<#{k}>#{v}</#{k}>" }.join}<sign>#{sign}</sign></xml>"
|
66
|
+
(xml.encode(ENCODE_TYPE_GBK)).encode(ENCODE_TYPE_GBK)
|
53
67
|
end
|
54
68
|
|
55
69
|
def check_required_options(options, names)
|
56
70
|
names.each do |name|
|
57
71
|
warn("Fuiou Warn: missing required option: #{name}") unless options.has_key?(name)
|
58
72
|
end
|
59
|
-
end
|
73
|
+
end
|
60
74
|
end
|
61
75
|
end
|
62
|
-
end
|
76
|
+
end
|
data/lib/fuiou/sign.rb
CHANGED
data/lib/fuiou/version.rb
CHANGED
data/lib/fuiou.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'fuiou/result'
|
3
4
|
require 'fuiou/service'
|
4
5
|
require 'fuiou/sign'
|
5
6
|
require 'fuiou/version'
|
6
|
-
require 'openssl'
|
7
7
|
|
8
8
|
module Fuiou
|
9
9
|
class << self
|
@@ -12,7 +12,11 @@ module Fuiou
|
|
12
12
|
# ins_private_key 机构号私钥
|
13
13
|
# ins_public_key 机构号公钥
|
14
14
|
# notify_url 回调通知地址
|
15
|
+
# fuiou_21_url 统一下单地址
|
16
|
+
# fuiou_30_url 订单查询地址
|
17
|
+
# his_trade_query_url 历史交易查询地址
|
15
18
|
attr_accessor :mch_id, :notify_url
|
16
19
|
attr_accessor :ins_id, :ins_private_key, :ins_public_key
|
20
|
+
attr_accessor :fuiou_21_url, :fuiou_30_url, :his_trade_query_url, :wx_pre_create_url
|
17
21
|
end
|
18
22
|
end
|
data/test/test_helper.rb
CHANGED
@@ -8,6 +8,8 @@ require "webmock/minitest"
|
|
8
8
|
Fuiou.mch_id = "0002900F0370542"
|
9
9
|
Fuiou.notify_url = "http://www.wrx.cn"
|
10
10
|
Fuiou.ins_id = "08A9999999"
|
11
|
+
Fuiou.fuiou_21_url = "https://fundwx.fuiou.com/preCreate"
|
12
|
+
Fuiou.fuiou_30_url = "https://fundwx.fuiou.com/commonQuery"
|
11
13
|
|
12
14
|
Fuiou.ins_private_key = "-----BEGIN RSA PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJgAzD8fEvBHQTyxUEeK963mjziMWG7nxpi+pDMdtWiakc6xVhhbaipLaHo4wVI92A2wr3ptGQ1/YsASEHm3m2wGOpT2vrb2Ln/S7lz1ShjTKaT8U6rKgCdpQNHUuLhBQlpJer2mcYEzG/nGzcyalOCgXC/6CySiJCWJmPyR45bJAgMBAAECgYBHFfBvAKBBwIEQ2jeaDbKBIFcQcgoVa81jt5xgz178WXUg/awu3emLeBKXPh2i0YtN87hM/+J8fnt3KbuMwMItCsTD72XFXLM4FgzJ4555CUCXBf5/tcKpS2xT8qV8QDr8oLKA18sQxWp8BMPrNp0epmwun/gwgxoyQrJUB5YgZQJBAOiVXHiTnc3KwvIkdOEPmlfePFnkD4zzcv2UwTlHWgCyM/L8SCAFclXmSiJfKSZZS7o0kIeJJ6xe3Mf4/HSlhdMCQQCnTow+TnlEhDTPtWa+TUgzOys83Q/VLikqKmDzkWJ7I12+WX6AbxxEHLD+THn0JGrlvzTEIZyCe0sjQy4LzQNzAkEAr2SjfVJkuGJlrNENSwPHMugmvusbRwH3/38ET7udBdVdE6poga1Z0al+0njMwVypnNwy+eLWhkhrWmpLh3OjfQJAI3BV8JS6xzKh5SVtn/3Kv19XJ0tEIUnn2lCjvLQdAixZnQpj61ydxie1rggRBQ/5vLSlvq3H8zOelNeUF1fT1QJADNo+tkHVXLY9H2kdWFoYTvuLexHAgrsnHxONOlSA5hcVLd1B3p9utOt3QeDf6x2i1lqhTH2w8gzjvsnx13tWqg==\n-----END RSA PRIVATE KEY-----\n"
|
13
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fuiou
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- Rakefile
|
91
91
|
- lib/fuiou.rb
|
92
|
+
- lib/fuiou/result.rb
|
92
93
|
- lib/fuiou/service.rb
|
93
94
|
- lib/fuiou/sign.rb
|
94
95
|
- lib/fuiou/version.rb
|