React-native-iap: validateReceiptIos๋Š” ํ•ญ์ƒ false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 08์›” 15์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dooboolab/react-native-iap

react-native-iap ๋ฒ„์ „

2.0.0-alpha3
(1.1.5๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฐ™์€ ๋ฌธ์ œ)

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ”Œ๋žซํผ (IOS ๋˜๋Š” Android ๋˜๋Š” ๋‘˜ ๋‹ค?)

iOS

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

validateReceiptIos๋Š” ์œ ํšจํ•œ ์˜์ˆ˜์ฆ์— ๋Œ€ํ•ด 0 / 1 / true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™

validateReceiptIos๋Š” ํ•ญ์ƒ false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๋œ ํ™˜๊ฒฝ (์—๋ฎฌ๋ ˆ์ดํ„ฐ? ์‹ค์ œ ์žฅ์น˜?)

์‹ค์ œ ๊ธฐ๊ธฐ, ์ƒŒ๋“œ ๋ฐ•์Šค ์•ฑ ์Šคํ† ์–ด

ํ–‰๋™์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„

์ž๋™ ๊ฐฑ์‹  ๊ตฌ๋…์„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ๋งคํ•˜๊ณ  ๊ฑฐ๋ž˜ ์˜์ˆ˜์ฆ์„๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. validateReceiptIos (receiptBody, true, 55)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ iOS์—์„œ ์ด๊ฒƒ์„ ๊ฒ€์ฆํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ•ญ์ƒ false๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

JSON.stringify (res)๋ฅผ ๊ธฐ๋กํ•˜๋ฉด ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.
{ "status": 21004, "environment": "Sandbox"}

# 190 ์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค

1๏ธโƒฃ good first issue ๐Ÿ“ฑ iOS ๐Ÿ™ help wanted

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ
๋ฐฉ๊ธˆ ์˜์ˆ˜์ฆ Body์— ๊ณต์œ  ๋น„๋ฐ€์„ ์ถ”๊ฐ€ํ–ˆ๊ณ  ์ด์ œ ์ด์Œ์ƒˆ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์„œ์˜ ์–ด๋”˜๊ฐ€์—์„œ ๋†“์นœ ๊ฒƒ์ผ๊นŒ ์š”? ์•„๋‹ˆ๋ฉด ๊ทธ๋ ‡๊ฒŒ๋˜์–ด์•ผํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๊นŒ?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(์•„์ง ๋ฒ„์ „ 2.0.0-alpha3 ์‚ฌ์šฉ)

๋ชจ๋“  11 ๋Œ“๊ธ€

์–ด๋–ค ์ค„์— ๋กœ๊ทธ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๊นŒ? ๐Ÿค”

๋˜ํ•œ ์–ด๋–ค ๋ฒ„์ „์˜ React Native๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@fabianunger ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. # 190์—์„œ ์ˆ˜์ •๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

"๋ฐ˜์‘": "^ 16.3.2"
"react-native": "^ 0.55.3"

```
validate = async (์ œํ’ˆ) => {
{
console.log (์ œํ’ˆ);

  const receiptBody = {
    'receipt-data': product.transactionReceipt,
  };
  console.log(receiptBody);

  const result = await RNIap.validateReceiptIos(receiptBody, true, 55);
  console.log(result);

} catch(err) {
  console.warn(err.code, err.message);
  Alert.alert(err.message);
}

};

```

@fabianunger ์ด ๋ฒ„์ „ ์„ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๋” ์ž์„ธํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

npm install LinusU/react-native-iap#ios-validate

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ
๋ฐฉ๊ธˆ ์˜์ˆ˜์ฆ Body์— ๊ณต์œ  ๋น„๋ฐ€์„ ์ถ”๊ฐ€ํ–ˆ๊ณ  ์ด์ œ ์ด์Œ์ƒˆ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์„œ์˜ ์–ด๋”˜๊ฐ€์—์„œ ๋†“์นœ ๊ฒƒ์ผ๊นŒ ์š”? ์•„๋‹ˆ๋ฉด ๊ทธ๋ ‡๊ฒŒ๋˜์–ด์•ผํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๊นŒ?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(์•„์ง ๋ฒ„์ „ 2.0.0-alpha3 ์‚ฌ์šฉ)

๋ฟก๋ฟก
๊ท€ํ•˜์˜ ๋ฒ„์ „์œผ๋กœ๋„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฒฐ๊ณผ.
์‘๋‹ต์œผ๋กœ { "status": 21004, "environment": "Sandbox"}๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์˜์ˆ˜์ฆ Body ๋‚ด์—์„œ ๊ณต์œ  ๋น„๋ฐ€์„ '๋น„๋ฐ€๋ฒˆํ˜ธ'๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ : ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๊นŒ?

@fabianunger ์ž˜ํ•˜์…จ์Šต๋‹ˆ๋‹ค . ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐ ํ•˜์‹ญ์‹œ์˜ค. ํž˜๋“  ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

shared secret ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋””์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

shared secret ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋””์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

https://www.appypie.com/faqs/how-can-i-get-shared-secret-key-for-in-app-purchase

{status : 21007}์„ ๋ฐ˜ํ™˜ํ•˜๋Š” Production Mode์—์„œ Reciept๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์œผ๋กœ mw๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค

์ด๋ด:

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

"21007 :์ด ์˜์ˆ˜์ฆ์€ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์˜จ ๊ฒƒ์ด์ง€๋งŒ ๊ฒ€์ฆ์„ ์œ„ํ•ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์œผ๋กœ ์ „์†กํ•˜์‹ญ์‹œ์˜ค."

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ํ™•์ธ์— ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. https://sandbox.itunes.apple.com/verifyReceipt

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰