рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдореЗрдВ рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА

1. рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓, рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рдЖрднрд╛рд╕реА рд╕рд╛рдорд╛рди рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦреЗрд▓ рдореБрджреНрд░рд╛, рдирдП рд╕реНрддрд░, рдЦреЗрд▓ рдЖрдЗрдЯрдо, рдЖрджрд┐)ред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЧреЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рд╕рд╡рд╛рд▓ рдЖрдкрдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдкреИрд╕рд╛ рдХрдорд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдарддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╢реБрд▓реНрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ)ред

2. Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА

рдЬрдм рдореБрдЭреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рдЦреЗрд▓ рдореЗрдВ рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛, рддреЛ рдЗрд╕ рдЦреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХрд┐ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдореЗрд░реЗ рдЦреЗрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХрд╛ рд╡рд░реНрдгрди рд╣реИрдмрд░ рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдкрдиреА рджреГрд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдореИрдиреБрдЕрд▓ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХрд╛рдордХрд╛рдЬ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рдмрд╛рдд рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕реАрдзреЗ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Android Market рдкрд░ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдЦрд░реАрджрд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ IMarketBillingService.aidl рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдХрд╛ рдПрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдХ рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ рдФрд░ рдПрд╡реАрдбреА рдореИрдиреЗрдЬрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬ рдЪреБрдиреЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдРрдб-рдСрди -> Google Inc. рдРрдб-рдСрди -> Google рдорд╛рд░реНрдХреЗрдЯ рдмрд┐рд▓рд┐рдВрдЧ рдкреИрдХреЗрдЬред

рдЕрдм рдЖрдкрдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП IMarketBillingService.aidl рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ com.android.vending.billing рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рдХрдЯ рдореЗрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВ: <рдЙрдкрдпреЛрдЧ-рдЕрдиреБрдорддрд┐ рдПрдВрдбреНрд░реЙрдЗрдб: рдирд╛рдо = "com.android.vending.BILLING" />ред

рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рднреА рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрдпрд╛ рд╣реИ:

BillingReceiver - рдмрд╛рдЬрд╛рд░ рд╕реЗ рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрдЧреЗ BillingService рднреЗрдЬрддрд╛ рд╣реИ;
рдмрд┐рд▓рд┐рдВрдЧ рд╕реЗрд╡рд╛ - рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ;
рдХреЙрдиреНрд╕реНрдЯреНрд╕ - рдирдореВрдирд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ;
рдбрдВрдЧрдСрди - рдПрдХ рдпреВрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдг рдЦрд░реАрдж рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ;
рдкрд░реНрдЪреЗрдбрд╛рдмреЗрд╕ - рдПрдХ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕;
рдЦрд░реАрдж рдЕрдзрд┐рдХрд╛рд░реА - рдЦрд░реАрдж рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛;
ResponseHandler - рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдпреВрдЖрдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛;
рд╕реБрд░рдХреНрд╖рд╛ - рд╕реБрд░рдХреНрд╖рд╛;
Base64 рдФрд░ Base64DecoderException - рдмрд╛рдЗрдирд░реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмреЗрд╕ 64 рддрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХред

рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдЧ рдореЗрдВ, рд▓рд╛рдЗрди рджреЗрдЦреЗрдВ:
String base64EncodedPublicKey = тАЬтАжтАЭ
рдФрд░ Android Market рдкрд░ рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЕрдкрдирд╛ PublicKey рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

Dungeons рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЙрди рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмреЗрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдореЗрдВ рдмрджрд▓ рджреЗрдВред рдЙрд╕реА рд╕рдордп, рд╕рд╛рдорд╛рди рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдорд╛рд░реНрдХреЗрдЯ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрджрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ (рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ) рдФрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрд╡реЗрджрди рддреИрдпрд╛рд░ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЦрд░реАрджрд╛рд░реА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдЦрд░реАрдж рдкреВрд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╛рдЬрд╛рд░ рдЦрд░реАрджреЗ рдЧрдП рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде JSON рд▓рд╛рдЗрди рднреЗрдЬреЗрдЧрд╛:
{ "nonce" : 1836535032137741465,
"orders" :
{ "notificationId" : "android.test.purchased",
"orderId" : "transactionId.android.test.purchased",
"packageName" : "com.example.dungeons",
"productId" : "android.test.purchased",
"developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseTime" : 1290114783411,
"purchaseState" : 0 }
}

рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдЖрдкрдХреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдЕрдкрдиреА рдХреБрдВрдЬреА (рдЖрд░рдПрд╕рдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реМрдЯреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рддреНрдпрд╛рдкрди рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП php рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдУрдкрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред

рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ ред

Source: https://habr.com/ru/post/In123642/


All Articles