pindo 4.7.1 → 4.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pindo/base/aeshelper.rb +4 -5
- data/lib/pindo/base/githelper.rb +0 -1
- data/lib/pindo/client/aws3sclient.rb +2 -2
- data/lib/pindo/client/giteeclient.rb +2 -2
- data/lib/pindo/command/appstore/iap.rb +1 -1
- data/lib/pindo/command/deploy/build.rb +70 -4
- data/lib/pindo/command/deploy/cert.rb +48 -51
- data/lib/pindo/command/deploy/iap.rb +2 -4
- data/lib/pindo/command/{utils → dev}/applovin.rb +2 -2
- data/lib/pindo/command/dev/autobuild.rb +6 -9
- data/lib/pindo/command/dev/autoresign.rb +10 -10
- data/lib/pindo/command/dev/build.rb +5 -5
- data/lib/pindo/command/dev.rb +2 -6
- data/lib/pindo/command/ipa/autoresign.rb +0 -1
- data/lib/pindo/command/ipa/import.rb +44 -8
- data/lib/pindo/command/ipa/output.rb +2 -2
- data/lib/pindo/command/pgyer/download.rb +2 -2
- data/lib/pindo/command/pgyer/resign.rb +21 -19
- data/lib/pindo/command/pgyer/upload.rb +34 -6
- data/lib/pindo/command/utils/renewcert.rb +158 -0
- data/lib/pindo/command/utils.rb +1 -1
- data/lib/pindo/module/appstore/appstore_in_app_purchase.rb +239 -169
- data/lib/pindo/module/cert/certhelper.rb +18 -23
- data/lib/pindo/module/cert/xcodecerthelper.rb +37 -3
- data/lib/pindo/module/pgyer/pgyerhelper.rb +36 -11
- data/lib/pindo/module/xcode/xcodeappconfig.rb +5 -4
- data/lib/pindo/module/xcode/xcodebuildhelper.rb +40 -37
- data/lib/pindo/module/xcode/xcodereshandler.rb +40 -12
- data/lib/pindo/version.rb +1 -1
- metadata +6 -6
- data/lib/pindo/command/dev/renewcert.rb +0 -142
@@ -8,8 +8,8 @@ module Pindo
|
|
8
8
|
module AppStoreInAppPurchase
|
9
9
|
|
10
10
|
def get_price_tier_dict
|
11
|
-
|
12
|
-
iap_tier_file = File.join(File.expand_path('./', __dir__), 'iap_tier.json')
|
11
|
+
|
12
|
+
iap_tier_file = File.join(File.expand_path('./', __dir__), 'iap_tier.json')
|
13
13
|
iap_tier_json = JSON.parse(File.read(iap_tier_file))
|
14
14
|
|
15
15
|
return iap_tier_json
|
@@ -41,14 +41,14 @@ module Pindo
|
|
41
41
|
iap_item["localizations_id"] = temp_item[:id]
|
42
42
|
end
|
43
43
|
if !purchase_item[:relationships][:app_store_review_screenshot].nil? && !purchase_item[:relationships][:app_store_review_screenshot][:data].nil? && !purchase_item[:relationships][:app_store_review_screenshot][:data][:id].nil?
|
44
|
-
iap_item["review_screenshot_id"] = purchase_item[:relationships][:app_store_review_screenshot][:data][:id]
|
44
|
+
iap_item["review_screenshot_id"] = purchase_item[:relationships][:app_store_review_screenshot][:data][:id]
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
if !iap_item["localizations_id"].nil? && !in_app_purchases_response.nil? && !in_app_purchases_response[:included].nil?
|
48
48
|
localizations_item = in_app_purchases_response[:included].find { |item| item[:type].eql?("inAppPurchaseLocalizations") && item[:id].eql?(iap_item["localizations_id"])}
|
49
49
|
|
50
50
|
iap_item["display_name"] = localizations_item[:attributes][:name]
|
51
|
-
iap_item["description"] = localizations_item[:attributes][:description]
|
51
|
+
iap_item["description"] = localizations_item[:attributes][:description]
|
52
52
|
end
|
53
53
|
|
54
54
|
iap_item["review_screenshot"] = nil
|
@@ -57,14 +57,14 @@ module Pindo
|
|
57
57
|
# if !iap_item["review_screenshot_id"].nil? && !in_app_purchases_response.nil? && !in_app_purchases_response[:included].nil?
|
58
58
|
# iap_item = in_app_purchases_response[:included].find { |item| item[:type].eql?("inAppPurchaseAppStoreReviewScreenshots") && item[:id].eql?(iap_item["review_screenshot_id"])}
|
59
59
|
# end
|
60
|
-
|
60
|
+
|
61
61
|
iap_item["price"] = get_purchase_item_price(appstore_client:appstore_client, in_app_purchase_id:purchase_item[:id])
|
62
62
|
|
63
63
|
iap_item.delete("localizations_id")
|
64
64
|
iap_item.delete("review_screenshot_id")
|
65
65
|
in_app_purchase_items << iap_item
|
66
66
|
end
|
67
|
-
end
|
67
|
+
end
|
68
68
|
|
69
69
|
in_app_purchase_items.sort! { | itema, itemb | itema["product_id"] <=> itemb["product_id"]}
|
70
70
|
|
@@ -112,14 +112,14 @@ module Pindo
|
|
112
112
|
app_sharedsecrets_item = post_result_data["data"]
|
113
113
|
# puts JSON.pretty_generate(app_sharedsecrets_item)
|
114
114
|
end
|
115
|
-
end
|
115
|
+
end
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
if !app_sharedsecrets_item.nil?
|
119
119
|
# puts JSON.pretty_generate(app_sharedsecrets_item)
|
120
120
|
scecrets_id = app_sharedsecrets_item["attributes"]["secret"]
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
rescue => err
|
124
124
|
puts err
|
125
125
|
puts "获取App Shared Secret失败!"
|
@@ -144,7 +144,7 @@ module Pindo
|
|
144
144
|
purchase_item["purchase_id"] = iap_item[:id]
|
145
145
|
purchase_item["state"] = iap_item[:attributes][:state]
|
146
146
|
end
|
147
|
-
end
|
147
|
+
end
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
@@ -153,22 +153,23 @@ module Pindo
|
|
153
153
|
|
154
154
|
puts "购买项:" + purchase_item["product_id"]
|
155
155
|
if purchase_item["purchase_id"].nil?
|
156
|
-
create_purchase_item(appstore_client:appstore_client, app_id:app_id, purchase_item:purchase_item)
|
156
|
+
create_purchase_item(appstore_client:appstore_client, app_id:app_id, purchase_item:purchase_item)
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
if !purchase_item["purchase_id"].nil?
|
160
160
|
in_app_purchase_id = purchase_item["purchase_id"]
|
161
161
|
|
162
162
|
if !purchase_item["state"].nil? && purchase_item["state"].to_s.eql?("APPROVED")
|
163
163
|
puts " 购买项已经上线, 只能修改价格"
|
164
|
-
create_purchase_item_price(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
164
|
+
create_purchase_item_price(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
165
165
|
else
|
166
166
|
sleep(1)
|
167
|
-
update_purchase_item_name(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
168
|
-
|
167
|
+
update_purchase_item_name(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
168
|
+
update_purchase_item_territory_availability(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
169
|
+
create_purchase_item_price(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
169
170
|
upload_purchase_item_screenshots(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
170
|
-
create_purchase_item_localization(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
171
|
-
update_purchase_item_name(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
171
|
+
create_purchase_item_localization(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
172
|
+
update_purchase_item_name(appstore_client:appstore_client, in_app_purchase_id:in_app_purchase_id, purchase_item:purchase_item)
|
172
173
|
|
173
174
|
end
|
174
175
|
end
|
@@ -187,27 +188,26 @@ module Pindo
|
|
187
188
|
name:purchase_item["reference_name"],
|
188
189
|
product_id:purchase_item["product_id"],
|
189
190
|
in_app_purchase_type:purchase_item["in_app_purchase_type"],
|
190
|
-
available_in_all_territories:true,
|
191
191
|
review_note:purchase_item["review_note"],
|
192
192
|
relationships: {
|
193
193
|
app:{
|
194
194
|
data:{
|
195
|
-
id: appstore_app_id,
|
195
|
+
id: appstore_app_id,
|
196
196
|
type: 'apps'
|
197
197
|
}
|
198
198
|
}
|
199
199
|
}
|
200
200
|
)
|
201
|
-
|
201
|
+
|
202
202
|
if !response.nil? && !response[:data].nil? && !response[:data][:id].nil?
|
203
203
|
|
204
204
|
purchase_id = !response[:data][:id]
|
205
205
|
purchase_item["purchase_id"] = response[:data][:id]
|
206
206
|
return purchase_id
|
207
|
-
else !response.nil? && !response[:errors].nil?
|
207
|
+
else !response.nil? && !response[:errors].nil?
|
208
208
|
# puts JSON.pretty_generate(response)
|
209
209
|
response[:errors].each do |error_item|
|
210
|
-
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
210
|
+
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
211
211
|
err_msg = " !!!!!" + purchase_item["product_id"] + " 购买项创建失败!!!, Reference Name重复!!!"
|
212
212
|
raise Informative, err_msg
|
213
213
|
end
|
@@ -223,12 +223,11 @@ module Pindo
|
|
223
223
|
end
|
224
224
|
|
225
225
|
def update_purchase_item_name(appstore_client:nil, in_app_purchase_id:nil, purchase_item:nil)
|
226
|
-
|
226
|
+
|
227
227
|
puts " 更新Reference Name"
|
228
228
|
begin
|
229
229
|
response = appstore_client.update_in_app_purchase(
|
230
230
|
name:purchase_item["reference_name"],
|
231
|
-
available_in_all_territories:true,
|
232
231
|
review_note:purchase_item["review_note"],
|
233
232
|
id:in_app_purchase_id
|
234
233
|
)
|
@@ -238,10 +237,46 @@ module Pindo
|
|
238
237
|
end
|
239
238
|
end
|
240
239
|
|
240
|
+
def update_purchase_item_territory_availability(appstore_client:nil, in_app_purchase_id:nil, purchase_item:nil)
|
241
|
+
|
242
|
+
puts " 设置Territory Availability"
|
243
|
+
response = appstore_client.list_all_availability(
|
244
|
+
limit:200
|
245
|
+
)
|
246
|
+
# puts JSON.pretty_generate(response)
|
247
|
+
|
248
|
+
availableTerritories_data = []
|
249
|
+
if !response.nil? && !response[:data].nil?
|
250
|
+
response[:data].each do |territory_item|
|
251
|
+
new_territory_item = {}
|
252
|
+
new_territory_item["id"] = territory_item[:id]
|
253
|
+
new_territory_item["type"] = territory_item[:type]
|
254
|
+
availableTerritories_data << new_territory_item
|
255
|
+
end
|
256
|
+
end
|
241
257
|
|
242
|
-
|
258
|
+
response = appstore_client.modify_in_app_purchase_territory_availablity(
|
259
|
+
available_in_new_territories:true,
|
260
|
+
relationships: {
|
261
|
+
inAppPurchase:{
|
262
|
+
data:{
|
263
|
+
id: in_app_purchase_id,
|
264
|
+
type: 'inAppPurchases'
|
265
|
+
}
|
266
|
+
},
|
267
|
+
availableTerritories:{
|
268
|
+
data:availableTerritories_data
|
269
|
+
}
|
270
|
+
}
|
271
|
+
)
|
272
|
+
|
273
|
+
# puts JSON.pretty_generate(response)
|
243
274
|
|
244
|
-
|
275
|
+
end
|
276
|
+
|
277
|
+
def create_purchase_item_localization(appstore_client:nil, in_app_purchase_id:nil, purchase_item:nil)
|
278
|
+
|
279
|
+
puts " 更新Display Name"
|
245
280
|
begin
|
246
281
|
|
247
282
|
response = appstore_client.list_in_app_purchase_all_localizations(
|
@@ -262,7 +297,7 @@ module Pindo
|
|
262
297
|
purchase_item["localization"][locale]["display_name"] = purchase_item["localization"][locale]["display_name"] || display_name
|
263
298
|
purchase_item["localization"][locale]["description"] = purchase_item["localization"][locale]["description"] || description
|
264
299
|
end
|
265
|
-
|
300
|
+
|
266
301
|
end
|
267
302
|
|
268
303
|
|
@@ -295,7 +330,7 @@ module Pindo
|
|
295
330
|
)
|
296
331
|
|
297
332
|
# puts JSON.pretty_generate(response)
|
298
|
-
|
333
|
+
|
299
334
|
end
|
300
335
|
|
301
336
|
end
|
@@ -377,7 +412,7 @@ module Pindo
|
|
377
412
|
id: in_app_purchase_id
|
378
413
|
}
|
379
414
|
}
|
380
|
-
},
|
415
|
+
},
|
381
416
|
included: [
|
382
417
|
{
|
383
418
|
type: 'inAppPurchasePrices',
|
@@ -403,7 +438,7 @@ module Pindo
|
|
403
438
|
]
|
404
439
|
)
|
405
440
|
end
|
406
|
-
|
441
|
+
|
407
442
|
rescue => err
|
408
443
|
puts "创建价格失败: " + purchase_item["product_id"]
|
409
444
|
puts err
|
@@ -427,16 +462,16 @@ module Pindo
|
|
427
462
|
need_upload_screenshot = true
|
428
463
|
|
429
464
|
if !response_iap_screenshot[:data].nil? && !response_iap_screenshot[:data][:attributes].nil? && !response_iap_screenshot[:data][:attributes][:asset_delivery_state].nil? && !response_iap_screenshot[:data][:attributes][:asset_delivery_state][:state].nil?
|
430
|
-
|
465
|
+
|
431
466
|
if response_iap_screenshot[:data][:attributes][:asset_delivery_state][:state].to_s.eql?("COMPLETE")
|
432
|
-
|
467
|
+
|
433
468
|
if !response_iap_screenshot[:data].nil? && !response_iap_screenshot[:data][:attributes].nil? && !response_iap_screenshot[:data][:attributes][:source_file_checksum].nil?
|
434
469
|
|
435
470
|
if checksum.to_s.eql?(response_iap_screenshot[:data][:attributes][:source_file_checksum].to_s)
|
436
471
|
|
437
472
|
puts " 有截屏,截屏未修改,无需重新上传"
|
438
473
|
need_upload_screenshot = false
|
439
|
-
|
474
|
+
|
440
475
|
end
|
441
476
|
end
|
442
477
|
end
|
@@ -460,13 +495,13 @@ module Pindo
|
|
460
495
|
relationships: {
|
461
496
|
inAppPurchaseV2:{
|
462
497
|
data:{
|
463
|
-
id: in_app_purchase_id,
|
498
|
+
id: in_app_purchase_id,
|
464
499
|
type: 'inAppPurchases'
|
465
500
|
}
|
466
501
|
}
|
467
502
|
}
|
468
503
|
)
|
469
|
-
|
504
|
+
|
470
505
|
# puts JSON.pretty_generate(response_iap_screenshot)
|
471
506
|
upload_id = response_iap_screenshot[:data][:id]
|
472
507
|
upload_operations = response_iap_screenshot[:data][:attributes][:upload_operations]
|
@@ -481,7 +516,7 @@ module Pindo
|
|
481
516
|
res = conn.put(upload_operation[:url], bytes[offset, length], headers)
|
482
517
|
end
|
483
518
|
|
484
|
-
|
519
|
+
|
485
520
|
|
486
521
|
in_app_purchase = appstore_client.update_in_app_purchase_app_store_review_screenshot(
|
487
522
|
id:upload_id,
|
@@ -495,7 +530,7 @@ module Pindo
|
|
495
530
|
puts " 存在图片,无需上传...."
|
496
531
|
end
|
497
532
|
|
498
|
-
|
533
|
+
|
499
534
|
|
500
535
|
rescue => err
|
501
536
|
puts err
|
@@ -556,38 +591,38 @@ module Pindo
|
|
556
591
|
|
557
592
|
puts
|
558
593
|
puts "**已存在订阅组的数目** : #{subscription_groups_response[:data].size}"
|
559
|
-
puts
|
594
|
+
puts
|
560
595
|
|
561
596
|
subscription_groups_response[:data].each do |old_subscription_group_item|
|
562
597
|
subscription_group_items.each do |new_subscription_group_item|
|
563
598
|
if !old_subscription_group_item[:attributes].nil? && old_subscription_group_item[:attributes][:reference_name].to_s.eql?(new_subscription_group_item["group_reference_name"])
|
564
599
|
new_subscription_group_item["group_id"] = old_subscription_group_item[:id]
|
565
600
|
end
|
566
|
-
end
|
601
|
+
end
|
567
602
|
end
|
568
603
|
end
|
569
604
|
|
570
605
|
subscription_group_items.each do |new_subscription_group_item|
|
571
606
|
|
572
607
|
if new_subscription_group_item["group_id"].nil?
|
573
|
-
if subscription_groups_response[:data].size > 0
|
608
|
+
if subscription_groups_response[:data].size > 0
|
574
609
|
puts
|
575
610
|
answer = agree("请确认要创建新的Subscription Group(Y/n):")
|
576
611
|
unless answer
|
577
612
|
raise Informative, "修改iap.json文件 !!! group_reference_name不一致会创建新的Subscription Group !!!"
|
578
|
-
end
|
613
|
+
end
|
579
614
|
end
|
580
|
-
create_subscription_group_item(appstore_client:appstore_client, app_id:app_id, subscription_group_item:new_subscription_group_item)
|
615
|
+
create_subscription_group_item(appstore_client:appstore_client, app_id:app_id, subscription_group_item:new_subscription_group_item)
|
581
616
|
end
|
582
|
-
|
617
|
+
|
583
618
|
if !new_subscription_group_item["group_id"].nil?
|
584
619
|
|
585
620
|
subscription_group_id = new_subscription_group_item["group_id"]
|
586
621
|
|
587
|
-
create_subscription_group_localization(appstore_client:appstore_client, subscription_group_id:new_subscription_group_item["group_id"], subscription_group_item:new_subscription_group_item)
|
622
|
+
create_subscription_group_localization(appstore_client:appstore_client, subscription_group_id:new_subscription_group_item["group_id"], subscription_group_item:new_subscription_group_item)
|
588
623
|
sleep(1)
|
589
624
|
subscription_items = new_subscription_group_item["subscription_items"]
|
590
|
-
create_subscription_items(appstore_client:appstore_client, subscription_group_id:subscription_group_id, subscription_items:subscription_items)
|
625
|
+
create_subscription_items(appstore_client:appstore_client, subscription_group_id:subscription_group_id, subscription_items:subscription_items)
|
591
626
|
|
592
627
|
end
|
593
628
|
end
|
@@ -595,7 +630,7 @@ module Pindo
|
|
595
630
|
|
596
631
|
end
|
597
632
|
|
598
|
-
def create_subscription_group_item(appstore_client:nil, app_id:nil, subscription_group_item:nil)
|
633
|
+
def create_subscription_group_item(appstore_client:nil, app_id:nil, subscription_group_item:nil)
|
599
634
|
|
600
635
|
begin
|
601
636
|
group_response = appstore_client.create_subscription_group(
|
@@ -603,7 +638,7 @@ module Pindo
|
|
603
638
|
relationships: {
|
604
639
|
app:{
|
605
640
|
data:{
|
606
|
-
id: app_id,
|
641
|
+
id: app_id,
|
607
642
|
type: 'apps'
|
608
643
|
}
|
609
644
|
}
|
@@ -615,10 +650,10 @@ module Pindo
|
|
615
650
|
|
616
651
|
end
|
617
652
|
|
618
|
-
def create_subscription_group_localization(appstore_client:nil, subscription_group_id:nil, subscription_group_item:nil)
|
653
|
+
def create_subscription_group_localization(appstore_client:nil, subscription_group_id:nil, subscription_group_item:nil)
|
619
654
|
begin
|
620
655
|
|
621
|
-
|
656
|
+
|
622
657
|
response = appstore_client.list_all_subscription_group_localizations(
|
623
658
|
id:subscription_group_id,
|
624
659
|
limit:200
|
@@ -638,7 +673,7 @@ module Pindo
|
|
638
673
|
subscription_group_item["localization"][locale]["group_display_name"] = subscription_group_item["localization"][locale]["group_display_name"] || group_display_name
|
639
674
|
subscription_group_item["localization"][locale]["custom_app_name"] = subscription_group_item["localization"][locale]["custom_app_name"] || custom_app_name
|
640
675
|
end
|
641
|
-
|
676
|
+
|
642
677
|
end
|
643
678
|
|
644
679
|
|
@@ -671,10 +706,10 @@ module Pindo
|
|
671
706
|
}
|
672
707
|
)
|
673
708
|
# puts JSON.pretty_generate(response)
|
674
|
-
|
709
|
+
|
675
710
|
end
|
676
711
|
|
677
|
-
|
712
|
+
|
678
713
|
|
679
714
|
end
|
680
715
|
|
@@ -687,11 +722,11 @@ module Pindo
|
|
687
722
|
|
688
723
|
end
|
689
724
|
|
690
|
-
|
691
|
-
def get_subscription_items(appstore_client:nil, subscription_group_id:nil)
|
725
|
+
|
726
|
+
def get_subscription_items(appstore_client:nil, subscription_group_id:nil)
|
692
727
|
subscription_items = []
|
693
728
|
|
694
|
-
tier_json = get_price_tier_dict
|
729
|
+
tier_json = get_price_tier_dict
|
695
730
|
items_dict = tier_json["subscription_duration"]
|
696
731
|
subscription_period_dict = items_dict.invert
|
697
732
|
|
@@ -728,7 +763,7 @@ module Pindo
|
|
728
763
|
localizations_item = subscription_response[:included].find { |item| item[:type].eql?("subscriptionLocalizations") && item[:id].eql?(new_subscription_item["localizations_id"])}
|
729
764
|
|
730
765
|
new_subscription_item["display_name"] = localizations_item[:attributes][:name]
|
731
|
-
new_subscription_item["description"] = localizations_item[:attributes][:description]
|
766
|
+
new_subscription_item["description"] = localizations_item[:attributes][:description]
|
732
767
|
end
|
733
768
|
|
734
769
|
|
@@ -737,7 +772,7 @@ module Pindo
|
|
737
772
|
else
|
738
773
|
new_subscription_item.delete("subscription_free_trial")
|
739
774
|
end
|
740
|
-
|
775
|
+
|
741
776
|
new_subscription_item["price"] = get_subscription_item_price(appstore_client:appstore_client, subscription_id:old_subscription_item[:id])
|
742
777
|
new_subscription_item.delete("localizations_id")
|
743
778
|
|
@@ -752,12 +787,12 @@ module Pindo
|
|
752
787
|
|
753
788
|
end
|
754
789
|
|
755
|
-
def create_subscription_items(appstore_client:nil, subscription_group_id:nil, subscription_items:nil)
|
790
|
+
def create_subscription_items(appstore_client:nil, subscription_group_id:nil, subscription_items:nil)
|
756
791
|
|
757
792
|
|
758
793
|
subscription_items = subscription_items || []
|
759
794
|
subscription_items.sort! { | itema, itemb | itema["product_id"] <=> itemb["product_id"]}
|
760
|
-
|
795
|
+
|
761
796
|
#查询是否存在group
|
762
797
|
subscription_response = appstore_client.list_all_subscription_for_subscription_group(id: subscription_group_id, limit:50)
|
763
798
|
# puts JSON.pretty_generate(subscription_response)
|
@@ -769,51 +804,52 @@ module Pindo
|
|
769
804
|
new_subscription_item["subscription_id"] = old_subscription_item[:id]
|
770
805
|
new_subscription_item["state"] = old_subscription_item[:attributes][:state]
|
771
806
|
end
|
772
|
-
end
|
807
|
+
end
|
773
808
|
end
|
774
809
|
end
|
775
810
|
|
776
811
|
subscription_items.each do |new_subscription_item|
|
777
812
|
puts " 订阅项:" + new_subscription_item["product_id"]
|
778
813
|
if new_subscription_item["subscription_id"].nil?
|
779
|
-
create_subscription_item(appstore_client:appstore_client, subscription_group_id:subscription_group_id, subscription_item:new_subscription_item)
|
814
|
+
create_subscription_item(appstore_client:appstore_client, subscription_group_id:subscription_group_id, subscription_item:new_subscription_item)
|
780
815
|
end
|
781
|
-
|
816
|
+
|
782
817
|
if !new_subscription_item["subscription_id"].nil?
|
783
818
|
subscription_id = new_subscription_item["subscription_id"]
|
784
819
|
puts " 订阅项id: #{subscription_id}"
|
785
|
-
|
820
|
+
|
786
821
|
sleep(1)
|
787
822
|
if !new_subscription_item["state"].nil? && new_subscription_item["state"].to_s.eql?("APPROVED")
|
788
823
|
puts " 订阅项已经上线, 只能修改价格"
|
789
824
|
create_subscription_item_price(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
790
825
|
update_subscription_item_introductory_offer(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
791
826
|
else
|
792
|
-
|
793
|
-
update_subscription_item_attributes(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
794
|
-
|
795
|
-
|
827
|
+
|
828
|
+
update_subscription_item_attributes(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
829
|
+
create_subscription_item_territory_availability(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
830
|
+
create_subscription_item_localization(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
831
|
+
update_subscription_item_screenshots(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
796
832
|
|
797
833
|
create_subscription_item_price(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
798
834
|
delete_subscription_item_introductory_offer(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
799
|
-
update_subscription_item_period(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
835
|
+
update_subscription_item_period(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
800
836
|
update_subscription_item_introductory_offer(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
801
837
|
end
|
802
838
|
|
803
839
|
|
804
|
-
|
840
|
+
|
805
841
|
end
|
806
842
|
end
|
807
843
|
|
808
844
|
|
809
845
|
# subscription_items.each do |new_subscription_item|
|
810
846
|
# puts " 订阅项:" + new_subscription_item["product_id"]
|
811
|
-
|
847
|
+
|
812
848
|
# if !new_subscription_item["subscription_id"].nil?
|
813
849
|
# subscription_id = new_subscription_item["subscription_id"]
|
814
850
|
|
815
|
-
# create_subscription_item_price_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
816
|
-
# if new_subscription_item["subscription_free_trial"].nil?
|
851
|
+
# create_subscription_item_price_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
852
|
+
# if new_subscription_item["subscription_free_trial"].nil?
|
817
853
|
# delete_subscription_item_introductory_offer_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id)
|
818
854
|
# end
|
819
855
|
|
@@ -824,14 +860,14 @@ module Pindo
|
|
824
860
|
subscription_items.each do |new_subscription_item|
|
825
861
|
|
826
862
|
if !new_subscription_item["subscription_id"].nil?
|
827
|
-
|
863
|
+
|
828
864
|
if !new_subscription_item["state"].nil? && new_subscription_item["state"].to_s.eql?("APPROVED")
|
829
865
|
|
830
866
|
else
|
831
867
|
subscription_id = new_subscription_item["subscription_id"]
|
832
|
-
create_subscription_item_localization(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
868
|
+
create_subscription_item_localization(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:new_subscription_item)
|
833
869
|
end
|
834
|
-
|
870
|
+
|
835
871
|
end
|
836
872
|
end
|
837
873
|
|
@@ -842,13 +878,12 @@ module Pindo
|
|
842
878
|
|
843
879
|
|
844
880
|
|
845
|
-
def create_subscription_item(appstore_client:nil, subscription_group_id:nil, subscription_item:nil)
|
881
|
+
def create_subscription_item(appstore_client:nil, subscription_group_id:nil, subscription_item:nil)
|
846
882
|
#创建购买项
|
847
883
|
begin
|
848
884
|
response = appstore_client.create_subscription(
|
849
885
|
name:subscription_item["reference_name"],
|
850
886
|
product_id:subscription_item["product_id"],
|
851
|
-
available_in_all_territories:true,
|
852
887
|
family_sharable:false,
|
853
888
|
review_note:subscription_item["review_note"],
|
854
889
|
subscription_period:subscription_item["subscription_duration"],
|
@@ -856,7 +891,7 @@ module Pindo
|
|
856
891
|
relationships: {
|
857
892
|
group:{
|
858
893
|
data:{
|
859
|
-
id: subscription_group_id,
|
894
|
+
id: subscription_group_id,
|
860
895
|
type: 'subscriptionGroups'
|
861
896
|
}
|
862
897
|
}
|
@@ -864,16 +899,16 @@ module Pindo
|
|
864
899
|
)
|
865
900
|
|
866
901
|
# puts JSON.pretty_generate(response)
|
867
|
-
|
902
|
+
|
868
903
|
if !response.nil? && !response[:data].nil? && !response[:data][:id].nil?
|
869
904
|
|
870
905
|
purchase_id = !response[:data][:id]
|
871
906
|
subscription_item["subscription_id"] = response[:data][:id]
|
872
907
|
return purchase_id
|
873
|
-
else !response.nil? && !response[:errors].nil?
|
908
|
+
else !response.nil? && !response[:errors].nil?
|
874
909
|
# puts JSON.pretty_generate(response)
|
875
910
|
response[:errors].each do |error_item|
|
876
|
-
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
911
|
+
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
877
912
|
err_msg = " !!!!!" + subscription_item["product_id"] + " 购买项创建失败!!! Reference Name重复!!!"
|
878
913
|
raise Informative, err_msg
|
879
914
|
end
|
@@ -888,14 +923,13 @@ module Pindo
|
|
888
923
|
end
|
889
924
|
end
|
890
925
|
|
891
|
-
def update_subscription_item_attributes(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
926
|
+
def update_subscription_item_attributes(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
892
927
|
puts " 更新Reference Name"
|
893
928
|
|
894
929
|
begin
|
895
930
|
response = appstore_client.update_subscription(
|
896
931
|
id:subscription_id,
|
897
932
|
name:subscription_item["reference_name"],
|
898
|
-
available_in_all_territories:true,
|
899
933
|
family_sharable:false,
|
900
934
|
review_note:subscription_item["review_note"],
|
901
935
|
group_level:1
|
@@ -907,10 +941,10 @@ module Pindo
|
|
907
941
|
purchase_id = !response[:data][:id]
|
908
942
|
subscription_item["subscription_id"] = response[:data][:id]
|
909
943
|
return purchase_id
|
910
|
-
else !response.nil? && !response[:errors].nil?
|
944
|
+
else !response.nil? && !response[:errors].nil?
|
911
945
|
# puts JSON.pretty_generate(response)
|
912
946
|
response[:errors].each do |error_item|
|
913
|
-
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
947
|
+
if error_item[:status].to_s.eql?("409") && error_item[:code].to_s.eql?("ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE") && error_item[:source][:pointer].to_s.eql?("/data/attributes/name")
|
914
948
|
err_msg = " !!!!!" + subscription_item["product_id"] + " 购买项更新失败!!! Reference Name重复!!!"
|
915
949
|
raise Informative, err_msg
|
916
950
|
end
|
@@ -918,14 +952,14 @@ module Pindo
|
|
918
952
|
err_msg = subscription_item["product_id"] + " 购买项更新失败!!!"
|
919
953
|
# puts JSON.pretty_generate(response)
|
920
954
|
end
|
921
|
-
|
955
|
+
|
922
956
|
rescue => err
|
923
957
|
puts err
|
924
958
|
end
|
925
959
|
end
|
926
960
|
|
927
|
-
def update_subscription_item_period(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
928
|
-
|
961
|
+
def update_subscription_item_period(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
962
|
+
|
929
963
|
begin
|
930
964
|
puts " 设置订阅的周期: #{subscription_item["subscription_duration"]}"
|
931
965
|
response = appstore_client.update_subscription(
|
@@ -939,18 +973,54 @@ module Pindo
|
|
939
973
|
purchase_id = !response[:data][:id]
|
940
974
|
subscription_item["subscription_id"] = response[:data][:id]
|
941
975
|
return purchase_id
|
942
|
-
else !response.nil? && !response[:errors].nil?
|
976
|
+
else !response.nil? && !response[:errors].nil?
|
943
977
|
puts " !!!! 设置订阅的周期失败 !!!!"
|
944
978
|
end
|
945
|
-
|
979
|
+
|
946
980
|
rescue => err
|
947
981
|
puts err
|
948
982
|
puts " !!!! 设置订阅的周期失败 !!!!"
|
949
983
|
end
|
950
984
|
end
|
951
985
|
|
952
|
-
def
|
953
|
-
|
986
|
+
def create_subscription_item_territory_availability(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
987
|
+
|
988
|
+
puts " 设置订阅的Territory Availability"
|
989
|
+
response = appstore_client.list_all_availability(
|
990
|
+
limit:200
|
991
|
+
)
|
992
|
+
# puts JSON.pretty_generate(response)
|
993
|
+
|
994
|
+
availableTerritories_data = []
|
995
|
+
if !response.nil? && !response[:data].nil?
|
996
|
+
response[:data].each do |territory_item|
|
997
|
+
new_territory_item = {}
|
998
|
+
new_territory_item["id"] = territory_item[:id]
|
999
|
+
new_territory_item["type"] = territory_item[:type]
|
1000
|
+
availableTerritories_data << new_territory_item
|
1001
|
+
end
|
1002
|
+
end
|
1003
|
+
response = appstore_client.modify_subscription_territory_availability(
|
1004
|
+
available_in_new_territories:true,
|
1005
|
+
relationships: {
|
1006
|
+
subscription:{
|
1007
|
+
data:{
|
1008
|
+
id: subscription_id,
|
1009
|
+
type: 'subscriptions'
|
1010
|
+
}
|
1011
|
+
},
|
1012
|
+
availableTerritories:{
|
1013
|
+
data:availableTerritories_data
|
1014
|
+
}
|
1015
|
+
}
|
1016
|
+
)
|
1017
|
+
|
1018
|
+
# puts JSON.pretty_generate(response)
|
1019
|
+
end
|
1020
|
+
|
1021
|
+
|
1022
|
+
def create_subscription_item_localization(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1023
|
+
puts " 更新Display Name"
|
954
1024
|
begin
|
955
1025
|
# 更新购买项描述多语言
|
956
1026
|
response = appstore_client.list_subscription_all_localizations(
|
@@ -970,7 +1040,7 @@ module Pindo
|
|
970
1040
|
subscription_item["localization"][locale]["display_name"] = subscription_item["localization"][locale]["display_name"] || display_name
|
971
1041
|
subscription_item["localization"][locale]["description"] = subscription_item["localization"][locale]["description"] || description
|
972
1042
|
end
|
973
|
-
|
1043
|
+
|
974
1044
|
end
|
975
1045
|
|
976
1046
|
# puts JSON.pretty_generate(response)
|
@@ -1004,10 +1074,10 @@ module Pindo
|
|
1004
1074
|
)
|
1005
1075
|
|
1006
1076
|
# puts JSON.pretty_generate(response)
|
1007
|
-
|
1077
|
+
|
1008
1078
|
end
|
1009
1079
|
|
1010
|
-
|
1080
|
+
|
1011
1081
|
|
1012
1082
|
end
|
1013
1083
|
|
@@ -1019,7 +1089,7 @@ module Pindo
|
|
1019
1089
|
end
|
1020
1090
|
|
1021
1091
|
|
1022
|
-
def get_subscription_item_price(appstore_client:nil, subscription_id:nil)
|
1092
|
+
def get_subscription_item_price(appstore_client:nil, subscription_id:nil)
|
1023
1093
|
|
1024
1094
|
itc_usa_latest_price = 0
|
1025
1095
|
|
@@ -1032,8 +1102,8 @@ module Pindo
|
|
1032
1102
|
limit:200
|
1033
1103
|
)
|
1034
1104
|
# puts JSON.pretty_generate(respose_price)
|
1035
|
-
|
1036
|
-
if !respose_price[:included].nil?
|
1105
|
+
|
1106
|
+
if !respose_price[:included].nil?
|
1037
1107
|
# respose_price[:included].each do |include_item|
|
1038
1108
|
# if include_item[:type].to_s.eql?("subscriptionPricePoints")
|
1039
1109
|
# itc_usa_latest_price = include_item[:attributes][:customer_price]
|
@@ -1050,7 +1120,7 @@ module Pindo
|
|
1050
1120
|
|
1051
1121
|
end
|
1052
1122
|
|
1053
|
-
def create_subscription_item_price(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1123
|
+
def create_subscription_item_price(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1054
1124
|
|
1055
1125
|
puts " 更新价格 "
|
1056
1126
|
begin
|
@@ -1074,15 +1144,15 @@ module Pindo
|
|
1074
1144
|
)
|
1075
1145
|
# puts JSON.pretty_generate(respose_price)
|
1076
1146
|
|
1077
|
-
|
1078
|
-
if !respose_price[:data].nil?
|
1147
|
+
|
1148
|
+
if !respose_price[:data].nil?
|
1079
1149
|
respose_price[:data].each_with_index do |data_item, data_index|
|
1080
1150
|
if data_item[:type].to_s.eql?("subscriptionPrices")
|
1081
1151
|
temp_id = data_item[:id]
|
1082
1152
|
temp_price_point_id = data_item[:relationships][:subscription_price_point][:data][:id]
|
1083
1153
|
price_point_item = respose_price[:included].find { |e| e[:id].eql?(temp_price_point_id) }
|
1084
1154
|
|
1085
|
-
itc_usa_price = price_point_item[:attributes][:customer_price]
|
1155
|
+
itc_usa_price = price_point_item[:attributes][:customer_price]
|
1086
1156
|
data_string = data_item[:attributes][:start_date].nil? ? "无" : data_item[:attributes][:start_date]
|
1087
1157
|
puts " 线上价格#{data_index} :" + itc_usa_price +"$" + " 生效日期 : " + data_string
|
1088
1158
|
end
|
@@ -1096,7 +1166,7 @@ module Pindo
|
|
1096
1166
|
end
|
1097
1167
|
|
1098
1168
|
|
1099
|
-
if !respose_price[:included].nil?
|
1169
|
+
if !respose_price[:included].nil?
|
1100
1170
|
include_item = respose_price[:included].last
|
1101
1171
|
if include_item[:type].to_s.eql?("subscriptionPricePoints")
|
1102
1172
|
itc_usa_latest_price = include_item[:attributes][:customer_price]
|
@@ -1108,7 +1178,7 @@ module Pindo
|
|
1108
1178
|
if !itc_usa_latest_price.nil? && itc_usa_latest_price.to_s.eql?(subscription_item["price"].to_s)
|
1109
1179
|
need_modify_price = false
|
1110
1180
|
end
|
1111
|
-
|
1181
|
+
|
1112
1182
|
end
|
1113
1183
|
|
1114
1184
|
|
@@ -1169,7 +1239,7 @@ module Pindo
|
|
1169
1239
|
limit:200
|
1170
1240
|
)
|
1171
1241
|
# puts JSON.pretty_generate(respose_equalizations_id)
|
1172
|
-
|
1242
|
+
|
1173
1243
|
price_change_relationships_data = {
|
1174
1244
|
newSubscriptionPricePoints:{
|
1175
1245
|
data:[]
|
@@ -1192,14 +1262,14 @@ module Pindo
|
|
1192
1262
|
|
1193
1263
|
index_num = 0
|
1194
1264
|
|
1195
|
-
relationships_data[:prices][:data] << {
|
1196
|
-
type: "subscriptionPrices",
|
1197
|
-
id: "${newprice-#{index_num}}"
|
1265
|
+
relationships_data[:prices][:data] << {
|
1266
|
+
type: "subscriptionPrices",
|
1267
|
+
id: "${newprice-#{index_num}}"
|
1198
1268
|
}
|
1199
1269
|
|
1200
1270
|
|
1201
1271
|
included_data << {
|
1202
|
-
type: "subscriptionPrices",
|
1272
|
+
type: "subscriptionPrices",
|
1203
1273
|
id: "${newprice-#{index_num}}",
|
1204
1274
|
attributes: attributes,
|
1205
1275
|
relationships:{
|
@@ -1222,12 +1292,12 @@ module Pindo
|
|
1222
1292
|
respose_equalizations_id[:data].each do |price_local_item|
|
1223
1293
|
|
1224
1294
|
local_price_point_id = price_local_item[:id]
|
1225
|
-
relationships_data[:prices][:data] << {
|
1226
|
-
type: "subscriptionPrices",
|
1227
|
-
id: "${newprice-#{index_num}}"
|
1295
|
+
relationships_data[:prices][:data] << {
|
1296
|
+
type: "subscriptionPrices",
|
1297
|
+
id: "${newprice-#{index_num}}"
|
1228
1298
|
}
|
1229
1299
|
included_data << {
|
1230
|
-
type: "subscriptionPrices",
|
1300
|
+
type: "subscriptionPrices",
|
1231
1301
|
id: "${newprice-#{index_num}}",
|
1232
1302
|
attributes: attributes,
|
1233
1303
|
relationships:{
|
@@ -1251,25 +1321,25 @@ module Pindo
|
|
1251
1321
|
|
1252
1322
|
# puts JSON.pretty_generate(relationships_data)
|
1253
1323
|
# puts JSON.pretty_generate(included_data)
|
1254
|
-
|
1255
1324
|
|
1256
1325
|
|
1257
|
-
if subscription_item["state"].to_s.eql?("APPROVED")
|
1258
1326
|
|
1259
|
-
|
1327
|
+
if subscription_item["state"].to_s.eql?("APPROVED")
|
1328
|
+
|
1329
|
+
|
1260
1330
|
|
1261
1331
|
respose_response = appstore_client.list_subscription_all_price(
|
1262
1332
|
id:subscription_id,
|
1263
1333
|
include:"subscriptionPricePoint",
|
1264
1334
|
limit:200
|
1265
1335
|
)
|
1266
|
-
|
1336
|
+
|
1267
1337
|
all_price_data = []
|
1268
|
-
|
1338
|
+
|
1269
1339
|
|
1270
1340
|
next_respose_response = respose_response
|
1271
1341
|
all_price_data = all_price_data + respose_response[:data]
|
1272
|
-
while !next_respose_response.nil? && !next_respose_response[:links].nil? && !next_respose_response[:links][:next].nil?
|
1342
|
+
while !next_respose_response.nil? && !next_respose_response[:links].nil? && !next_respose_response[:links][:next].nil?
|
1273
1343
|
|
1274
1344
|
cursor = nil
|
1275
1345
|
# puts next_respose_response[:links][:next]
|
@@ -1291,20 +1361,20 @@ module Pindo
|
|
1291
1361
|
# puts "all_price_data.size: #{all_price_data.size}"
|
1292
1362
|
|
1293
1363
|
# puts "respose_response[:included].size : #{respose_response[:included].size }"
|
1294
|
-
if !itc_usa_latest_start_date.nil? && !respose_response.nil? && !respose_response[:links].nil? && !respose_response[:links][:next].nil?
|
1364
|
+
if !itc_usa_latest_start_date.nil? && !respose_response.nil? && !respose_response[:links].nil? && !respose_response[:links][:next].nil?
|
1295
1365
|
last_data_items = all_price_data.select { |e| e[:attributes][:start_date].eql?(itc_usa_latest_start_date)}
|
1296
1366
|
else
|
1297
1367
|
last_data_items = all_price_data
|
1298
1368
|
end
|
1299
1369
|
|
1300
|
-
|
1370
|
+
|
1301
1371
|
if last_data_items.size > 0
|
1302
1372
|
last_data_items.each do |last_data_item|
|
1303
1373
|
if last_data_item[:type].to_s.eql?("subscriptionPrices")
|
1304
1374
|
price_change_relationships_data[:currentSubscriptionPricePoints][:data] << {
|
1305
1375
|
type:"subscriptionPricePoints",
|
1306
1376
|
id: last_data_item[:relationships][:subscription_price_point][:data][:id]
|
1307
|
-
}
|
1377
|
+
}
|
1308
1378
|
end
|
1309
1379
|
end
|
1310
1380
|
end
|
@@ -1388,22 +1458,22 @@ module Pindo
|
|
1388
1458
|
end
|
1389
1459
|
|
1390
1460
|
|
1391
|
-
def update_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1392
|
-
puts " 设置Introductory Offer : "
|
1461
|
+
def update_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1462
|
+
puts " 设置Introductory Offer : "
|
1393
1463
|
if !subscription_item["subscription_free_trial"].nil? && subscription_item["subscription_free_trial"].to_s.eql?("3d")
|
1394
|
-
puts " 3天 试用"
|
1464
|
+
puts " 3天 试用"
|
1395
1465
|
create_subscription_item_introductory_offer(appstore_client:appstore_client, subscription_id:subscription_id, subscription_item:subscription_item)
|
1396
1466
|
else
|
1397
|
-
puts " 无试用"
|
1398
|
-
end
|
1467
|
+
puts " 无试用"
|
1468
|
+
end
|
1399
1469
|
|
1400
1470
|
end
|
1401
1471
|
|
1402
|
-
def create_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1472
|
+
def create_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1473
|
+
|
1403
1474
|
|
1404
|
-
|
1405
1475
|
begin
|
1406
|
-
|
1476
|
+
|
1407
1477
|
territory_response = appstore_client.list_subscription_territory_availability(
|
1408
1478
|
id:subscription_id,
|
1409
1479
|
limit:200
|
@@ -1423,13 +1493,13 @@ module Pindo
|
|
1423
1493
|
index_num = 0
|
1424
1494
|
territory_response[:data].each do |territory_item|
|
1425
1495
|
local_territory_id = territory_item[:id]
|
1426
|
-
relationships_data[:introductoryOffers][:data] << {
|
1427
|
-
type: "subscriptionIntroductoryOffers",
|
1428
|
-
id: "${newIntroOffer-#{index_num}}"
|
1496
|
+
relationships_data[:introductoryOffers][:data] << {
|
1497
|
+
type: "subscriptionIntroductoryOffers",
|
1498
|
+
id: "${newIntroOffer-#{index_num}}"
|
1429
1499
|
}
|
1430
1500
|
|
1431
1501
|
included_data << {
|
1432
|
-
type: "subscriptionIntroductoryOffers",
|
1502
|
+
type: "subscriptionIntroductoryOffers",
|
1433
1503
|
id: "${newIntroOffer-#{index_num}}",
|
1434
1504
|
attributes: {
|
1435
1505
|
duration:"THREE_DAYS",
|
@@ -1455,12 +1525,12 @@ module Pindo
|
|
1455
1525
|
relationships: relationships_data,
|
1456
1526
|
included: included_data
|
1457
1527
|
)
|
1458
|
-
puts " 3天 试用 设置成功!"
|
1528
|
+
puts " 3天 试用 设置成功!"
|
1459
1529
|
# puts JSON.pretty_generate(response)
|
1460
1530
|
end
|
1461
1531
|
|
1462
1532
|
rescue => err
|
1463
|
-
puts " !!!! 设置Introductory Offer 失败 !!! "
|
1533
|
+
puts " !!!! 设置Introductory Offer 失败 !!! "
|
1464
1534
|
puts err
|
1465
1535
|
end
|
1466
1536
|
|
@@ -1468,7 +1538,7 @@ module Pindo
|
|
1468
1538
|
end
|
1469
1539
|
|
1470
1540
|
|
1471
|
-
def delete_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1541
|
+
def delete_subscription_item_introductory_offer(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1472
1542
|
|
1473
1543
|
begin
|
1474
1544
|
|
@@ -1482,27 +1552,27 @@ module Pindo
|
|
1482
1552
|
if !introductory_response[:data].nil? && introductory_response[:data].size > 0
|
1483
1553
|
|
1484
1554
|
# puts JSON.pretty_generate(introductory_response[:data])
|
1485
|
-
puts " 线上有试用,先删除"
|
1555
|
+
puts " 线上有试用,先删除"
|
1486
1556
|
temp_data = [];
|
1487
1557
|
|
1488
1558
|
introductory_response[:data].each do |introductory_item|
|
1489
1559
|
temp_data << {id: introductory_item[:id]}
|
1490
1560
|
end
|
1491
1561
|
|
1492
|
-
|
1562
|
+
|
1493
1563
|
introductory_response = appstore_client.delete_introductory_offers_for_subscription(
|
1494
1564
|
id:subscription_id,
|
1495
1565
|
data:temp_data
|
1496
1566
|
)
|
1497
1567
|
|
1498
|
-
puts " 线上试用删除成功!!!"
|
1568
|
+
puts " 线上试用删除成功!!!"
|
1499
1569
|
# puts JSON.pretty_generate(introductory_response)
|
1500
1570
|
else
|
1501
|
-
puts " 线上无试用, 无需删除!!!"
|
1571
|
+
puts " 线上无试用, 无需删除!!!"
|
1502
1572
|
end
|
1503
1573
|
|
1504
1574
|
rescue => err
|
1505
|
-
puts " !!!! 删除 试用 失败 !!!!"
|
1575
|
+
puts " !!!! 删除 试用 失败 !!!!"
|
1506
1576
|
puts err
|
1507
1577
|
end
|
1508
1578
|
|
@@ -1510,9 +1580,9 @@ module Pindo
|
|
1510
1580
|
|
1511
1581
|
|
1512
1582
|
|
1513
|
-
def delete_subscription_item_introductory_offer_with_singlefunc(appstore_client:nil, subscription_id:nil)
|
1583
|
+
def delete_subscription_item_introductory_offer_with_singlefunc(appstore_client:nil, subscription_id:nil)
|
1584
|
+
|
1514
1585
|
|
1515
|
-
|
1516
1586
|
begin
|
1517
1587
|
|
1518
1588
|
response = appstore_client.list_subscription_introductory_offer_resoure_ids(
|
@@ -1529,11 +1599,11 @@ module Pindo
|
|
1529
1599
|
index_item = index_item +1
|
1530
1600
|
|
1531
1601
|
|
1532
|
-
puts " 删除" + index_item.to_s+ "地区的Introductory Offer"
|
1602
|
+
puts " 删除" + index_item.to_s+ "地区的Introductory Offer"
|
1533
1603
|
|
1534
1604
|
ret = appstore_client.delete_subscription_introductory_offer(id:price_point_item[:id])
|
1535
1605
|
# puts JSON.pretty_generate(ret)
|
1536
|
-
|
1606
|
+
|
1537
1607
|
end
|
1538
1608
|
|
1539
1609
|
end
|
@@ -1547,9 +1617,9 @@ module Pindo
|
|
1547
1617
|
end
|
1548
1618
|
|
1549
1619
|
|
1550
|
-
def create_subscription_item_introductory_offer_with_singlefunc(appstore_client:nil, subscription_id:nil, price_point_id:nil, territory:nil)
|
1620
|
+
def create_subscription_item_introductory_offer_with_singlefunc(appstore_client:nil, subscription_id:nil, price_point_id:nil, territory:nil)
|
1551
1621
|
|
1552
|
-
puts " 设置Introductory Offer"
|
1622
|
+
puts " 设置Introductory Offer"
|
1553
1623
|
begin
|
1554
1624
|
|
1555
1625
|
response = appstore_client.create_subscription_introductory_offer(
|
@@ -1575,7 +1645,7 @@ module Pindo
|
|
1575
1645
|
id: territory
|
1576
1646
|
}
|
1577
1647
|
}
|
1578
|
-
|
1648
|
+
|
1579
1649
|
},
|
1580
1650
|
included:[{
|
1581
1651
|
type: "subscriptionPrices",
|
@@ -1592,7 +1662,7 @@ module Pindo
|
|
1592
1662
|
|
1593
1663
|
|
1594
1664
|
|
1595
|
-
def create_subscription_item_price_with_singlefunc(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1665
|
+
def create_subscription_item_price_with_singlefunc(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1596
1666
|
puts " 更新价格"
|
1597
1667
|
begin
|
1598
1668
|
|
@@ -1636,13 +1706,13 @@ module Pindo
|
|
1636
1706
|
)
|
1637
1707
|
|
1638
1708
|
|
1639
|
-
|
1709
|
+
|
1640
1710
|
if !subscription_item["subscription_free_trial"].nil? && subscription_item["subscription_free_trial"].to_s.eql?("3d")
|
1641
|
-
|
1642
|
-
create_subscription_item_introductory_offer_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, price_point_id:price_point_id, territory:'USA')
|
1711
|
+
|
1712
|
+
create_subscription_item_introductory_offer_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, price_point_id:price_point_id, territory:'USA')
|
1643
1713
|
end
|
1644
1714
|
|
1645
|
-
|
1715
|
+
|
1646
1716
|
|
1647
1717
|
|
1648
1718
|
respose_price = appstore_client.list_subscription_price_points_equalizations(
|
@@ -1654,7 +1724,7 @@ module Pindo
|
|
1654
1724
|
|
1655
1725
|
index_item = 1
|
1656
1726
|
if !respose_price[:data].nil?
|
1657
|
-
|
1727
|
+
|
1658
1728
|
respose_price[:data].each do |price_local_item|
|
1659
1729
|
index_item = index_item +1
|
1660
1730
|
|
@@ -1681,26 +1751,26 @@ module Pindo
|
|
1681
1751
|
)
|
1682
1752
|
|
1683
1753
|
# puts JSON.pretty_generate(respose_price)
|
1684
|
-
|
1754
|
+
|
1685
1755
|
if !subscription_item["subscription_free_trial"].nil? && subscription_item["subscription_free_trial"].to_s.eql?("3d")
|
1686
|
-
|
1687
|
-
create_subscription_item_introductory_offer_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, price_point_id:price_point_id, territory:territory_id)
|
1756
|
+
|
1757
|
+
create_subscription_item_introductory_offer_with_singlefunc(appstore_client:appstore_client, subscription_id:subscription_id, price_point_id:price_point_id, territory:territory_id)
|
1688
1758
|
end
|
1689
|
-
|
1759
|
+
|
1690
1760
|
end
|
1691
1761
|
|
1692
1762
|
end
|
1693
1763
|
|
1694
1764
|
|
1695
1765
|
end
|
1696
|
-
|
1766
|
+
|
1697
1767
|
rescue => err
|
1698
1768
|
puts "创建价格失败: " + subscription_item["product_id"]
|
1699
1769
|
puts err
|
1700
1770
|
end
|
1701
1771
|
end
|
1702
1772
|
|
1703
|
-
def update_subscription_item_screenshots(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1773
|
+
def update_subscription_item_screenshots(appstore_client:nil, subscription_id:nil, subscription_item:nil)
|
1704
1774
|
puts " 更新截屏"
|
1705
1775
|
begin
|
1706
1776
|
response_iap_screenshot = appstore_client.read_review_screenshot_for_subscription(id:subscription_id)
|
@@ -1718,15 +1788,15 @@ module Pindo
|
|
1718
1788
|
need_upload_screenshot = true
|
1719
1789
|
|
1720
1790
|
if !response_iap_screenshot[:data].nil? && !response_iap_screenshot[:data][:attributes].nil? && !response_iap_screenshot[:data][:attributes][:asset_delivery_state].nil? && !response_iap_screenshot[:data][:attributes][:asset_delivery_state][:state].nil?
|
1721
|
-
|
1791
|
+
|
1722
1792
|
if response_iap_screenshot[:data][:attributes][:asset_delivery_state][:state].to_s.eql?("COMPLETE")
|
1723
|
-
|
1793
|
+
|
1724
1794
|
if !response_iap_screenshot[:data].nil? && !response_iap_screenshot[:data][:attributes].nil? && !response_iap_screenshot[:data][:attributes][:source_file_checksum].nil?
|
1725
1795
|
|
1726
1796
|
if checksum.to_s.eql?(response_iap_screenshot[:data][:attributes][:source_file_checksum].to_s)
|
1727
1797
|
puts " 有截屏,截屏未修改,无需重新上传"
|
1728
1798
|
need_upload_screenshot = false
|
1729
|
-
|
1799
|
+
|
1730
1800
|
end
|
1731
1801
|
end
|
1732
1802
|
end
|
@@ -1749,13 +1819,13 @@ module Pindo
|
|
1749
1819
|
relationships: {
|
1750
1820
|
subscription:{
|
1751
1821
|
data:{
|
1752
|
-
id: subscription_id,
|
1822
|
+
id: subscription_id,
|
1753
1823
|
type: 'subscriptions'
|
1754
1824
|
}
|
1755
1825
|
}
|
1756
1826
|
}
|
1757
1827
|
)
|
1758
|
-
|
1828
|
+
|
1759
1829
|
# puts JSON.pretty_generate(response_iap_screenshot)
|
1760
1830
|
|
1761
1831
|
if !response_iap_screenshot[:data].nil? && !response_iap_screenshot[:data][:id].nil?
|
@@ -1773,7 +1843,7 @@ module Pindo
|
|
1773
1843
|
res = conn.put(upload_operation[:url], bytes[offset, length], headers)
|
1774
1844
|
end
|
1775
1845
|
|
1776
|
-
|
1846
|
+
|
1777
1847
|
|
1778
1848
|
in_app_purchase = appstore_client.update_subscription_review_screenshot(
|
1779
1849
|
id:upload_id,
|
@@ -1788,7 +1858,7 @@ module Pindo
|
|
1788
1858
|
|
1789
1859
|
puts " 存在图片,无需上传...."
|
1790
1860
|
end
|
1791
|
-
|
1861
|
+
|
1792
1862
|
|
1793
1863
|
|
1794
1864
|
|