alipay 0.3.1 → 0.4.0
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/CHANGELOG.md +4 -0
- data/README.md +14 -2
- data/lib/alipay/service.rb +20 -3
- data/lib/alipay/version.rb +1 -1
- data/test/alipay/service_test.rb +52 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8ae97dc76dc98045ecff6a9e98ad1dca72a6d8e
|
4
|
+
data.tar.gz: 82a2d12669ddf0a1ece485b56db7591f503c166b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27f157fc206253037e9753eb450f0a17f05ee8cb88d599f1a8f33be5166a1ccf481a4e9a8227f7e4fb223b6d6359b0d5fef34653d32a7fcea729cd199a6e67ec
|
7
|
+
data.tar.gz: 5b876eb6dcac358e66bed557dc1acfc72bf3110b274a48cae55174496d7779b4cde89f85949c7e37d94e7267a837d8dfb76d8d133a38f43c373f905277041074
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -45,8 +45,8 @@ Alipay.seller_email = 'YOUR_SELLER_EMAIL'
|
|
45
45
|
|
46
46
|
```ruby
|
47
47
|
options = {
|
48
|
-
:out_trade_no => 'YOUR_ORDER_ID',
|
49
|
-
:subject => 'YOUR_ORDER_SUBJECCT',
|
48
|
+
:out_trade_no => 'YOUR_ORDER_ID',
|
49
|
+
:subject => 'YOUR_ORDER_SUBJECCT',
|
50
50
|
:logistics_type => 'DIRECT',
|
51
51
|
:logistics_fee => '0',
|
52
52
|
:logistics_payment => 'SELLER_PAY',
|
@@ -128,6 +128,18 @@ If Alipay fail to close trade, this method will return XML similar to:
|
|
128
128
|
</alipay>
|
129
129
|
```
|
130
130
|
|
131
|
+
## Single trade query
|
132
|
+
|
133
|
+
The parameters same as [Close trade](#user-content-close-trade)
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
Alipay::Service.single_trade_query(
|
137
|
+
:trade_no => 'TRADE_NO',
|
138
|
+
:out_order_no => 'the-out-order-no'
|
139
|
+
)
|
140
|
+
# => '<?xml version="1.0" encoding="utf-8"?><alipay><is_success>T</is_success><request><param name="trade_no">TRADE_NO</param><param name="_input_charset">utf-8</param><param name="service">single_trade_query</param><param name="partner">PARTNER</param></request><response><trade><additional_trade_status>DAEMON_CONFIRM_CLOSE</additional_trade_status><buyer_email>foo@gmail.com</buyer_email><buyer_id>BUYER_ID</buyer_id><discount>0.00</discount><flag_trade_locked>0</flag_trade_locked><gmt_close>2015-01-20 02:37:00</gmt_close><gmt_create>2015-01-20 02:17:00</gmt_create><gmt_last_modified_time>2015-01-20 02:37:00</gmt_last_modified_time><is_total_fee_adjust>F</is_total_fee_adjust><operator_role>B</operator_role><out_trade_no>OUT_TRADE_NO</out_trade_no><payment_type>1</payment_type><price>640.00</price><quantity>1</quantity><seller_email>bar@example.com</seller_email><seller_id>SELLER_ID</seller_id><subject>YOUR ORDER SUBJECT</subject><to_buyer_fee>0.00</to_buyer_fee><to_seller_fee>0.00</to_seller_fee><total_fee>640.00</total_fee><trade_no>TRADE_NO</trade_no><trade_status>TRADE_CLOSED</trade_status><use_coupon>F</use_coupon></trade></response><sign>SIGN</sign><sign_type>MD5</sign_type></alipay>'
|
141
|
+
```
|
142
|
+
|
131
143
|
### Refund
|
132
144
|
|
133
145
|
```ruby
|
data/lib/alipay/service.rb
CHANGED
@@ -114,6 +114,7 @@ module Alipay
|
|
114
114
|
end
|
115
115
|
|
116
116
|
CLOSE_TRADE_REQUIRED_OPTIONS = %w( service partner _input_charset)
|
117
|
+
CLOSE_TRADE_REQUIRED_OPTIONAL_OPTIONS = %w( trade_no out_order_no )
|
117
118
|
def self.close_trade(options)
|
118
119
|
options = {
|
119
120
|
'service' => 'close_trade',
|
@@ -122,10 +123,22 @@ module Alipay
|
|
122
123
|
}.merge(Utils.stringify_keys(options))
|
123
124
|
|
124
125
|
check_required_options(options, CLOSE_TRADE_REQUIRED_OPTIONS)
|
126
|
+
check_optional_options(options, CLOSE_TRADE_REQUIRED_OPTIONAL_OPTIONS)
|
125
127
|
|
126
|
-
|
127
|
-
|
128
|
-
|
128
|
+
open("#{GATEWAY_URL}?#{query_string(options)}").read
|
129
|
+
end
|
130
|
+
|
131
|
+
SINGLE_TRADE_QUERY_OPTIONS = %w( service partner _input_charset)
|
132
|
+
SINGLE_TRADE_QUERY_OPTIONAL_OPTIONS = %w( trade_no out_order_no )
|
133
|
+
def self.single_trade_query(options)
|
134
|
+
options = {
|
135
|
+
"service" => 'single_trade_query',
|
136
|
+
"_input_charset" => "utf-8",
|
137
|
+
"partner" => Alipay.pid,
|
138
|
+
}.merge(Utils.stringify_keys(options))
|
139
|
+
|
140
|
+
check_required_options(options, SINGLE_TRADE_QUERY_OPTIONS)
|
141
|
+
check_optional_options(options, SINGLE_TRADE_QUERY_OPTIONAL_OPTIONS)
|
129
142
|
|
130
143
|
open("#{GATEWAY_URL}?#{query_string(options)}").read
|
131
144
|
end
|
@@ -141,5 +154,9 @@ module Alipay
|
|
141
154
|
warn("Ailpay Warn: missing required option: #{name}") unless options.has_key?(name)
|
142
155
|
end
|
143
156
|
end
|
157
|
+
|
158
|
+
def self.check_optional_options(options, names)
|
159
|
+
warn("Ailpay Warn: must specify either #{names.join(' or ')}") if names.all? {|name| options[name].nil? }
|
160
|
+
end
|
144
161
|
end
|
145
162
|
end
|
data/lib/alipay/version.rb
CHANGED
data/test/alipay/service_test.rb
CHANGED
@@ -81,6 +81,58 @@ class Alipay::ServiceTest < Test::Unit::TestCase
|
|
81
81
|
)
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_single_trade_query
|
85
|
+
response_body = <<-EOF
|
86
|
+
<?xml version="1.0" encoding="utf-8"?>
|
87
|
+
<alipay>
|
88
|
+
<is_success>T</is_success>
|
89
|
+
<request>
|
90
|
+
<param name="trade_no">20150123123123</param>
|
91
|
+
<param name="_input_charset">utf-8</param>
|
92
|
+
<param name="service">single_trade_query</param>
|
93
|
+
<param name="partner">PARTNER</param>
|
94
|
+
</request>
|
95
|
+
<response>
|
96
|
+
<trade>
|
97
|
+
<additional_trade_status>DAEMON_CONFIRM_CLOSE</additional_trade_status>
|
98
|
+
<buyer_email>foo@gmail.com</buyer_email>
|
99
|
+
<buyer_id>BUYER_ID</buyer_id>
|
100
|
+
<discount>0.00</discount>
|
101
|
+
<flag_trade_locked>0</flag_trade_locked>
|
102
|
+
<gmt_close>2015-01-20 02:37:00</gmt_close>
|
103
|
+
<gmt_create>2015-01-20 02:17:00</gmt_create>
|
104
|
+
<gmt_last_modified_time>2015-01-20 02:37:00</gmt_last_modified_time>
|
105
|
+
<is_total_fee_adjust>F</is_total_fee_adjust>
|
106
|
+
<operator_role>B</operator_role>
|
107
|
+
<out_trade_no>OUT_TRADE_NO</out_trade_no>
|
108
|
+
<payment_type>1</payment_type>
|
109
|
+
<price>640.00</price>
|
110
|
+
<quantity>1</quantity>
|
111
|
+
<seller_email>bar@gmail.com</seller_email>
|
112
|
+
<seller_id>SELLER_ID</seller_id>
|
113
|
+
<subject>ORDER SUBJECT</subject>
|
114
|
+
<to_buyer_fee>0.00</to_buyer_fee>
|
115
|
+
<to_seller_fee>0.00</to_seller_fee>
|
116
|
+
<total_fee>640.00</total_fee>
|
117
|
+
<trade_no>TRADE_NO</trade_no>
|
118
|
+
<trade_status>TRADE_CLOSED</trade_status>
|
119
|
+
<use_coupon>F</use_coupon>
|
120
|
+
</trade></response>
|
121
|
+
<sign>SIGN</sign>
|
122
|
+
<sign_type>MD5</sign_type>
|
123
|
+
</alipay>
|
124
|
+
EOF
|
125
|
+
FakeWeb.register_uri(
|
126
|
+
:get,
|
127
|
+
%r|https://mapi\.alipay\.com/gateway\.do.*|,
|
128
|
+
:body => response_body
|
129
|
+
)
|
130
|
+
|
131
|
+
assert_equal response_body, Alipay::Service.single_trade_query(
|
132
|
+
:out_order_no => 'the-out-order-no'
|
133
|
+
)
|
134
|
+
end
|
135
|
+
|
84
136
|
def test_should_send_goods_confirm_by_platform
|
85
137
|
body = <<-EOF
|
86
138
|
<?xml version="1.0" encoding="utf-8"?>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alipay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rei
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|