Получение строк запроса на стороне сервера для мобильных платежей Alipay

Я не совсем уверен, насколько популярным или получит ли этот вопрос какие-либо ответы, так как этот вопрос больше связан с китайскими разработчиками, чем с разработчиками за пределами, однако в настоящее время я работаю над интеграцией серверных сценариев для Alipay для получения мобильного Строки запроса успеха.

Я успешно смог предоставить моим мобильным парням (прищурив глаза в ужасном API Alipay) строки, необходимые им для оплаты Alipay. Это следует за этим форматом [идентифицируемая информация удерживается]:

_input_charset=\"utf-8\"&body=\"Order Number: 20141121_80\"&it_b_pay=\"30m\"&notify_url=\"http://somePublicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"2088611100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"Order Number: 20141121_80\"&total_fee=\"10.01\"

Приведенная выше строка используется API-интерфейсом Android / iOS в классах оплаты Alipay, затем подписывается закрытым ключом и отправляется в Alipay. После получения запроса Alipay они проверят строку нашего параметра и отправят обратно коды состояния в диапазоне от 6000 до 9000.

Мы до сих пор получили resultStatus=9000 в строке, которая возвращается мобильным парням, что указывает на успешный платеж (и, проверив историю кошелька Alipay, мы действительно видим, что мы сделали платеж)

result = {
memo = "";
result = "_input_charset=\"utf-8\"&body=\"\U4ea4\U6613\U53f7 20141124_80\"&it_b_pay=\"30m\"&notify_url=\"http://publicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"208861100000000\"&payment_type=\"1\"&seller_id=\"account@website.com\"&service=\"mobile.securitypay.pay\"&subject=\"\U65b0\U5143\U7d20\U7f51\U4e0a\U70b9\U9910 - \U8ba2\U5355\U7f16\U53f7 20141124_87\"&total_fee=\"0.01\"&success=\"true\"&sign_type=\"RSA\"&sign=\"reallyLongSignedString\"";
resultStatus = 9000;
}

Вот где все перестает работать:

Alipay теоретически должен отправлять строку результата (с большим количеством параметров, чем показано выше) также на наш notify_url который мы указали в наших входных параметрах, которые наш сервер должен проверить, это Alipay. Эта строка результата также будет использоваться для обновления нашего бэкэнда, чтобы мы знали, что заказ действительно был успешным.

По какой-то причине Alipay просто не отправляет результирующую строку в указанный notify_url,

Что я пробовал:

  1. Положить var_dump() входов POST в payment/alipay/callback, Не получил любой Запросы.

  2. Я попытался свернуть мой публичный IP-адрес payment/alipay/callback и я знаю, что это работает, потому что я получаю запросы, так что исключает, мой или нет callback URL работает или нет.

  3. Выдернуть мои волосы. Я проверил платеж еще раз, и я могу подтвердить, что снятие волос не решило проблему.

Как часто говорят китайские разработчики, есть ли какие-нибудь «大 神» (или гуру), которые могли бы предложить мне какой-нибудь совет и / или решение?

4

Решение

Хорошо, я только что позвонил в службу поддержки Alipay.

Мы убедились, что они отправили запрос на мой notify_url, но у моего класса уведомлений был фрагмент кода перенаправления PHP, так что он просто перенаправлялся на мою целевую страницу (результатом их был код HTML моей главной страницы).

Итак, урок усвоен:

  1. Не помещайте перенаправления в notify_url

  2. Обратитесь в службу поддержки Alipay — они могут помочь больше, чем вы думаете (хорошо. Меньше, чем я думаю, но они все же помогли).

Я также реализовал их неприятный код спагетти для класса Notify (который отвечает за обработку возвращаемых параметров). Код не очень красивый, все отступы неверны, а комментарии на китайском .. Но похоже, что это сработает. Итак, мы отправим его сначала, а затем рефакторинг && перевести позже ..

1

Другие решения

Других решений пока нет …