pingpp 1.0.3 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 54fbeebdd4c17270d3bc56116fe6341d897c6b0c
4
- data.tar.gz: 7d86343dda0da20c99b85f254a47c7758fadd4d2
3
+ metadata.gz: 9e400717b5fb25538403e1276d4938a01b061956
4
+ data.tar.gz: b177462b2b6949988f9207a0f9b0f7032d052b13
5
5
  SHA512:
6
- metadata.gz: 39f3f1b787af4ed9f1eb2fca56fd5901a2ec098cc06f3fa0f1a1dbb1a0470a2807d4500e129cdff124539aa8326caeb4ec2bca45a980ed1be0d3489000bb3f01
7
- data.tar.gz: c698c9f1b189c50f6ba70a92337bab92ddb5e09be3005d907ea49ff7960dc278b35fd4db09f407d668452f729ef1a3d16d7fee897e1561bb72e7f95f9cf76f9f
6
+ metadata.gz: 4b86aca054bc33863c67b950131b7cc844f3abbbe5e2ada5e5de3242e5c047f6b8d08d6ea79f8eb8cf5e94aa3a7d56d9998263ae3f5ebcb0dcd865d4fce1e8b0
7
+ data.tar.gz: eb04bd61d5c1a8f8cf4a0fe0ebf624351864329155422a650d6e0dbb06bb91b2649504affc15c432b6ebb7e45b53ab6edc0973151241aae2e9b8efe268d6c5be
@@ -5,7 +5,7 @@ module Pingpp
5
5
  module CertificateBlacklist
6
6
 
7
7
  BLACKLIST = {
8
- "api.pingplusplus.com" => [
8
+ "api.pingxx.com" => [
9
9
  '05c0b3643694470a888c6e7feb5c9e24e823dc53',
10
10
  '5b7dc7fbc98d78bf76d4d4fa6f597a0c901fad5c',
11
11
  ]
@@ -39,7 +39,7 @@ module Pingpp
39
39
  raise APIConnectionError.new(
40
40
  "Invalid server certificate. You tried to connect to a server that" +
41
41
  "has a revoked SSL certificate, which means we cannot securely send" +
42
- "data to that server. Please email support@pingplusplus.com if you need" +
42
+ "data to that server. Please email support@pingxx.com if you need" +
43
43
  "help connecting to the correct API server."
44
44
  )
45
45
  end
@@ -1,9 +1,15 @@
1
1
  module Pingpp
2
2
  class Channel
3
- ALIPAY = "alipay"
4
- WECHAT = "wx"
5
- UPMP = "upmp"
3
+ ALIPAY = "alipay"
4
+ WECHAT = "wx"
5
+ WX = "wx" # Alias of WECHAT
6
+ UPMP = "upmp"
6
7
  ALIPAY_WAP = "alipay_wap"
7
- UPMP_WAP = "upmp_wap"
8
+ UPMP_WAP = "upmp_wap"
9
+ WX_PUB = "wx_pub"
10
+ BFB = "bfb"
11
+ BFB_WAP = "bfb_wap"
12
+ UPACP = "upacp"
13
+ UPACP_WAP = "upacp_wap"
8
14
  end
9
15
  end
@@ -1,3 +1,3 @@
1
1
  module Pingpp
2
- VERSION = '1.0.3'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,41 @@
1
+ module Pingpp
2
+ module WxPubOauth
3
+ def self.create_oauth_url_for_code(app_id, redirect_url, more_info = false)
4
+ query_parts = {
5
+ 'appid' => app_id,
6
+ 'redirect_uri' => redirect_url,
7
+ 'response_type' => 'code',
8
+ 'scope' => more_info ? 'snsapi_userinfo' : 'snsapi_base'
9
+ }
10
+ query_str = Pingpp.uri_encode(query_parts)
11
+ 'https://open.weixin.qq.com/connect/oauth2/authorize?' + query_str + '#wechat_redirect'
12
+ end
13
+
14
+ def self.get_openid(app_id, app_secret, code)
15
+ url = create_oauth_url_for_openid(app_id, app_secret, code)
16
+ request_opts = {
17
+ :url => url,
18
+ :verify_ssl => false,
19
+ :ssl_version => 'TLSv1',
20
+ :method => 'GET',
21
+ :headers => false,
22
+ :open_timeout => 30,
23
+ :timeout => 30
24
+ }
25
+ response = RestClient::Request.execute(request_opts)
26
+ response = JSON.parse(response.body)
27
+ response['openid']
28
+ end
29
+
30
+ def self.create_oauth_url_for_openid(app_id, app_secret, code)
31
+ query_parts = {
32
+ 'appid' => app_id,
33
+ 'secret' => app_secret,
34
+ 'code' => code,
35
+ 'grant_type' => 'authorization_code'
36
+ }
37
+ query_str = Pingpp.uri_encode(query_parts)
38
+ 'https://api.weixin.qq.com/sns/oauth2/access_token?' + query_str
39
+ end
40
+ end
41
+ end
data/lib/pingpp.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # Pingpp Ruby bindings
2
- # API spec at https://pingplusplus.com/document/api
2
+ # API spec at https://pingxx.com/document/api
3
3
  require 'cgi'
4
4
  require 'set'
5
5
  require 'openssl'
@@ -35,11 +35,14 @@ require 'pingpp/errors/api_connection_error'
35
35
  require 'pingpp/errors/invalid_request_error'
36
36
  require 'pingpp/errors/authentication_error'
37
37
 
38
+ # WxPubOauth
39
+ require 'pingpp/wx_pub_oauth'
40
+
38
41
  module Pingpp
39
42
  DEFAULT_CA_BUNDLE_PATH = File.dirname(__FILE__) + '/data/ca-certificates.crt'
40
- @api_base = 'https://api.pingplusplus.com'
43
+ @api_base = 'https://api.pingxx.com'
41
44
 
42
- @api_version = '2014-10-10'
45
+ @api_version = '2015-01-01'
43
46
 
44
47
  @ssl_bundle_path = DEFAULT_CA_BUNDLE_PATH
45
48
  @verify_ssl_certs = true
@@ -59,15 +62,15 @@ module Pingpp
59
62
  raise AuthenticationError.new('No API key provided. ' +
60
63
  'Set your API key using "Pingpp.api_key = <API-KEY>". ' +
61
64
  'You can generate API keys from the Pingpp web interface. ' +
62
- 'See https://pingplusplus.com/document/api for details, or email support@pingplusplus.com ' +
65
+ 'See https://pingxx.com/document/api for details, or email support@pingxx.com ' +
63
66
  'if you have any questions.')
64
67
  end
65
68
 
66
69
  if api_key =~ /\s/
67
70
  raise AuthenticationError.new('Your API key is invalid, as it contains ' +
68
71
  'whitespace. (HINT: You can double-check your API key from the ' +
69
- 'Pingpp web interface. See https://pingplusplus.com/document/api for details, or ' +
70
- 'email support@pingplusplus.com if you have any questions.)')
72
+ 'Pingpp web interface. See https://pingxx.com/document/api for details, or ' +
73
+ 'email support@pingxx.com if you have any questions.)')
71
74
  end
72
75
 
73
76
  request_opts = { :verify_ssl => false, :ssl_version => 'TLSv1' }
@@ -90,10 +93,10 @@ module Pingpp
90
93
  url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
91
94
  payload = nil
92
95
  else
93
- payload = uri_encode(params)
96
+ payload = JSON.generate(params)
94
97
  end
95
98
 
96
- request_opts.update(:headers => request_headers(api_key).update(headers),
99
+ request_opts.update(:headers => request_headers(api_key, method.to_s.downcase.to_sym == :post).update(headers),
97
100
  :method => method, :open_timeout => 30,
98
101
  :payload => payload, :url => url, :timeout => 80)
99
102
 
@@ -167,11 +170,11 @@ module Pingpp
167
170
  map { |k,v| "#{k}=#{Util.url_encode(v)}" }.join('&')
168
171
  end
169
172
 
170
- def self.request_headers(api_key)
173
+ def self.request_headers(api_key, is_post=false)
171
174
  headers = {
172
175
  :user_agent => "Pingpp/v1 RubyBindings/#{Pingpp::VERSION}",
173
176
  :authorization => "Bearer #{api_key}",
174
- :content_type => 'application/x-www-form-urlencoded'
177
+ :content_type => is_post ? 'application/json' : 'application/x-www-form-urlencoded'
175
178
  }
176
179
 
177
180
  headers[:pingplusplus_version] = api_version if api_version
@@ -242,7 +245,7 @@ module Pingpp
242
245
  def self.handle_restclient_error(e)
243
246
  connection_message = "Please check your internet connection and try again. " \
244
247
  "If this problem persists, you should check Pingpp's service status at " \
245
- "https://pingplusplus.com, or let us know at support@pingplusplus.com."
248
+ "https://pingxx.com, or let us know at support@pingxx.com."
246
249
 
247
250
  case e
248
251
  when RestClient::RequestTimeout
@@ -256,16 +259,16 @@ module Pingpp
256
259
  message = "Could not verify Pingpp's SSL certificate. " \
257
260
  "Please make sure that your network is not intercepting certificates. " \
258
261
  "(Try going to (#{@api_base}) in your browser.) " \
259
- "If this problem persists, let us know at support@pingplusplus.com."
262
+ "If this problem persists, let us know at support@pingxx.com."
260
263
 
261
264
  when SocketError
262
265
  message = "Unexpected error communicating when trying to connect to Pingpp. " \
263
266
  "You may be seeing this message because your DNS is not working. " \
264
- "To check, try running 'host pingplusplus.com' from the command line."
267
+ "To check, try running 'host pingxx.com' from the command line."
265
268
 
266
269
  else
267
270
  message = "Unexpected error communicating with Pingpp. " \
268
- "If this problem persists, let us know at support@pingplusplus.com."
271
+ "If this problem persists, let us know at support@pingxx.com."
269
272
 
270
273
  end
271
274
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pingpp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xufeng Weng
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-17 00:00:00.000000000 Z
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -126,10 +126,10 @@ dependencies:
126
126
  - - ">="
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
- description: PingPlusPlus is the easiest way to accept payments online. See https://pingplusplus.com
129
+ description: PingPlusPlus is the easiest way to accept payments online. See https://pingxx.com
130
130
  for details.
131
131
  email:
132
- - xufeng.weng@pingplusplus.com
132
+ - xufeng.weng@pingxx.com
133
133
  executables: []
134
134
  extensions: []
135
135
  extra_rdoc_files: []
@@ -155,7 +155,8 @@ files:
155
155
  - lib/pingpp/singleton_api_resource.rb
156
156
  - lib/pingpp/util.rb
157
157
  - lib/pingpp/version.rb
158
- homepage: https://pingplusplus.com/document/api
158
+ - lib/pingpp/wx_pub_oauth.rb
159
+ homepage: https://pingxx.com/document/api
159
160
  licenses:
160
161
  - MIT
161
162
  metadata: {}
@@ -175,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
176
  version: '0'
176
177
  requirements: []
177
178
  rubyforge_project:
178
- rubygems_version: 2.4.2
179
+ rubygems_version: 2.4.5
179
180
  signing_key:
180
181
  specification_version: 4
181
182
  summary: Ruby bindings for the PingPlusPlus API