pingpp 2.1.3 → 2.2.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/data/ca-certificates.crt +199 -280
  3. data/lib/pingpp/api_operations/delete.rb +9 -4
  4. data/lib/pingpp/app_based_resource.rb +27 -0
  5. data/lib/pingpp/balance_bonus.rb +14 -0
  6. data/lib/pingpp/balance_transaction.rb +9 -0
  7. data/lib/pingpp/balance_transfer.rb +10 -0
  8. data/lib/pingpp/batch_withdrawal.rb +11 -0
  9. data/lib/pingpp/channel.rb +8 -0
  10. data/lib/pingpp/coupon.rb +9 -0
  11. data/lib/pingpp/coupon_template.rb +29 -0
  12. data/lib/pingpp/order.rb +69 -0
  13. data/lib/pingpp/recharge.rb +36 -0
  14. data/lib/pingpp/royalty.rb +14 -0
  15. data/lib/pingpp/royalty_settlement.rb +11 -0
  16. data/lib/pingpp/royalty_template.rb +12 -0
  17. data/lib/pingpp/royalty_transaction.rb +9 -0
  18. data/lib/pingpp/settle_account.rb +12 -0
  19. data/lib/pingpp/singleton_app_based_resource.rb +26 -0
  20. data/lib/pingpp/sub_app.rb +12 -0
  21. data/lib/pingpp/sub_app_based_resource.rb +35 -0
  22. data/lib/pingpp/user.rb +9 -0
  23. data/lib/pingpp/user_based_resource.rb +35 -0
  24. data/lib/pingpp/util.rb +19 -1
  25. data/lib/pingpp/version.rb +1 -1
  26. data/lib/pingpp/withdrawal.rb +15 -0
  27. data/lib/pingpp.rb +37 -4
  28. data/test/balance_bonus_test.rb +51 -0
  29. data/test/balance_transaction_test.rb +19 -0
  30. data/test/balance_transfer_test.rb +55 -0
  31. data/test/batch_refund_test.rb +41 -0
  32. data/test/batch_transfer_test.rb +61 -0
  33. data/test/batch_withdrawal_test.rb +76 -0
  34. data/test/charge_test.rb +51 -0
  35. data/test/coupon_template_test.rb +68 -0
  36. data/test/coupon_test.rb +81 -0
  37. data/test/customs_test_bak.rb +31 -0
  38. data/test/order_test.rb +181 -0
  39. data/test/recharge_test.rb +106 -0
  40. data/test/refund_test.rb +32 -0
  41. data/test/royalty_settlement_test.rb +68 -0
  42. data/test/royalty_template_test.rb +102 -0
  43. data/test/royalty_test.rb +43 -0
  44. data/test/royalty_transaction_test.rb +24 -0
  45. data/test/settle_account_test.rb +41 -0
  46. data/test/sub_app_channel_test.rb +70 -0
  47. data/test/sub_app_test.rb +60 -0
  48. data/test/test_assistant.rb +35 -0
  49. data/test/test_data.rb +191 -0
  50. data/test/user_test.rb +42 -0
  51. data/test/withdrawal_test.rb +121 -0
  52. metadata +72 -7
  53. data/test/charge_reverse_test.rb +0 -84
  54. data/test/settle_account_tes.rb +0 -53
@@ -0,0 +1,106 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class RechargeTest < Test::Unit::TestCase
6
+ # 创建一笔充值 (recharge)
7
+ should "execute should return a new, fully executed recharge when passed correct parameters" do
8
+ order_no = Digest::MD5.hexdigest(Time.now.to_i.to_s)[0,12]
9
+
10
+ params = {
11
+ :user => get_user_id,
12
+ :charge => {
13
+ :order_no => order_no,
14
+ :channel => "alipay", # 支付渠道
15
+ :client_ip => "127.0.0.1", # 发起支付请求客户端的 IP 地址,格式为 IPV4,如: 127.0.0.1
16
+ :amount => 100, # 订单总金额, 人民币单位:分(如订单总金额为 1 元,此处请填 100)
17
+ :body => "Your Body",
18
+ :subject => "You Subject",
19
+ :extra => {} # 根据渠道填入参数 https://www.pingxx.com/api#支付渠道-extra-参数说明
20
+ },
21
+ :description => "充值描述"
22
+ }
23
+
24
+ o = Pingpp::Recharge.create(
25
+ params,
26
+ { :app => get_app_id } # App 信息
27
+ )
28
+
29
+ assert o.charge.order_no == params[:charge][:order_no]
30
+ assert o.app == get_app_id
31
+ assert o.object == "recharge"
32
+ assert o.kind_of?(Pingpp::Recharge)
33
+ assert o.charge.kind_of?(Pingpp::Charge)
34
+ end
35
+
36
+ # 查询一笔充值 (recharge)
37
+ should "return an existed recharge when passed correct id" do
38
+ o = Pingpp::Recharge.retrieve(
39
+ existed_recharge_id,
40
+ { :app => get_app_id } # App 信息
41
+ )
42
+
43
+ assert o.app == get_app_id
44
+ assert o.object == "recharge"
45
+ assert o.kind_of?(Pingpp::Recharge)
46
+ end
47
+
48
+ # 查询充值列表
49
+ should "return a list object of recharge" do
50
+ o = Pingpp::Recharge.list(
51
+ { :per_page => 3, :page => 1 },
52
+ { :app => get_app_id } # App 信息
53
+ )
54
+
55
+ assert o.kind_of?(Pingpp::ListObject)
56
+ assert o.data[0].kind_of?(Pingpp::Recharge)
57
+ end
58
+
59
+ # 查询 recharge 的退款列表
60
+ should "should return a refund list object of recharge" do
61
+ recharge_id, _ = existed_refund_id_of_recharge
62
+ o = Pingpp::Recharge.list_refunds(
63
+ recharge_id, # Recharge 对象 ID
64
+ { :per_page => 3, :page => 1 }, # 过滤参数,分页参数
65
+ { :app => get_app_id } # App 信息
66
+ )
67
+
68
+ assert o.kind_of?(Pingpp::ListObject)
69
+ assert o.data[0].kind_of?(Pingpp::Refund)
70
+ end
71
+
72
+ # 发起 recharge 的退款
73
+ should "return a new refund object of recharge" do
74
+ begin
75
+ o = Pingpp::Recharge.refund(
76
+ recharge_to_refund, # Recharge 对象 ID
77
+ {
78
+ # required.
79
+ :description => '退款信息',
80
+ },
81
+ { :app => get_app_id } # App 信息
82
+ )
83
+
84
+ assert o.object == 'refund'
85
+ assert o.kind_of?(Pingpp::Refund)
86
+ rescue => e
87
+ assert e.kind_of?(Pingpp::InvalidRequestError) || e.kind_of?(Pingpp::ChannelError)
88
+ assert e.message.include?("可退金额为 0") || e.message.include?("refundable amount is 0")
89
+ end
90
+ end
91
+
92
+ # 查询 recharge 的退款
93
+ should "should return a refund object of recharge" do
94
+ recharge_id, refund_id = existed_refund_id_of_recharge
95
+ o = Pingpp::Recharge.retrieve_refund(
96
+ recharge_id, # Recharge 对象 ID
97
+ refund_id, # Refund 对象 ID
98
+ { :app => get_app_id } # App 信息
99
+ )
100
+
101
+ assert o.object == 'refund'
102
+ assert o.id == refund_id
103
+ assert o.kind_of?(Pingpp::Refund)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RefundTest < Test::Unit::TestCase
5
+ should "execute should return a refund list when passed correct parameters" do
6
+ l = Pingpp::Refund.list(get_charge_id, {:limit => 3})
7
+
8
+ assert l.object == 'list'
9
+ assert l.data.count <= 3
10
+ end
11
+
12
+ should "execute should return a refund when passed correct parameters" do
13
+ ch_id = get_charge_id
14
+
15
+ r = Pingpp::Refund.create(ch_id, {:amount => 1, :description => 'Refund amount test.'})
16
+
17
+ assert r.object == 'refund'
18
+ assert r.charge == ch_id
19
+ end
20
+
21
+ should "execute should return an exist refund when passed correct charge id and refund id" do
22
+ re_id = get_refund_id
23
+ ch_id = get_charge_id
24
+
25
+ r = Pingpp::Refund.retrieve(ch_id, re_id)
26
+
27
+ assert r.object == 'refund'
28
+ assert r.id == re_id
29
+ assert r.charge == ch_id
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltySettlementTest < Test::Unit::TestCase
5
+ # 创建分润结算
6
+ should "return a royalty_settlement object when passed correct params" do
7
+ params = {
8
+ # 分润发起方所在的 App ID required|string
9
+ :payer_app => get_payer_app,
10
+
11
+ # 分润的方式 required|string,null; 余额 balance 或渠道名称 [alipay, wx_pub, unionpay, ...]
12
+ :method => "alipay",
13
+
14
+ # 分润创建时间 optional|hash
15
+ :created => {
16
+ :gte => 1504875000,
17
+ :lt => 1504885000
18
+ },
19
+ }
20
+
21
+ begin
22
+ o = Pingpp::RoyaltySettlement.create(params)
23
+
24
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
25
+ rescue => e
26
+ assert e.kind_of?(Pingpp::InvalidRequestError)
27
+ assert e.message.include?("无有效")
28
+ end
29
+ end
30
+
31
+ # 查询分润结算对象
32
+ should "return an existed royalty_settlement object when passed a correct id" do
33
+ o = Pingpp::RoyaltySettlement.retrieve(existed_royalty_settlement_id)
34
+
35
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
36
+ end
37
+
38
+ # 更新/取消分润结算对象
39
+ should "return an updated royalty_settlement object when passed a correct id" do
40
+ begin
41
+ o = Pingpp::RoyaltySettlement.update(
42
+ existed_royalty_settlement_id,
43
+ {
44
+ # 更新状态 required|string; canceled: 取消结算, pending: 确认结算
45
+ :status => 'canceled'
46
+ }
47
+ )
48
+
49
+ assert o.kind_of?(Pingpp::RoyaltySettlement)
50
+ rescue => e
51
+ assert e.kind_of?(Pingpp::InvalidRequestError) || e.kind_of?(Pingpp::ChannelError)
52
+ assert e.message.include?("状态错误")
53
+ end
54
+ end
55
+
56
+ # 查询分润结算对象列表
57
+ should "return a list object of royalty_settlement" do
58
+ o = Pingpp::RoyaltySettlement.list(
59
+ { :per_page => 3, :page => 1, :payer_app => get_payer_app }
60
+ )
61
+
62
+ assert o.kind_of?(Pingpp::ListObject)
63
+ if o.data.count > 0
64
+ assert o.data[0].kind_of?(Pingpp::RoyaltySettlement)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,102 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTemplateTest < Test::Unit::TestCase
5
+ # 创建分润模版
6
+ should "return a royalty_template object when passed correct parameters" do
7
+ params = {
8
+ # App ID required|string
9
+ :app => get_app_id,
10
+
11
+ # 描述信息 optional|string
12
+ :description => "TEMPLATE DESCRIPTION",
13
+
14
+ # 模版名称 optional|string
15
+ # :name => "TEMPLATE_NAME",
16
+
17
+ # 分润规则 required|hash
18
+ :rule => {
19
+ # 分润模式 required|string; rate: 按订单金额(包含优惠券金额)的比例, fixed: 固定金额
20
+ :royalty_mode => "rate",
21
+
22
+ # 分配模式 required|string; 指当订单确定的层级如果少于模板配置层级时,
23
+ # 模板中多余的分润金额是归属于收款方 `receipt_reserved` 还是服务方 `service_reserved`。
24
+ :allocation_mode => "receipt_reserved",
25
+
26
+ # 退分润模式 required|string; no_refund: 退款时不退分润, proportional: 按比例退分润, full_refund: 一旦退款分润全退
27
+ :refund_mode => "no_refund",
28
+
29
+ # 分润数据列表 required|array
30
+ :data => [
31
+ {
32
+ :level => 0,
33
+ :value => 10
34
+ },
35
+ {
36
+ :level => 1,
37
+ :value => 20
38
+ }
39
+ ],
40
+ },
41
+ }
42
+
43
+ o = Pingpp::RoyaltyTemplate.create(params)
44
+
45
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
46
+ end
47
+
48
+ # 查询分润模版
49
+ should "return an existed royalty_template object when passed a correct id" do
50
+ o = Pingpp::RoyaltyTemplate.retrieve(existed_royalty_template_id)
51
+
52
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
53
+ end
54
+
55
+ # 查询分润模版列表
56
+ should "return a list object of royalty_template" do
57
+ o = Pingpp::RoyaltyTemplate.list(
58
+ { :per_page => 3, :page => 1 }
59
+ )
60
+
61
+ assert o.kind_of?(Pingpp::ListObject)
62
+ assert o.data[0].kind_of?(Pingpp::RoyaltyTemplate)
63
+ end
64
+
65
+ # 更新分润模版
66
+ should "return a updated royalty_template" do
67
+ params = {
68
+ :description => "New description #{Time.now.to_i.to_s}",
69
+ :rule => {
70
+ :royalty_mode => "rate",
71
+ :allocation_mode => "receipt_reserved",
72
+ :refund_mode => "no_refund",
73
+ :data => [
74
+ { :level => 0, :value => 20 },
75
+ { :level => 1, :value => 30 }
76
+ ],
77
+ },
78
+ }
79
+ o = Pingpp::RoyaltyTemplate.update(
80
+ existed_royalty_template_id,
81
+ params
82
+ )
83
+
84
+ assert o.kind_of?(Pingpp::RoyaltyTemplate)
85
+ assert o.description == params[:description]
86
+ assert o.rule.data[0].value == params[:rule][:data][0][:value]
87
+ end
88
+
89
+ # 删除分润模版
90
+ should "return deleted object with royalty template id" do
91
+ begin
92
+ o = Pingpp::RoyaltyTemplate.delete(royalty_template_id_to_delete)
93
+
94
+ assert o.id == royalty_template_id_to_delete
95
+ assert o.deleted
96
+ rescue => e
97
+ assert e.kind_of?(Pingpp::InvalidRequestError)
98
+ assert e.message.include?("找不到分润模板对象")
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTest < Test::Unit::TestCase
5
+ # 批量更新分润对象
6
+ should "return a royalty list object when passed correct ids" do
7
+ params = {
8
+ # 分润 ID 列表 required|array
9
+ :ids => get_royalty_ids_to_update,
10
+
11
+ # 描述信息 optional|string
12
+ :description => "DESCRIPTION",
13
+
14
+ # optional|string
15
+ # :method => "manual",
16
+ }
17
+
18
+ o = Pingpp::Royalty.batch_update(params)
19
+
20
+ assert o.kind_of?(Pingpp::ListObject)
21
+ assert o.data[0].kind_of?(Pingpp::Royalty)
22
+ end
23
+
24
+ # 查询分润对象
25
+ should "return an existed royalty object when passed a correct id" do
26
+ o = Pingpp::Royalty.retrieve(existed_royalty_id)
27
+
28
+ assert o.kind_of?(Pingpp::Royalty)
29
+ end
30
+
31
+ # 查询分润对象列表
32
+ should "return a list object of royalties" do
33
+ o = Pingpp::Royalty.list(
34
+ { :per_page => 3, :page => 1 }
35
+ )
36
+
37
+ assert o.kind_of?(Pingpp::ListObject)
38
+ if o.data.count > 0
39
+ assert o.data[0].kind_of?(Pingpp::Royalty)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,24 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class RoyaltyTransactionTest < Test::Unit::TestCase
5
+ # 查询分润结算明细
6
+ should "return an existed royalty_transaction object when passed a correct id" do
7
+ o = Pingpp::RoyaltyTransaction.retrieve(existed_royalty_transaction_id)
8
+
9
+ assert o.kind_of?(Pingpp::RoyaltyTransaction)
10
+ end
11
+
12
+ # 查询分润结算明细列表
13
+ should "return a list object of royalty_transaction" do
14
+ o = Pingpp::RoyaltyTransaction.list(
15
+ { :per_page => 3, :page => 1 }
16
+ )
17
+
18
+ assert o.kind_of?(Pingpp::ListObject)
19
+ if o.data.count > 0
20
+ assert o.data[0].kind_of?(Pingpp::RoyaltyTransaction)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class SettleAccountTest < Test::Unit::TestCase
6
+ should "settle_account create" do
7
+ params = {
8
+ :channel => 'wx_pub',
9
+ :recipient => {
10
+ :account => 'oazpsj-ejmwkkskuggaj2h2kaz8ah'
11
+ }
12
+ }
13
+
14
+ u = Pingpp::SettleAccount.create(params, {:user => get_user_id})
15
+
16
+ assert u.object == 'settle_account'
17
+ assert u.channel == params[:channel]
18
+ end
19
+
20
+ should "settle_account retrieve" do
21
+ u = Pingpp::SettleAccount.retrieve('320217041815593200000501', {:user => get_user_id})
22
+
23
+ assert u.object == 'settle_account'
24
+ assert u.id == '320217041815593200000501'
25
+ end
26
+
27
+ should "settle_account list" do
28
+ l = Pingpp::SettleAccount.list({:per_page => 3}, {:user => get_user_id})
29
+
30
+ assert l.object == 'list'
31
+ assert l.data.count <= 3
32
+ end
33
+
34
+ should "settle_account delete" do
35
+ d = Pingpp::SettleAccount.delete('320217080118072300000201', {}, {:user => get_user_id})
36
+
37
+ assert d.deleted
38
+ assert d.id == '320217080118072300000201'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+
3
+ module Pingpp
4
+ class SubAppChannelTest < Test::Unit::TestCase
5
+ # 创建子商户渠道参数 (仅支持 livemode)
6
+ should "sub_app channel create" do
7
+ params = {
8
+ :channel => "bfb",
9
+ :params => {
10
+ "fee_rate" => 60,
11
+ "bfb_sp" => "1600330402",
12
+ "bfb_key" => "c832cGsdBdErycpTxs3KMQ3cQkawZvzC"
13
+ },
14
+ :description => "channel info"
15
+ }
16
+
17
+ channel_info = Pingpp::Channel.create(params, {:sub_app => get_sub_app_id})
18
+
19
+ assert channel_info.object == 'channel'
20
+ assert channel_info.description == params[:description]
21
+ assert channel_info.params['fee_rate'] == params[:params]["fee_date"]
22
+ assert channel_info.params['bfb_sp'] == params[:params]["bfb_sp"]
23
+ assert channel_info.params['bfb_key'] == params[:params]["bfb_key"]
24
+ end
25
+
26
+ # 查询子商户渠道参数 (仅支持 livemode)
27
+ should "sub_app channel retrieve" do
28
+ channel_info = Pingpp::Channel.retrieve(
29
+ "bfb",
30
+ {
31
+ :sub_app => get_sub_app_id
32
+ }
33
+ )
34
+
35
+ assert channel_info.object == 'channel'
36
+ end
37
+
38
+ # 更新子商户渠道参数 (仅支持 livemode)
39
+ should "sub_app channel update" do
40
+ new_description = 'Shanghai ' + Time.now.iso8601
41
+ channel_info = Pingpp::Channel.update(
42
+ "bfb",
43
+ {
44
+ :description => new_description,
45
+ :params => {
46
+ "fee_rate" => 60,
47
+ "bfb_sp" => "1600330404",
48
+ "bfb_key" => "c832cGscpTxs3KMQ3cQkdBdEryawZvzC"
49
+ }
50
+ },
51
+ { :sub_app => get_sub_app_id }
52
+ )
53
+
54
+ assert channel_info.object == 'channel'
55
+ assert channel_info.description == new_description
56
+ end
57
+
58
+ # 删除子商户渠道参数 (仅支持 livemode)
59
+ should "sub_app channel delete" do
60
+ channel_info = Pingpp::Channel.delete(
61
+ "bfb",
62
+ {}
63
+ { :sub_app => get_sub_app_id }
64
+ )
65
+
66
+ assert o.deleted
67
+ assert o.channel == "bfb"
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,60 @@
1
+ require File.expand_path('../test_assistant', __FILE__)
2
+ require "digest/md5"
3
+
4
+ module Pingpp
5
+ class SubAppTest < Test::Unit::TestCase
6
+ # 创建子商户 sub_app
7
+ should "sub_app create" do
8
+ user_id = Digest::MD5.hexdigest(Time.now.to_i.to_s)[0,12]
9
+ display_name = 'sub_app_' + user_id
10
+
11
+ params = {
12
+ :display_name => display_name,
13
+ :user => user_id
14
+ }
15
+
16
+ sub_app = Pingpp::SubApp.create(params)
17
+
18
+ assert sub_app.kind_of?(Pingpp::SubApp)
19
+ assert sub_app.object == 'sub_app'
20
+ assert sub_app.user == user_id
21
+ assert sub_app.display_name == display_name
22
+ end
23
+
24
+ # 查询 sub_app
25
+ should "sub_app retrieve" do
26
+ sub_app = Pingpp::SubApp.retrieve(get_sub_app_id)
27
+
28
+ assert sub_app.object == 'sub_app'
29
+ assert sub_app.id == get_sub_app_id
30
+ end
31
+
32
+ # 查询 sub_app 列表
33
+ should "sub_app list" do
34
+ l = Pingpp::SubApp.list(:per_page => 3)
35
+
36
+ assert l.object == 'list'
37
+ assert l.data.count <= 3
38
+ assert l.data[0].kind_of?(Pingpp::SubApp)
39
+ end
40
+
41
+ # 更新 sub_app
42
+ should "sub_app update" do
43
+ new_description = 'Shanghai ' + Time.now.iso8601
44
+ sub_app = Pingpp::SubApp.update(get_sub_app_id, {:description => new_description})
45
+
46
+ assert sub_app.kind_of?(Pingpp::SubApp)
47
+ assert sub_app.object == 'sub_app'
48
+ assert sub_app.id == get_sub_app_id
49
+ assert sub_app.description == new_description
50
+ end
51
+
52
+ # 删除 sub_app
53
+ should "sub_app delete" do
54
+ sub_app = Pingpp::SubApp.delete(sub_app_id_to_delete)
55
+
56
+ assert sub_app.deleted
57
+ assert sub_app.id == sub_app_id_to_delete
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,35 @@
1
+ require 'pingpp'
2
+ require 'test/unit'
3
+ require 'mocha/setup'
4
+ require 'stringio'
5
+ require 'shoulda/context'
6
+ require File.expand_path('../test_data', __FILE__)
7
+
8
+ module Pingpp
9
+ @mock_rest_client = nil
10
+
11
+ def self.mock_rest_client=(mock_client)
12
+ @mock_rest_client = mock_client
13
+ end
14
+ end
15
+
16
+ class Test::Unit::TestCase
17
+ include Pingpp::TestData
18
+ include Mocha
19
+
20
+ setup do
21
+ @mock = mock
22
+ Pingpp.mock_rest_client = @mock
23
+ Pingpp.api_key = get_api_key
24
+
25
+ Pingpp.private_key_path = File.expand_path('../../example/your_rsa_private_key.pem', __FILE__)
26
+
27
+ # 使用账户系统部分接口需要设置该参数,调用相关方法时可传 opts[:app] 参数来覆盖该值
28
+ Pingpp.app_id = get_app_id
29
+ end
30
+
31
+ teardown do
32
+ Pingpp.mock_rest_client = nil
33
+ Pingpp.api_key = nil
34
+ end
35
+ end