Эта статья представляет собой десятую статью в серии [Анализ оплаты WECHAT], которая в основном объясняет, как использовать среду песочницы для проверки оплаты WECHAT.
Серия платежей WeChat пополнилась десятью статьями~, те, кто не читал, могут ознакомиться.
Анализ WeChat Pay: скачать выписку и счет фонда
Анализ оплаты WeChat: подать заявку на возврат, интерфейс обратного вызова, запросить возврат
Анализ оплаты WeChat: запрос заказов и закрытие заказов
Анализ оплаты WeChat: уведомление о результате платежа
В реальной разработке мы обычно разрабатываем в среде разработки, и локальная среда также имеет много ограничений, таких как: оплата WeChat не может быть активирована, для ссылки H5 требуется аутентификация, для уведомления о результатах платежа требуется внешняя сеть и т. д.
Перед лицом вышеуказанных проблем официальный представитель WeChat дал решение, которое является статьей.沙箱环境
, которая является официальной тестовой средой WeChat Pay. Что может эта среда? Я думаю, что самый важный момент заключается в том, что мы можем вызвать соответствующий интерфейс в режиме реального времени по официальному примеру, и интерфейс немедленно вернет результат.В качестве примера возьмем интерфейс платежного поручения WeChat, после вызова соответствующая информация нашего платежа будет возвращен в режиме реального времени, так что мне не нужно беспокоиться о том, что я не знаю результат возврата во время разработки.
Система имитационного тестирования
Чтобы снизить порог для тестирования продавцом, платежная команда WeChat разработала независимую систему симуляционного тестирования. Система возвращает различные ответные сообщения в зависимости от количества приемочных вариантов использования, чтобы удовлетворить потребности продавцов в нормальном функциональном тестировании, тестировании безопасности/аномальном тестировании и тестировании производительности.
На рис. 1 представлена упрощенная схема системы тестирования моделирования платежей WeChat (далее именуемой системой моделирования). Протокол API системы моделирования точно такой же, как и официальный API (документ интерфейса API). Разработчикам продавцов нужно только добавить слой к вызывающему URL-адресу официального API.sandboxnew
путь, вы можете подключиться к системе моделирования.
Например, проведите по экрану, чтобы оплатить URL:API.Name.WeChat.QQ.com/Боюсь иметь/микро Боюсь…
Изменить на:API.Name.WeChat.QQ.com/sandbox new/…
Система моделирования полностью независима от производственной среды, включая уровень хранения. Все транзакции, совершенные продавцом в системе моделирования (например, заказ, оплата и запрос), являются поддельными данными без движения капитала, то есть пользователю не нужно вычитать фактический платеж, а у продавца не будет никаких средств для быть зачислено. То же самое верно и для ваучеров: в среде песочницы продавцам не нужно создавать и выдавать настоящие ваучеры, и не будет реальных отчислений по купонам. Ключ проверки 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
параметр.
Пример процесса взаимодействия мерчантов для доступа к системе симуляции:
- Продавец инициирует запрос платежа по кредитной карте и использует метод POST для вызоваAPI.Name.WeChat.QQ.com/sandbox new/…
- HTTPS-запросы с sandboxnew будут направляться в систему эмуляции с помощью nginx. Система моделирования возвращает продавцу ожидаемое сообщение в соответствии с суммой платежа (поле total_fee). В то же время поместите данные запроса;
- Продавец инициирует проверку и звонитAPI.Name.WeChat.QQ.com/sandbox new/…
- После получения запроса на проверку заказа система моделирования возвращает продавцу ожидаемый результат проверки заказа в соответствии с номером заказа и суммой;
- Продавец скачивает выписку и звонит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 для обсуждения с друзьями, обязательно укажите微信支付
О~
Эта статья окончена, обратите внимание на официальный аккаунт, чтобы увидеть больше! ! !