React-native-iap: [Android] getProducts рд╣рдореЗрд╢рд╛ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dooboolab/react-native-iap

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг

0.3.15 рд╣реИ

рдЬрд┐рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдореЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (IOS рдпрд╛ Android рдпрд╛ рджреЛрдиреЛрдВ?)

рдПрдВрдбреНрд░реЙрдпрдб

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рд╕рднреА рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

рд╕рднреА iOS рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди getProducts рд╣рдореЗрд╢рд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрджрдо рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ ...

рдПрдкреНтАНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдмрд┐рд▓рд┐рдВрдЧ рдЕрдкрд▓реЛрдб / рдорд░реНрдЪреЗрдВрдЯ рдЕрдХрд╛рдЙрдВрдЯ рд╕реЗрдЯ рдЕрдк / рдХреНрд░рд┐рдПрдЯ рдХрд░реЗрдВ ...

ЁЯЩП help wanted

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@vadermemo @martinberbesson рд╣рд╛рдп ~ рдХреНрдпрд╛ рдЖрдк itemSkus рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ js рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдиреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рддрд░рд╣ рд╕реЗрдЯ рдХрд┐рдпрд╛?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреНрд░рд╛рдлреНрдЯ рдРрдк рдкрд░реАрдХреНрд╖рдг рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЧрд╛рдЗрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдРрдк рдХреЛ рдЕрд▓реНрдлрд╛ рдпрд╛ рдмреАрдЯрд╛ рдЪреИрдирд▓ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБ

рдореЗрд░рд╛ рд╕реНрдирд┐рдкреЗрдЯ:

  RNIap.prepare().then(responsePrepare => {
    console.log("=============>responsePrepare:" + responsePrepare);
    RNIap.getProducts(itemSkus).then(response => {
        this.setState({ items  : response});
        console.log("=============>response:" + JSON.stringify(response));
    });
  });

Adb.logcat (Android) рдкрд░ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

208 28473 28524 I ReactNativeJS: рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ "рдкрд░реАрдХреНрд╖рдгрдЖрдИрдПрдкреА" рдРрдкрдкрд░рд╛рдо: {"рд░реВрдЯрдЯреИрдЧ": 11}ред __DEV__ === рд╕рдЪ, рд╡рд┐рдХрд╛рд╕-рд╕реНрддрд░реАрдп рдЪреЗрддрд╛рд╡рдиреА рдЪрд╛рд▓реВ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдмрдВрдж рд╣реИрдВ
режрек-реирел рез50: режрек: режрек.реиреи: резрезрекреж резрезрелреж рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
режрек-реирел рез59: режрек: режрек.реирейреж резрезрекреж реирежрел реп рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
04-25 17: 04: 04.232 24842 24933 I Finsky: [4061] com.google.android.finsky.billing.iab.ab.b.b (46): com.projectbundle: рдкрд╣рд▓реЗ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ - [uuAJBL1tLX2MAj69S-olEslXXXX
04-25 17: 04: 04.233 28473 28473 D RNIapModule: рдмрд┐рд▓рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рддреИрдпрд╛рд░
04-25 17: 04: 04.303 28473 28524 I ReactNativeJS: =============> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдкрдж: рдЕрд╢рдХреНрдд
04-25 17: 04: 04.308 28473 28524 I ReactNativeJS: =============> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдкреНрд░реЗрдо: рдЕрд╢рдХреНрдд
режрек-реирел рез7: режрек: режрек.рейреи40 резрезрекреж реирезреж Account рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
режрек-реирел рез96: режрек: режрек.рейрейреж резрезрекреж рез Account реп рем рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
режрек-реирел рез95: режрек: режрек.рейрей реп резрезрекреж реиреж реп рел рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
режрек-реирел рез79: режрек: режрек.рейрекреж резрезрекреж резрем Account реп рдореИрдВ рдЦрд╛рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛: getTypesVoubleToCaller: isPermitted? рд╕рдЪ
04-25 17: 04: 04.343 24842 24854 I Finsky: [4020] com.google.android.finsky.billing.iab.ab.b.b (46): com.projectbundle: рдкрд╣рд▓реЗ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ - [uuAJBL1tLX2MAj69S-olEslXXXX
04-25 17: 04: 04.347 24842 24853 I Finsky: [4019] com.google.android.finsky.billing.iab.ab.b.b (46): com.projectbundle: рдкрд╣рд▓реЗ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ - [uuAJBL1tLX2MAj69S-olEslXXXX
04-25 17: 04: 04.626 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.628 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.669 28473 28524 I ReactNativeJS: =============> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ []
04-25 17: 04: 04.693 28473 28524 I ReactNativeJS: =============> рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: []

рд▓реЗрдХрд┐рди iOS рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдПрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлреЙрд░реНрдореЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИред

PD1 рдореБрдЭреЗ https://medium.com/@dooboolab/react -native-in-app-buy-121622d26b67 рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ

PD2 "рдореЗрд░реА рдорджрдж рдХрд░реЛ рдУрдмреА рд╡рд╛рди рдХреЗрдиреЛрдмреА рддреБрдо рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рдЖрд╢рд╛ рд╣реЛ"

Package.json рд╕реНрдирд┐рдкреЗрдЯ:
"рдирд┐рд░реНрднрд░рддрд╛": {
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.3.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.55.3",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА": "^ 0.3.18"
},

@vadermemo @martinberbesson рд╣рд╛рдп ~ рдХреНрдпрд╛ рдЖрдк itemSkus рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ js рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдкрдиреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рддрд░рд╣ рд╕реЗрдЯ рдХрд┐рдпрд╛?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреНрд░рд╛рдлреНрдЯ рдРрдк рдкрд░реАрдХреНрд╖рдг рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЧрд╛рдЗрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдРрдк рдХреЛ рдЕрд▓реНрдлрд╛ рдпрд╛ рдмреАрдЯрд╛ рдЪреИрдирд▓ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рд╣рд╛рдп @dooboolab

рдпрд╣ рдореЗрд░рд╛ рдбреЗрдЯрд╛ рд╣реИ
const рдЖрдЗрдЯрдорд╕реНрдХрд╕ = Platform.select ({
ios: [
'com.iap.cart',
'com.iap.doublecoins'
],
рдПрдВрдбреНрд░реЙрдпрдб: [
'рдбрдмрд▓',
'cart_1500'
],
};

рд╕рд╛рджрд░

PD1 рдореЗрд░рд╛ рдРрдк рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред
PD2 рдЕрдиреНрдп npm рдХреЗ рд╕рд╛рде, рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдмрд┐рд▓рд┐рдВрдЧ рдореИрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ :(

@vadermemo рдпрд╣ рд╕реНрдореГрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╣реИ .. рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдпрд╣ рдореЗрд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ tomorow рдбрд┐рдмрдЧ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ tommorow рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдБрдЧрд╛! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреНрдпрд╛ рдЖрдк рдмрдпрд╛рди рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдмрд┐рд▓рд┐рдВрдЧ рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреАрдХреЗ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ

@dooboolab рдЦреИрд░, рдЕрдЧрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорджрдж рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЕрдЧрд▓рд╛ рдмрд┐рдВрджреБ рд╣реИ:

рдЬрдм рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдмрд┐рд▓рд┐рдВрдЧ рдкрд░ рдбрд╛рд▓рд╛ рддреЛ рдореИрдВрдиреЗ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓ "string.xml" рдореЗрдВ рдкрд░рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо = "RNB_GOOGLE_PLAY_LICENSE_KEY" рдбрд╛рд▓рд╛ред
рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рдЖрдИрдПрдкреА рдореЗрдВ рдореИрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред

рдЕрдЧрд▓реЗ рд▓реЙрдЧ рдореЗрдВ рдлреЗрдВрдХреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдкрдХрдбрд╝реЗрдВ:

  1. рдореЗрд░реЗ рдЖрдЗрдЯрдо рдмрджрд▓реЗрдВ

const рдЖрдЗрдЯрдорд╕реНрдХрд╕ = Platform.select ({
ios: [
'predictorcart_1500',
],
рдПрдВрдбреНрд░реЙрдпрдб: [
'predictorcart_1500',
'android.test.purchased',
'android.test.canceled',
'android.test.refunded',
'android.test.item_unavailable',
],
};

  1. рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдорд╛рдЙрдВрдЯ рдкрд░ рдмрджрд▓рд╛рд╡

    async рдШрдЯрдХрдбрд┐рдорд╛рдЙрдВрдЯ () {
    рдкреНрд░рдпрддреНрди {
    рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.prepare ();
    рдЗрд╕ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред рдЗрд╕реЗ ();

    }
    рдкрдХрдбрд╝рдирд╛ (рдЧрд▓рддреА рдХрд░рдирд╛) {
    рд╕рд╛рдВрддреНрд╡рдирд╛.рджреНрд╡рд╛рд░рд╛ (рдЗрд░реЗрдЯрд╛ред рдЗрд░реЛрдб, рдЗрд░реЗрдЬрдореЗрдЬ);
    }
    }

  2. рдбреЗрдЯрд╛ рдмрджрд▓реЗрдВ

    getProductDetails = async () => {
    рдкреНрд░рдпрддреНрди {
    const рдЙрддреНрдкрд╛рджреЛрдВ = RNIap.getProducts (itemSkus) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
    рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('=======> рдЙрддреНрдкрд╛рдж ::::', рдЙрддреНрдкрд╛рдж);
    it.setState ({productDetails: products});
    } рдкрдХрдбрд╝ (рдЧрд▓рддреА) {
    рд╕рд╛рдВрддреНрд╡рдирд╛.рджреНрд╡рд╛рд░рд╛ (рдЗрд░реЗрдЯрд╛ред рдЗрд░реЛрдб, рдЗрд░реЗрдЬрдореЗрдЬ);
    }
    }

  3. рдПрдХ рдмрдЯрди рд▓рдЧрд╛рдУ
    \ _

  4. рдРрдк рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд░рдЦреЗрдВ
    рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА рд░рди-рдПрдВрдбреНрд░реЙрдЗрдб --variant = рд░рд┐рд▓реАрдЬрд╝

6. рдЖрдорддреМрд░ рдкрд░ рд▓реЙрдЧ рдЕрдЧрд▓реЗ рд╣реИ:
04-26 12: 53: 11.335 16749 16759 I Finsky: [11707] com.google.android.finsky.billing.iab.ab.b.b (46): com.projectbundle - рдкрд╣рд▓реЗ рдЦрд╛рддреЗ рд╕реЗ рдЦрд╛рддрд╛ - [uuAJBL1tLX2MAj69-olEl331212
04-26 12: 53: 11.401 226 1177 V рдСрдбрд┐рдпреЛ_hw_primary: do_output_standby in
04-26 12: 53: 11.409 20362 20432 D RNIapModule: responseCode: 0
04-26 12: 53: 11.426 226 1177 рдбрдмреНрд▓реНрдпреВ рдСрдбрд┐рдпреЛ_hw_primary: do_output_standby.mode: 0
04-26 12: 53: 11.426 226 1177 V рдСрдбрд┐рдпреЛ_hw_primary: do_output_standby in
режрек-реирем резреи: релрей: резрез.рекреи40 резрезрекреж реирезрежрем рдбреА рдкреЙрд╡рд░рдореИрдирдЬрд░ рд╕рд░реНрд╡рд┐рд╕: рд░рд┐рд▓реАрдЬрд╝рд╡реЙрдХрдХреМрди рд╕рд╛рднрд╛рд░: рд▓реЙрдХ = [[резрекрем = 8 [рдСрдбрд┐рдпреЛрдорд┐рдХреНрд╕], рдЭрдВрдбреЗ = режxреж, рдХреБрд▓_рдЯрд╛рдЗрдо = рейрезремрем
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: '=======> рдЙрддреНрдкрд╛рдж ::::', [{рд╡рд┐рд╡рд░рдг: 'Descripci├│n de muestra para el producto: Android.test.canceledред'ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╢реАрд░реНрд╖рдХ: 'рдЯреАрддреБрд▓реЛ рдбреА рдореБрдПрд╕реНрдЯреНрд░рд╛',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╕реНрдерд╛рдиреАрдпрдХреГрддрдкреНрд░рдХрд╛рд░: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдкреНрд░рдХрд╛рд░: 'рдЕрдиреБрдкрдпреБрдХреНрдд',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореБрджреНрд░рд╛: 'рдПрдордПрдХреНрд╕рдПрди'
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореВрд▓реНрдп: '1865 ','ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.canceled'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {рд╡рд┐рд╡рд░рдг: 'Descripci├│n de muestra para el producto: android.test.item_unavailableред'ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╢реАрд░реНрд╖рдХ: 'рдЯреАрддреБрд▓реЛ рдбреА рдореБрдПрд╕реНрдЯреНрд░рд╛',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╕реНрдерд╛рдиреАрдпрдХреГрддрдкреНрд░рдХрд╛рд░: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдкреНрд░рдХрд╛рд░: 'рдЕрдиреБрдкрдпреБрдХреНрдд',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореБрджреНрд░рд╛: 'рдПрдордПрдХреНрд╕рдПрди'
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореВрд▓реНрдп: '1865 ','ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.item_unavailable'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {рд╡рд┐рд╡рд░рдг: 'Descripci├│n de muestra para el producto: android.test.purchasedред'ред
режрек-реирем резреи: релрей: резрез.рекрекрек реирежрейремреи реирежрекрейрез рдореИрдВ рд░рд┐рдПрдХреНрдЯрдирд╡реЗрдЯрд┐рд╡рдЬрд╕: рд╢реАрд░реНрд╖рдХ: 'рдЯрд┐рдЯреБрд▓реЛ рдбреА рдореБрдПрд╕реНрдЯреНрд░рд╛',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╕реНрдерд╛рдиреАрдпрдХреГрддрдкреНрд░рдХрд╛рд░: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдкреНрд░рдХрд╛рд░: 'рдЕрдиреБрдкрдпреБрдХреНрдд',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореБрджреНрд░рд╛: 'рдПрдордПрдХреНрд╕рдПрди'
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореВрд▓реНрдп: '1865', 'ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.purchased'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {рд╡рд┐рд╡рд░рдг: 'Descripci├│n de muestra para el producto: android.test.refundedред'ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╢реАрд░реНрд╖рдХ: 'рдЯреАрддреБрд▓реЛ рдбреА рдореБрдПрд╕реНрдЯреНрд░рд╛',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рд╕реНрдерд╛рдиреАрдпрдХреГрддрдкреНрд░рдХрд╛рд░: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдкреНрд░рдХрд╛рд░: 'рдЕрдиреБрдкрдпреБрдХреНрдд',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореБрджреНрд░рд╛: 'рдПрдордПрдХреНрд╕рдПрди'
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: рдореВрд▓реНрдп: '1865', 'ред
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.refunded'}]

@martinberbesson рдореЗрд░реЗ рдкрд╛рд╕ рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬ рдкрд░ рдПрдХ рдРрдк рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдмрд╛рдд рд╣реИ, рд╢рд╛рдпрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдЖрдИрдПрдкреА рдпрд╛ Google рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред

@martinberbesson @dooboolab рдЕрддреБрд▓реНрдп !!

рдореИрдВрдиреЗ рдЙрд╕реА рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдРрдк рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдРрдк рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ !!ред рдореИрдВ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдпрд╛ Google рдХрдВрд╕реЛрд▓ рдкрд░ рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред

рдкреАрдбреА рдореИрдВ рд╕рд╣реА рдЖрдЗрдЯрдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 5 рдШрдВрдЯреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред
PD2 рдкреБрд░рд╛рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 24 рдШрдВрдЯреЗ рдХреЗ рд╕рд╛рде рднреА рдЖрдЗрдЯрдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВред
PD3 @dooboolab рдЕрдм рдЖрдк рд╢рд╛рдВрдд рд╕реЛ рд╕рдХрддреЗ рд╣реИрдВред :)
PD4 рдореИрдВ рдЦрд░реАрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реВрдВрдЧрд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реИ

рд╕рд╛рджрд░,

@vadermemo рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Android рдХреЗ рд▓рд┐рдП рдирдП iap рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЬреЛ v3 рд╣реИ, рдЖрдкрдХреЛ string.xml рдореЗрдВ рдХреБрдЫ рдФрд░ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рддрд┐ # 124 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ - рдХрдо рд╕реЗ рдХрдо рдореМрдЬреВрджрд╛ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ https://stackoverflow.com/a/35132936/1374827 рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЙрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

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

рдпрджрд┐ рдЖрдк рдХреЛрдИ рдЙрддреНрдкрд╛рдж рдЦрд░реАрдж рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрд╕реА рдирд╕ рдореЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк RNIap.buySubscription рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ RNIap.buyProduct ред

рдареАрдХ рд╣реИ, рдЗрд╕ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдореБрджреНрджрд╛ Android рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЕрдиреБрднрд╡рд╣реАрдирддрд╛ рдирд┐рдХрд▓рд╛ред рдореИрдВ рджреЗрд╡ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЬрдм рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдареАрдХ рдЪрд▓рддрд╛ рдерд╛, рддреЛ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд▓реМрдЯрд╛ рд░рд╣рд╛ рдерд╛ред рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдФрд░ рдЗрди рдпрд╣ рд╕рдм рджреЗрдЦ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдореБрдЭреЗ рднреА рдЦрд╛рд▓реА рд╕рд░рдгреА рдорд┐рд▓ рд░рд╣реА рд╣реИ,
рдФрд░ рдореИрдВ https://developer.android.com/google/play/billing/billing_testing#draft_apps doc рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рд╣реВрдВ, рдХрд┐ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддрд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрд░реАрдХреНрд╖рдХ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж!

рд╡рд╣реА

@bharatidudhjiya @tmjordan рдпрджрд┐ рдЖрдк рд▓реЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╢реБрджреНрдз Android iap рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ Android рдХреЗ iap sdk рдкрд░ рдмреЗрд╣рддрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░реЗрдЧрд╛ред

@ рдпреЛрдЪрди рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореИрдВ рд╡рд╣ рдХрд░ рд▓реВрдВрдЧрд╛

@tmjordan рдпрд╣ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдмреЗрд╕рд┐рдХ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛ рдпрд╛рд░ @hyochan

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛! рдореИрдВ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ,

react-native-iap: ^4.3.0
react-native: 0.60.5

рдмрд╕ рдЗрд╕реЗ рдРрд╕реЗ рд╣реА рдХрд░реЛ

const itemSkus = Platform.select({
    ios: [
        '100coins' // just remove bundle id from product id
    ],
    android: [
        '100coins' // just remove bundle id from product id
    ]
});

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреИрдХреЗрдЬ рдирд╛рдо рд╣реИред

рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрдорд╛рдВрдб рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрд╡рдЪреНрдЫ /рдЧреНрд░реЗрдб рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВред

рд╣реИрдкреНрдкреА рдХреЛрдбрд┐рдВрдЧред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

chetstone picture chetstone  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

HamzaIkram2727 picture HamzaIkram2727  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jvandenaardweg picture jvandenaardweg  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

schumannd picture schumannd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jvandenaardweg picture jvandenaardweg  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ