แอปพลิเคชันรุ่นนี้ไม่ได้รับการกำหนดค่าสำหรับการเรียกเก็บเงินผ่าน Google Play


269

เมื่อฉันพยายามเรียกใช้แอปพลิเคชันของฉันด้วยการเรียกเก็บเงินในแอปฉันได้รับข้อผิดพลาด: "แอปพลิเคชันรุ่นนี้ไม่ได้รับการกำหนดค่าสำหรับการเรียกเก็บเงินผ่าน Google Play ตรวจสอบศูนย์ช่วยเหลือสำหรับข้อมูลเพิ่มเติม"

ฉันได้รับอนุญาตให้เรียกเก็บเงินแล้วในไฟล์ Manifest และฉันได้ลงชื่อ. apk ที่อัปโหลดเป็นฉบับร่างลงบน Google Play และฉันยังได้ติดตั้ง apk ที่ลงนามเดียวกันนี้ลงในโทรศัพท์ของฉันแล้ว

ความช่วยเหลือเกี่ยวกับวิธีการแก้ปัญหานี้?

คำตอบ:


339

ข้อผิดพลาดนี้อาจเกิดจากหลายสาเหตุ

นี่คือรายการข้อกำหนดสำหรับการทดสอบ Google IAB

วิชาบังคับก่อน:

  1. AndroidManifest ต้องมี"ป" ได้รับอนุญาต
  2. เอพีเคถูกสร้างขึ้นในโหมดการเปิดตัว
  3. เอพีเคจะลงนามกับใบรับรองลีส (s) (สำคัญ: ด้วย "แอปที่ลงชื่อโดย Google Play" จะใช้งานได้เฉพาะเมื่อคุณดาวน์โหลดโดยตรงจาก GooglePlayStore!)
  4. APK ถูกอัปโหลดไปยังช่องทางการจัดจำหน่ายอัลฟา / เบต้า (ก่อนหน้านี้ - เป็นฉบับร่าง) ไปยังคอนโซลนักพัฒนาซอฟต์แวร์อย่างน้อยหนึ่งครั้ง (ใช้เวลาสักครู่~ 2h-24h )
  5. IAB ผลิตภัณฑ์ที่มีการตีพิมพ์และสถานะของการตั้งค่าเพื่อใช้งาน
  6. เพิ่มบัญชีทดสอบในคอนโซลนักพัฒนาซอฟต์แวร์

ข้อกำหนดการทดสอบ:

  1. Test APK มีversionCodeเดียวกับที่อัปโหลดไปยังคอนโซลนักพัฒนาซอฟต์แวร์
  2. APK ทดสอบลงชื่อด้วยใบรับรองเดียวกันกับที่อัปโหลดไปยัง dev.console
  3. บัญชีทดสอบ (ไม่ใช่นักพัฒนา) - เป็นบัญชีหลักของอุปกรณ์ (บัญชีหลักอาจไม่จำเป็น - ตามความคิดเห็น@MinosL )
  4. บัญชีทดสอบจะถูกเลือกเป็นผู้ทดสอบและจะเชื่อมโยงกับวิธีการชำระเงินที่ถูกต้อง ( @Kyone )

PS: การดีบักด้วยใบรับรองการเปิดตัว : https://stackoverflow.com/a/15754187/1321401 (Thnx @dippสำหรับลิงก์)

PPS: ต้องการทำรายการนี้เป็นเวลานานแล้ว

thnx @zlgdev , @Kyone , @MinosLสำหรับการปรับปรุง


5
อย่าลืมตรวจสอบให้แน่ใจว่าบัญชีที่คุณใช้ทดสอบ IAB ได้รับการเลือกให้เป็นผู้ทดสอบโดยใช้ "opt-in URL" ที่สร้างขึ้นเมื่อคุณอัปโหลดบิลด์ และว่ามันเชื่อมโยงกับวิธีการชำระเงินที่ถูกต้อง
Kyone

3
ควรทดสอบ IAP ง่ายกว่านี้ไหม? หรือสิ่งทดสอบทั่วไป ..

1
ยังน่าสังเกต บัญชีทดสอบไม่ควรเชื่อมโยงกับบัญชีนักพัฒนาซอฟต์แวร์ (ไม่ควรมีสิทธิ์ในการอัปโหลด APK)
guness

2
ยังน่าสังเกต หากเปิดใช้งาน "ใบรับรองการลงชื่อเข้าใช้แอป" เราจะไม่สามารถใช้ APK ในพื้นที่ของเราเพื่อทดสอบด้วยการซื้อจริงเนื่องจากเราไม่สามารถลงชื่อด้วยใบรับรองการลงนาม (ใช้เวลาประมาณ 3 ชั่วโมงในการค้นหา)
guness

1
ฉันได้ทดสอบกับ 1) แอปที่มีการลงชื่อที่เป็น 2) ไม่ใช่บัญชีหลักในอุปกรณ์ดังนั้นกระบวนการสำหรับการทดสอบ Google IAB ดูเหมือนว่าจะไม่เข้มงวดเท่าที่ระบุไว้ข้างต้น
MinosL

194

อ่าหาวิธีแก้ปัญหาหลังจากพยายามสักสองสามชั่วโมง

  1. Google ใช้เวลาสักครู่ในการประมวลผลแอปพลิเคชันและอัปเดตเป็นเซิร์ฟเวอร์ของพวกเขาสำหรับฉันใช้เวลาประมาณครึ่งวัน ดังนั้นหลังจากบันทึก apk เป็นแบบร่างบน Google Play คุณต้องรอสองสามชั่วโมงก่อนที่ผลิตภัณฑ์ในแอปจะตอบสนองตามปกติและอนุญาตให้มีการซื้อปกติ
  2. ส่งออกและลงชื่อ APK APK ที่ไม่ได้ลงชื่อพยายามที่จะทำการซื้อจะได้รับข้อผิดพลาด

71
ว้าวเรื่องนี้ร้ายแรงไหม เพิ่งพบปัญหาเดียวกัน ทุกสิ่งที่ Google ขอให้ฉันทำเพื่อทดสอบการเรียกเก็บเงินในแอป แต่ยังคงได้รับข้อความแสดงข้อผิดพลาดที่เหมือนกัน ฉันเดาว่าฉันจะต้องรอดู แต่ Google คาดหวังให้นักพัฒนาซอฟต์แวร์ของเรารอหลายชั่วโมงทุกครั้งที่เราจำเป็นต้องอัปเดตแอปเพื่อใช้งานการเรียกเก็บเงินในแอป ดูเหมือนว่าฉันไม่เหมาะสมที่จะพูดน้อย
Simon

6
คุณสามารถทดสอบในขณะที่เชื่อมต่อกับ Android Studio / ทำงานในขณะที่เชื่อมต่อกับดีบักเกอร์ได้หรือไม่? หรือคุณต้องการติดตั้ง apk ที่ปล่อยผ่าน USB?
Alfie Hanssen

3
มีวิธีที่ง่ายกว่าในการทดสอบกระบวนการซื้อนอกเหนือจากเครื่องมือ Android> ส่งออกโครงการที่ลงชื่อแล้ว ... ฯลฯ จากนั้นคัดลอก APK ไปยังอุปกรณ์ทดสอบทำซ้ำ .... หรือไม่ ฉันต้องคิดถึงอะไรบางอย่าง?
wired00

4
อย่างจริงจังฉันไม่สามารถใช้แอปพลิเคชันด้วยใบรับรองการแก้ไขข้อบกพร่องและทดสอบการเรียกเก็บเงินในแอปได้หรือไม่
TacB0sS

8
โปรดทราบว่าคุณสามารถใช้ debug builds โดยตรงจาก IDE ของคุณในขณะที่คุณกำลังทำงาน คุณเพียงแค่ต้องเปลี่ยนที่เก็บคีย์ดีบักเป็นที่ตรงกับที่วางจำหน่ายของคุณ ดูโพสต์นี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการ: stackoverflow.com/questions/10886814/…
cottonBallPaws

137

สิ่งเดียวกันจะเกิดขึ้นหากเวอร์ชันที่คุณเผยแพร่ไม่เหมือนกับเวอร์ชั่นที่คุณกำลังทดสอบบนโทรศัพท์ของคุณ

ตัวอย่างเช่นรุ่นที่อัปโหลดคือandroid:versionCode="1"และรุ่นที่คุณทดสอบบนโทรศัพท์ของคุณคือandroid:versionCode="2"


3
คุณช่วยบอกฉันหน่อยได้ไหมว่าถ้ามีรุ่นที่อัปโหลดandroid:versionCode="1"และโทรศัพท์android:versionCode="2"ใช้งานได้หรือฉันต้องเปลี่ยน apk google play ของฉัน?
คุณ

1
สิ่งที่คุณต้องทำคือการชนเวอร์ชันท้องถิ่นเป็น "1" เพื่อให้ตรงกับเวอร์ชันสดปัจจุบันอย่างน้อยก็ชั่วคราวสำหรับการทดสอบ
Romain

2
ดูเหมือนว่ามีการแก้ไขข้อผิดพลาดนี้ 2 แบบทั่วไปขึ้นอยู่กับสถานการณ์ของคุณ ในกรณีของฉันมันคืออันนี้
แมตต์

ขอบคุณนี่เป็นปัญหา การดีบั๊กดีขึ้นเมื่อมีการปล่อย apk ที่ลงชื่อบนอุปกรณ์ที่เชื่อมต่อของฉัน จากนั้นเปลี่ยน versioncode และเริ่มได้รับข้อผิดพลาด 1005 ต๊าย!
Anna Billstrom

@Anna โปรดทราบว่า -1005 นั้นก็คือ USER_CANCELLED หากคุณใช้ iabHelper
JacksOnF1re

47

คุณต้องลงชื่อ APK ของคุณด้วยใบรับรองสด จากนั้นติดตั้งลงบนอุปกรณ์ทดสอบของคุณ จากนั้นคุณสามารถทดสอบ InAppBilling หากคุณกำลังทดสอบแอปพลิเคชันของคุณโดยเรียกใช้โดยตรงผ่าน eclipse to device (ในโหมดดีบัก) คุณจะได้รับข้อผิดพลาดนี้

หากคุณใช้android.test.purchasedเป็น SKU ระบบจะใช้งานได้ตลอด แต่คุณจะไม่มี DeveloperPay ในการตอบกลับครั้งสุดท้าย

หากคุณใช้แบบร่างของคุณเองในรายการแอปคุณสามารถทดสอบได้ตลอดทาง แต่คุณจะถูกเรียกเก็บเงินและจะต้องคืนเงินด้วยตัวคุณเองในภายหลัง

คุณไม่สามารถซื้อสินค้าด้วยบัญชี Gmail เดียวกันกับที่คุณใช้สำหรับคอนโซลการพัฒนาของ Google Play


1
+1 การเรียกใช้จากดีบักเกอร์ใช้ใบรับรองการดีบัก หลังจากส่งออกแอพและสร้างพับลิกคีย์ใหม่ (และติดตั้งในคอนโซลนักพัฒนาซอฟต์แวร์) เพียงส่ง apk ของคุณเองทางอีเมลและติดตั้งจากกล่องจดหมาย gmail ของคุณ
cdavidyoung

หากฉันต้องการลอง "android.test.purchased" ฉันจะเปลี่ยน SKU ทั้งในรหัสของฉันและในคอนโซลนักพัฒนาซอฟต์แวร์หรือไม่
Rocologo

26

ในคอนโซลนักพัฒนาซอฟต์แวร์:

Settings-> Account details-> License Testing-> บัญชี Gmail พร้อมการทดสอบการเข้าถึง

และพิมพ์บัญชีของคุณที่นี่


ทำงานเหมือนจับใจ
จอร์แดน

17

หากคุณมาที่นี่ในปี 2018 คุณจะต้องดาวน์โหลด APK โดยตรงจาก Play Store และติดตั้ง APK ที่ได้รับ อาจเป็นเพราะ Play Store ของ Google มีฟีเจอร์ "App Signing by Google Play"


1
APK ใด ฉันใช้ AIDL ฉันยังต้องทำอีกหรือไม่
Zhen Liu

@ ZhenLiu ฉันเดาว่าไม่จำเป็น
Law Gimenez

นอกจากนี้แอพไม่สามารถติดตั้งบนอุปกรณ์ได้ด้วยวิธีอื่น (เช่น Android Studio) การติดตั้ง / อัปเดตจาก Play Store จะใช้งานได้ แต่ IAP จะไม่ทำงาน - คุณจะได้รับข้อผิดพลาด OPs
JDune

เราจะแก้ไขข้อบกพร่องนี้ได้อย่างไร
Oliver Dixon

3

สิ่งนี้จะเกิดขึ้นหากคุณใช้ apk ที่แตกต่างจาก apk ใน Google Play


3

ให้ฉันเพิ่มสิ่งที่เกิดขึ้นกับฉันอาจช่วยบางคน

ส่วนใหญ่เป็นเพราะการลงนาม

เนื่องจากฉันได้เพิ่มรายละเอียดการลงนามในโครงสร้างโครงการฉันคิดว่าทุกครั้งที่ฉันเรียกใช้ apk ที่ลงนามซึ่งคาดว่าจะติดตั้ง แต่เลือกชนิดการสร้าง 'ดีบัก' แล้ว

การแก้ไขด้านล่างแก้ไขปัญหาให้ฉันได้

  • สร้าง apk ที่ลงนามแล้วของบิลด์ประเภท 'release'
  • ติดตั้ง apk ด้วยตนเอง

2

ในกรณีของฉันฉันเห็นข้อความเดียวกันเนื่องจากลายเซ็นต่าง ๆ ของ APK ที่ติดตั้งและอัปโหลดไปยังตลาด apk


2

ตรงกันข้ามกับคำตอบและความคิดเห็นมากมายเกี่ยวกับ SO และไซต์อื่น ๆ คุณไม่จำเป็นต้องทำการทดสอบเบื้องต้นกับผลิตภัณฑ์รุ่นอัลฟ่า / เบต้าที่ดาวน์โหลดจาก Google Play ลงบนอุปกรณ์ทดสอบของคุณ (กระบวนการเผยแพร่อัลฟา / เบต้ามักจะกินหมด ครึ่งวัน). คุณไม่ต้องโหลดและโหลด apk รีลีสที่ลงนามแล้วใหม่จากสตูดิโอนักพัฒนาของคุณไปยังอุปกรณ์ทดสอบของคุณ

คุณสามารถดีบัก Google Play เบื้องต้นในบริการเรียกเก็บเงินแอปโดยใช้แอป debug โหลดจากสตูดิโอพัฒนาของคุณไปยังอุปกรณ์ทดสอบโดยตรงผ่าน ADB หากคุณกำลังประสบกับข้อผิดพลาดที่ป้องกันสิ่งนี้อาจเป็นไปได้ว่าคุณทำบางอย่างผิดปกติในรหัสของคุณ ให้ความสนใจเป็นพิเศษกับ CASE ของ SKU (รหัสผลิตภัณฑ์) และรูปแบบของพวกเขา (ตัวอย่างเช่นถ้าคุณโหลด APK เป็น com.mydomain.my_product_id ให้แน่ใจว่าคุณลองซื้อด้วยวิธีนี้ - ให้ตัวพิมพ์และโดเมนเดียวกัน) . นอกจากนี้ควรใส่ใจอย่างยิ่งกับ itemType ของคุณซึ่งควรเป็น "ไม่เหมาะสม" หรือ "หมวดย่อย" สำหรับการจัดการ / ไม่มีการจัดการในการซื้อแอพหรือการสมัครสมาชิกตามลำดับ

ตามที่แนะนำโดย Chirag Patel หากคุณได้รับรหัสการเรียกเก็บเงินของคุณอย่างถูกต้องให้ทำการทดสอบทั้งหมดโดยใช้ android.test.purchased Sku (รหัสผลิตภัณฑ์) ในระหว่างการทดสอบเบื้องต้น ตรวจสอบ ID นี้ตลอดการดำเนินการเรียกเก็บเงินของคุณเพื่อส่งผ่านการตรวจสอบลายเซ็นโทเค็นและข้อมูลที่ต้องชำระเนื่องจากระบบทดสอบของ Google ไม่ได้ให้ข้อมูลนี้ นอกจากนี้ให้หนึ่งในผลิตภัณฑ์ทดสอบของคุณ ID นี้เพื่อทดสอบการซื้อปลดล็อค / โหลดและการนำเสนอตลอดทางผ่านสคีมาของคุณ หากต้องการล้างการซื้อเพียงใช้ผ่าน Sku และสตริงโทเค็นที่จัดรูปแบบด้วยวิธีนี้ - ไม่มีฟิลด์อื่นที่เกี่ยวข้อง:

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

เมื่อคุณเสร็จสิ้นขั้นตอนการทดสอบแล้วให้ย้ายไปที่การทดสอบแบบกึ่งสดด้วยผลิตภัณฑ์อัลฟา / เบต้าของคุณ สร้างกลุ่ม Google (โดยปกติคือรายชื่ออีเมล) เพิ่มผู้ใช้ทดสอบอีเมลของคุณและเพิ่ม / เชิญกลุ่มนี้เพื่อทดสอบอุปกรณ์ของคุณในระยะนี้ (ดำเนินการในส่วน "APK" ของรายชื่อผู้พัฒนา Google ของแอป) การซื้อจะถูกจำลอง แต่ไม่ถูกเรียกเก็บเงินจริง - อย่างไรก็ตามเพื่อล้างและทดสอบการซื้ออีกครั้ง Google ระบุว่าคุณต้องคืนเงินจากกระเป๋าเงิน Google ของคุณ นี่เป็นขั้นตอนเดียวของการทดสอบที่ต้องใช้กระบวนการที่ใช้เวลานานในการใช้โหลดอัลฟ่า / เบต้าและผู้ใช้ทดสอบ


1

หากคุณต้องการดีบัก IAB สิ่งที่คุณต้องทำคือ:

  1. ส่งไปยัง Google Play เวอร์ชันแอปของคุณโดยได้รับอนุญาตจาก IAB ในไฟล์ Manifest:

  2. เพิ่มผลิตภัณฑ์ในแอปของคุณบน Google Play: การจัดการการเรียกเก็บเงินในแอป

  3. ตั้งค่าที่เก็บคีย์ดีบักแบบกำหนดเองที่ลงนาม: กำหนดค่า Eclipse เพื่อใช้ที่เก็บคีย์ที่ลงนามแล้ว


1

มีปัญหาเดียวกันและไม่ได้รับการแก้ไขก่อนที่ฉันจะอ่านโพสต์จาก DZDomi ทันใดนั้นเกิดขึ้นว่ามีการตั้งค่าในแผงควบคุม Google Developer ที่คุณต้องเปิดใช้งาน ในส่วน "ในการซื้อแอป" จะมีบรรทัดสำหรับผลิตภัณฑ์ของคุณและด้านขวาสุดจะมีสถานะเป็นผลิตภัณฑ์ มันควรจะใช้งานได้!


0

ปัญหาของฉันคือฉันพยายามตรวจสอบด้วย debug.keystore ฉันหมายถึงการรันผ่าน eclipse.I ส่งออกด้วย keystore ที่ฉันเผยแพร่ในโหมด alpha (ต้องเผยแพร่ก่อนที่คุณจะสามารถทดสอบได้) ติดตั้งไว้ใน โทรศัพท์ของฉันและฉันสามารถทดสอบได้ตามปกติ


0

ปัญหายังเกิดขึ้นเมื่อคุณเพิ่มการซื้อในแอพหลังจากอัปโหลด apk แต่คุณยังไม่ได้เผยแพร่แอปพลิเคชันใน play store (อัลฟ่าเบต้าและการผลิต)

ซึ่งหมายความว่าคุณต้องเพิ่มการซื้อ In-App หลังจากที่คุณได้เผยแพร่ apk ใน Play store (อัลฟ่าเบต้าและการผลิต) มิฉะนั้นคุณจะไม่สามารถซื้อหรือสอบถามการซื้อในแอพได้


0

อีกเหตุผลที่ไม่ได้กล่าวถึงที่นี่คือคุณต้องทำการทดสอบบนอุปกรณ์จริง เมื่อโปรแกรมจำลองกลายเป็นสิ่งที่ดีจริงๆมันเป็นความผิดพลาดที่ทำได้ง่าย


0

เมื่อเร็ว ๆ นี้ google ได้ดำเนินการเปลี่ยนแปลงระบบของพวกเขาและเนื่องจากคุณอัปโหลด APK อย่างน้อยหนึ่งคอนโซลไปยังคอนโซลของคุณคุณสามารถทดสอบคำขอในแอปของคุณกับแอปของคุณด้วยรหัส / หมายเลขเวอร์ชันใด ๆ

ลิงค์อ้างอิงข้าม

กำหนดค่าgradleให้ลงนามบิลด์ debug ของคุณเพื่อทำการดีบั๊ก

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}

0

สารละลาย

โปรดรอสักครู่หลังจากอัปโหลดแอปของคุณบน play store เพราะ google ใช้เวลาสักครู่ในการอัปเดตเวอร์ชันแอปมันจะใช้งานได้!


0

ฉันมีปัญหาเดียวกันใน moto c2 + ในกรณีของฉันมันเป็นปัญหาอุปกรณ์เมื่อฉันรีสตาร์ทแล้วมันจะ rune ที่สมบูรณ์แบบ ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.