Анализ WeChat Pay: как использовать тестовую среду песочницы

задняя часть WeChat HTTPS API
Анализ WeChat Pay: как использовать тестовую среду песочницы

Эта статья представляет собой десятую статью в серии [Анализ оплаты WECHAT], которая в основном объясняет, как использовать среду песочницы для проверки оплаты WECHAT.


Серия платежей WeChat пополнилась десятью статьями~, те, кто не читал, могут ознакомиться.

Анализ WeChat Pay: скачать выписку и счет фонда

Анализ оплаты WeChat: подать заявку на возврат, интерфейс обратного вызова, запросить возврат

Анализ оплаты WeChat: запрос заказов и закрытие заказов

Анализ оплаты WeChat: уведомление о результате платежа

В реальной разработке мы обычно разрабатываем в среде разработки, и локальная среда также имеет много ограничений, таких как: оплата WeChat не может быть активирована, для ссылки H5 требуется аутентификация, для уведомления о результатах платежа требуется внешняя сеть и т. д.

Перед лицом вышеуказанных проблем официальный представитель WeChat дал решение, которое является статьей.沙箱环境, которая является официальной тестовой средой WeChat Pay. Что может эта среда? Я думаю, что самый важный момент заключается в том, что мы можем вызвать соответствующий интерфейс в режиме реального времени по официальному примеру, и интерфейс немедленно вернет результат.В качестве примера возьмем интерфейс платежного поручения WeChat, после вызова соответствующая информация нашего платежа будет возвращен в режиме реального времени, так что мне не нужно беспокоиться о том, что я не знаю результат возврата во время разработки.

Система имитационного тестирования

Чтобы снизить порог для тестирования продавцом, платежная команда WeChat разработала независимую систему симуляционного тестирования. Система возвращает различные ответные сообщения в зависимости от количества приемочных вариантов использования, чтобы удовлетворить потребности продавцов в нормальном функциональном тестировании, тестировании безопасности/аномальном тестировании и тестировании производительности.

微信支付仿真测试系统1

На рис. 1 представлена ​​упрощенная схема системы тестирования моделирования платежей WeChat (далее именуемой системой моделирования). Протокол API системы моделирования точно такой же, как и официальный API (документ интерфейса API). Разработчикам продавцов нужно только добавить слой к вызывающему URL-адресу официального API.sandboxnewпуть, вы можете подключиться к системе моделирования.

Например, проведите по экрану, чтобы оплатить URL:API.Name.WeChat.QQ.com/Боюсь иметь/микро Боюсь…
Изменить на:API.Name.WeChat.QQ.com/sandbox new/…

Система моделирования полностью независима от производственной среды, включая уровень хранения. Все транзакции, совершенные продавцом в системе моделирования (например, заказ, оплата и запрос), являются поддельными данными без движения капитала, то есть пользователю не нужно вычитать фактический платеж, а у продавца не будет никаких средств для быть зачислено. То же самое верно и для ваучеров: в среде песочницы продавцам не нужно создавать и выдавать настоящие ваучеры, и не будет реальных отчислений по купонам. Ключ проверки API системы приемочного моделирования необходимо получить из API:

仿真测试系统的API验证签名

Исходный код и интерактивный процесс

Ниже приведен официальный WeChat.仿真测试系统Документация:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

Конкретный процесс взаимодействия и сигнатура проверки API соответствующей системы имитационного тестирования описаны выше.Зачем вам нужен этот интерфейс сигнатуры? Это потому, что использование沙箱环境при использовании настоящего商户号,小程序/公众号APP_ID,ноAPI密钥Этот параметр необходимо использовать沙箱环境изsandbox_signkey, этот интерфейс в основном предназначен для получения этого параметра.

Примечание. Идентификатор продавца (идентификатор продавца «родитель-потомок») в тестовой среде моделирования должен использовать реальный идентификатор продавца.

Далее следует получитьsandbox_signkeyПример:

/**
 * 获取沙盒 sandbox_signkey
 *
 * @author yclimb
 * @date 2018/9/18
 */
private void doGetSandboxSignKey() throws Exception {
    WXPayConfigImpl config = WXPayConfigImpl.getInstance();
    HashMap<String, String> data = new HashMap<String, String>();
    // 商户号
    data.put("mch_id", config.getMchID());
    // 获取随机字符串
    data.put("nonce_str", WXPayUtil.generateNonceStr());
    // 生成签名
    String sign = WXPayUtil.generateSignature(data, config.getKey());
    data.put("sign", sign);
    
    // 得到 sandbox_signkey
    WXPay wxPay = new WXPay(config);
    String result = wxPay.requestWithoutCert("/sandboxnew/pay/getsignkey", data, 10000, 10000);
    System.out.println(result);
}

Друзья могутresultЧтобы получить конкретные возвращаемые данные, получите их после синтаксического анализа.sandbox_signkeyпараметр.

Пример процесса взаимодействия мерчантов для доступа к системе симуляции:

  1. Продавец инициирует запрос платежа по кредитной карте и использует метод POST для вызоваAPI.Name.WeChat.QQ.com/sandbox new/…
  2. HTTPS-запросы с sandboxnew будут направляться в систему эмуляции с помощью nginx. Система моделирования возвращает продавцу ожидаемое сообщение в соответствии с суммой платежа (поле total_fee). В то же время поместите данные запроса;
  3. Продавец инициирует проверку и звонитAPI.Name.WeChat.QQ.com/sandbox new/…
  4. После получения запроса на проверку заказа система моделирования возвращает продавцу ожидаемый результат проверки заказа в соответствии с номером заказа и суммой;
  5. Продавец скачивает выписку и звонитAPI.Name.WeChat.QQ.com/sandbox new/…, система моделирования возвращает продавцу фиксированный формат счета. Примечание. Содержание счета не обязательно совпадает с транзакцией, созданной продавцом в системе моделирования.

Инструкции для песочницы: sandbox/sandboxnew
Платежная песочница WeChat предоставляется разработчикам платежных систем WeChat для имитации платежей и уведомлений о обратных вызовах. Чтобы убедиться, что продавец понимает уведомление об обратном вызове, формат выставления счетов и правильно обрабатывает исключения.
◆ Как подключиться к среде песочницы?
1. Измените ссылку на платежный API WeChat в собственной программе или конфигурации продавца, например: адрес отсканированного официального сайта платежа:API.Name.WeChat.QQ.com/Боюсь иметь/микро Боюсь…Добавьте путь sandboxnew и измените его на https://api.mch.weixin.qq.com/sandboxnew/pay/micropay, вы можете получить доступ к среде принятия песочницы, и другие интерфейсы аналогичны;
2. На сайте разработки и отладки платежей WeChat (ссылка на сайт:Имя.WeChat.QQ.com/wiki/doc/AP…), заполните правильные параметры платежа в соответствии с интерфейсным документом, инициируйте платежный запрос WeChat и завершите платеж;
3. После завершения принятия измените ссылку на API в программе или конфигурации (важно!), и удалите новый путь для песочницы. Подключитесь к существующей сетевой среде.

Адрес описания:Боюсь, что есть. WeChat.QQ.com/wiki/doc/AP… Боюсь, что есть. WeChat.QQ.com/wiki/doc/AP…

Эпилог

фактически沙箱环境В основном для облегчения своевременного получения возвращаемых значений интерфейса и商户支付验收Используйте, в этой статье рассказывается о том, как получитьsandbox_signkeyпараметры, а потом как имитировать стыковку, добавить после фактического URL интерфейсаsandboxnewТо есть интерфейс будет возвращать параметры результата в реальном времени, что отличается от формальной среды (формальная среда вызывается асинхронно после оплаты, а среда песочницы возвращается в реальном времени).

Примечание. Некоторые интерфейсы в среде изолированной программной среды интерфейса не просто добавляются в ссылку.sandboxnew, вся ссылка изменится.В реальной работе мы должны проверить официальные документы и сравнить их один за другим.Например, интерфейс возврата платежа, интерфейс официальной линии:/secapi/pay/refund, а интерфейс среды песочницы:/sandboxnew/pay/refund, удалено в среде песочницыsecapiПожалуйста, обратите внимание на этот путь.

Примечание. Чтобы лучше проверить безопасность платежа WeChat, нам необходимо получить доступ к验收测试, следующая статья支付验收示例和验收指引Для всех, чтобы объяснить, пожалуйста, с нетерпением ждите этого! ! !

Если вы хотите увидеть исходный код заранее, вы можете взглянуть на мой github, адрес следующий: ​ ​​https://github.com/YClimb/wxpay-sdk/blob/master/README.md ​

Добавьте личный WeChat автора, учетная запись WeChat автора выглядит следующим образомyclimb, указывая微信支付Вы можете вытащить его в группу обсуждения платежей WeChat для обсуждения с друзьями, обязательно укажите微信支付О~

Эта статья окончена, обратите внимание на официальный аккаунт, чтобы увидеть больше! ! !


关注我的公众号