В запросе скорее всего текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — китайский.
Перевод текста на русский язык:
NodeJS Egg Framework, WeChat Payment SDK.
WeChat Pay NodeJS Demo.
"dependencies": {
"MD5": "^1.2.1",
"request": "^2.88.0",
"body-parser": "^1.18.3",
"xml2js": "^0.4.6"
},
// Импортируем плагин WeChat Pay (обратите внимание на путь к плагину и путь к файлу)
const WXPay = require('../extend/wxpay');
const fs = require('fs');
const wxpay = WXPay({
appid: '公众号ID',
mch_id: '商户号ID',
partner_key: '商户密钥(证书密码)',
pfx: fs.readFileSync('././证书路径.p12'),
});
const result = await wxpay.createUnifiedOrder({
body: '扫码支付测试', // Описание товара
out_trade_no: ctx.request.body.orderNum, // Номер заказа
total_fee: 1, // Общая сумма платежа (единица измерения: юань)
spbill_create_ip: '192.168.2.210', // IP-адрес оплаты
notify_url: 'http://mp.ngrok.xiaomiqiu.cn/receive/wxReceive',// Адрес обратного вызова для оплаты
trade_type: 'NATIVE',// Способ оплаты: оплата со сканированием
});
console.log(result);
ctx.status = 200;
// Обработка события после отправки формы, здесь возвращается содержимое формы
ctx.body = `${JSON.stringify(result)}`;
// Вызов на стороне сервера
const result = await wxpay.getBrandWCPayRequestParams({
openid: 'om5QFwFZ15e60lUej4uHN5-DGn8Y', // Идентификатор пользователя WeChat
body: 'Оплата через публичный аккаунт', // Содержание платежа
detail: 'Оплата через публичный аккаунт',// Содержание платежа
out_trade_no: ctx.request.body.orderNum, // Номер заказа
total_fee: 1, // Сумма платежа (единица измерения: юань)
spbill_create_ip: '192.168.2.210',
notify_url: 'http://mp.ngrok.xiaomiqiu.cn/receive/wxReceive',// Обратный вызов для оплаты
});
console.log(result);
// Рендеринг статической страницы, имитация отправки формы
await ctx.render('home/jsapiresult', { payargs: `${JSON.stringify(result)}` });
// Параметры вызова веб-страницы (например, nunjucks)
<input id="payargs" type="text" value="{{payargs}}">
<script>
function jsApiCall() {
WeixinJSBridge.invoke(
"getBrandWCPayRequest",
JSON.parse($("#payargs").val()),
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok")//успех
{
window.location.href = "/jsapi?result=success";
}
else if (res.err_msg == "get_brand_wcpay_request:fail")//неудача
{
$("#msg").text("Оплата не удалась, пожалуйста, попробуйте ещё раз");
}
else if (res.err_msg == "get_brand_wcpay_request:cancel")//отмена
{
window.history.go(-1);
}
});
}
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}
else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
}
else {
jsApiCall();
}
</script>
const result = await wxpay.createOutH5Pay({
body: 'H5 Оплата теста', // Описание товара
out_trade_no: ctx.request.body.orderNum, // Номер заказа
total_fee: 1, // Общая сумма платежа (единица измерения: юань)
spbill_create_ip: '192.168.2.210', // Платёжный IP-адрес
notify_url: 'http://mp.ngrok.xiaomiqiu.cn/receive/wxReceive',// Обратный звонок для оплаты
trade_type: 'NATIVE',// Способ оплаты: оплата со сканированием
});
if (result.return_code == "SUCCESS") {
// Рендеринг статической страницы, имитирующая отправку формы
// Здесь необходимо добавить путь возврата после завершения или отмены оплаты
result.mweb_url = result.mweb_url + "&redirect_url=" + urlencode("http://mp.ngrok.xiaomiqiu.cn/h5pay")
}
console.log(result);
ctx.status = 200;
// Обработка событий после отправки формы, здесь возвращаются данные формы
ctx.body = `${JSON.stringify(result)}`;
const result = await wxpay.queryOrder({
out_trade_no: ctx.request.body.orderNum, // Номер заказа
});
ctx.status = 200;
// Обработка событий после отправки формы, здесь возвращаются данные формы
ctx.body = `${JSON.stringify(result)}`;
wxpay.refundOrder({
out_trade_no: 'API2019010100001003',
total_fee: 1,
refund_fee: 1,
notify_url: 'http://mp.ngrok.xiaomiqiu.cn/receive/wxRefund',
out_refund_no: 'RFD2019010100001002'
}, function(err, result){
console.log(result);
});
// 6.1 Асинхронное уведомление о результатах оплаты
app.use('/receive/wxReceive',
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )