Использование файла примера Google Кошелька дает ошибку
Я реализовал пример кода, который можно найти по адресу https://code.google.com/p/iap-php/ на моем тестовом сайте http://whatisthesite.com/. Как вы могли заметить, после нажатия кнопки "Купить" появляется неопределенное сообщение об ошибке:
There is an error in the setup for your purchase. Please contact the merchant with this error message: Expected 3 components in jwt: $jwtToken
Консоль дает:
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://whatisthesite.com" from accessing a frame with origin "https://sandbox.google.com". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.
markdown-here.js:33
findFocusedElem markdown-here.js:33
intervalCheck
Демо-сайт http://iap-php.appspot.com/ не является https: и нигде в коде нет определения протокола. Любой совет будет оценен, спасибо!
ОБНОВИТЬ:
Это как-то связано с использованием в этом примере синтаксиса Here Doc для использования встроенных переменных PHP в функциях JS. Изменен этот синтаксис:
echo <<< INDEX <button id='runDemoButton' value='buy' class='buy-button' onclick='DemoButton("$jwtToken");'><b>Purchase</b></button> INDEX;
к этому:
<button id='runDemoButton' value='buy' class='buy-button' onclick='DemoButton("<?php echo $jwtToken;?>");'><b>Purchase</b></button>
Но теперь выдает еще более расплывчатую ошибку.
1 ответ
Для ошибок диалога, таких как "В настройке для вашей покупки есть ошибка", соответствующий код ошибки возвращается клиентскому обработчику ошибок:
https://developers.google.com/wallet/digital/docs/jsreference
В вашем случае код ошибки - MERCHANT_ERROR, который указывает на плохо отформатированный JWT. Это может быть связано с использованием неверного КЛЮЧА ПРОДАВЦА или СЕКРЕТА для подписания JWT.