pindo 4.7.2 → 4.7.3
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/pindo/client/aws3sclient.rb +2 -2
- data/lib/pindo/command/deploy/iap.rb +2 -4
- data/lib/pindo/command/dev/autoresign.rb +4 -4
- data/lib/pindo/command/pgyer/download.rb +2 -2
- data/lib/pindo/module/appstore/appstore_in_app_purchase.rb +239 -169
- data/lib/pindo/module/pgyer/pgyerhelper.rb +3 -1
- data/lib/pindo/module/xcode/xcodeappconfig.rb +3 -1
- data/lib/pindo/module/xcode/xcodebuildhelper.rb +40 -37
- data/lib/pindo/version.rb +1 -1
- metadata +4 -4
@@ -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
|
|