первый:нет обратного звонка? Или ввести функцию обратного вызова, но не проверить подпись и вернуть отказ в Alipay?
В соответствии с обычной логикой, если проверка не пройдена, бизнес-обработка не будет выполняться для изменения статуса заказа, и заказ все еще находится в неоплаченном состоянии. Для того, чтобы определить, нет ли обратного вызова или проверка не удалась, вы можете распечатать информацию, полученную в запросе, в функции обратного вызова, либо сохранить ее в Redis для просмотра.
Один: нет обратного звонка
Если обратного вызова нет, весьма вероятно, что ваш notify_url недоступен из внешней сети. Такая ситуация может легко возникнуть в период локальной отладки. Вы можете использовать DingTalk для локального проникновения во внешнюю сеть. Подробности см. средняя часть этой статьи.
Если доступа к серверу нет, то это будет проблема https.SSL-сертификат, зарегистрированный компанией, не является стандартным, поэтому Alipay не может распознать https.
2: проверка подписи не удалась
В методе проверки подписи Alipay используется метод, поставляемый с SDK (полный метод обратного вызова см. на странице https://juejin.cn/post/6844903742308007949):
boolean signVerified = AlipaySignature.rsaCheckV1(params, alipayConfig.getAlipayPublicKey(), AlipayConfig.charset, AlipayConfig.signType);
Параметры: информация, полученная из запроса (форма карты), открытый ключ Alipay, метод кодирования и метод подписи.
Так как это метод, инкапсулированный в SDK, то крайне маловероятно, что будут проблемы.Тогда проблема 100% в параметрах.Расскажем о них по порядку.
1.params Это информация, возвращаемая Alipay. Пока Alipay возвращает вам информацию, она должна быть в стандартном формате, и вероятность ошибки очень мала. Она будет исключена из метода знака. Так что с этим параметром в принципе проблем нет.
2. Формат кодировки и метод шифрования, эти два вообще фиксированные, UTF-8 и RSA2 и вообще проблем не будет.
3. Публичный ключ Alipay, который, скорее всего, будет неверным. Давайте сначала поговорим о методе генерации этого параметра, введите open.alipay.com, войдите в систему и войдите в мою открытую платформу, найдите Центр разработчиков в верхнем левом углу --> Веб-приложение и мобильное приложение, найдите свое собственное приложение и нажмите, чтобы просмотреть подробности
Загрузите инструмент шифрования в соответствии с официальным документом https://docs.open.alipay.com/200/105310, сгенерируйте открытый ключ и закрытый ключ и вставьте открытый ключ сюда, следующий открытый ключ Alipay будет сгенерирован автоматически, и закрытый ключ хранится локально. Открытый ключ Alipay, необходимый для проверки подписи, — это строка, показанная на рисунке выше. Нажмите, чтобы просмотреть открытый ключ Alipay.
Проблема заключается в загрузке инструмента шифрования, здесь следует использовать последнюю версию V1.4 (обновлено согласно официальному сайту Alipay)
Если вы используете более старую версию, платеж все равно пройдет успешно, но проверка подписи завершится ошибкой! ! !
Если вы используете более старую версию, платеж все равно пройдет успешно, но проверка подписи завершится ошибкой! ! !
Если вы используете более старую версию, платеж все равно пройдет успешно, но проверка подписи завершится ошибкой! ! !
Вы можете видеть, что в строке меню над этим инструментом также есть функция проверки подписи.Вы можете использовать открытый ключ и закрытый ключ, сгенерированные вами, чтобы сначала проверить его здесь.
Если есть какие-либо ошибки или вопросы в вышеизложенном, пожалуйста, исправьте или задайте их в области комментариев, спасибо!