##Все еще есть проблемы, это тестовый код ##На основе интерфейса оплаты через WeChat на node.js Я только начал изучать node.js, в коде, вероятно, много недостатков, пожалуйста, дайте мне больше советов.
QQ:85920312 Email:tedi3231@qq.com
######Проблемы, возникшие при разработке WeChat Pay, суммированы следующим образом:
######Инициализация интерфейса
var config = {
appid:"XXXX", //идентификатор публичного аккаунта
mch_id:"XXX", //идентификатор продавца
partner_key:"XXX", //это ключ API, будьте осторожны, он должен состоять из 32 символов, многие ошибки возникают из-за неправильной настройки этого параметра
cert:"certs/apiclient_cert.pem", //если вам нужны такие функции, как возврат средств, корпоративные платежи и т.д., сертификат необходим, необходимо установить оба этих параметра
cert_key:"certs/apiclient_key.pem"
};
var api = new require("./index")(config);
Большинство функций в интерфейсе возвращают promise, поэтому используйте следующий метод записи:
api.function1(параметр).then(функция(данные){
//код после успешного вызова
}).fail(функция(ошибка){
//Код после неудачного вызова
});
Примечание
Следующие параметры интерфейса отображаются как необязательные для установки:
######Создание единого заказа За исключением сценария оплаты путём сканирования, система продавца сначала вызывает этот интерфейс для создания предоплаченного торгового ордера в бэкенде WeChat Pay и возвращает правильный идентификатор предварительно оплаченного торгового разговора. Затем, в зависимости от сценария (сканирование, JSAPI, APP и т. д.), генерируется строка транзакции для запуска платежа. Дополнительные параметры см. в документации WeChat Developer.
function test_unifiedorder(){
var order_item = {
notify_url:"http://wedo.avosapps.com/order/aa.php",
openid:"opmukt4SZzas_TinMqpT5JkC3z6Q",
out_trade_no:Number.parseInt(Math.random()*1000000),//пожалуйста, убедитесь, что он уникален в вашей бизнес-системе, обычно это номер заказа
spbill_create_ip:"14.23.150.211",
total_fee:1, //единица измерения здесь - цзяо
trade_type:"NATIVE", //может быть JSAPI (при вызове JSSDK для оплаты в общедоступном аккаунте), NATIVE (этот тип при сканировании на веб-странице) или APP
body:"aavv" //описание товара
};
api.unifiedorder(order_item).then(функция(данные){
console.log(данные);
}).fail(функция(ошибка){
console.log(ошибка);
});
}
test_unifiedorder();
######Просмотр заказа Этот интерфейс позволяет просматривать все заказы WeChat Pay. Продавец может активно проверять статус заказа через этот интерфейс и реализовывать последующую бизнес-логику. Необходимость вызова интерфейса просмотра заказов:
Для конкретных параметров и возвращаемых значений, пожалуйста, обратитесь к документации WeChat Developer. Здесь можно просмотреть только одну запись и выполнить пакетный просмотр на основе номера заказа WeChat или номера заказа продавца. Можно указать один из двух параметров: либо номер заказа WeChat, либо номер заказа продавца.
var params = {transaction_id:"1005450053201511261776573190"};
//var params = {out_trade_no:"239023900392"};
api.orderquery(params).then(функция(данные){
console.log(данные);
}).fail(функция(ошибка){
console.log(ошибка);
});
######Закрытие заказа Необходимо вызвать интерфейс закрытия заказа в следующих случаях: если заказ продавца не удаётся оплатить, необходимо создать новый номер заказа и инициировать новую оплату, исходный номер заказа должен быть закрыт, чтобы избежать повторной оплаты; после того, как система разместит заказ, если платёж пользователя истекает, система выходит из системы и больше не обрабатывает его, чтобы предотвратить продолжение оплаты пользователем, необходимо вызвать интерфейс закрытия заказа.
Обратите внимание: после создания заказа должно пройти не менее 5 минут, прежде чем можно будет закрыть заказ.
Для конкретных параметров и возвращаемых значений, пожалуйста, обратитесь к документации WeChat Developer. Параметр — это номер заказа продавца.
var params = {out_trade_no:"35370664"};
api.closeorder(params).then(функция(данные){
console.log(данные);
}).fail(функция(ошибка){
console.log(ошибка);
});
######Запрос возврата Продавец может вернуть платеж покупателю через определённый период времени после совершения транзакции по причинам, связанным с покупателем или продавцом. После получения запроса на возврат и успешной проверки WeChat Pay вернёт платеж на счёт покупателя в соответствии с правилами возврата. Примечания:
Для конкретных параметров и возвращаемых значений, пожалуйста, обратитесь к документации WeChat Developer.
var params = {
device_info:"WEB",
transaction_id:"1005270053201511261778229445",
out_refund_no:"REFUND0001",
total_fee:1,
refund_fee:1,
refund_fee_type:"CNY",
op_user_id:"1289247501"
};
api.refund(params).then(функция(данные){
console.log("данные о возврате ", данные);
}).fail(функция(ошибка){
console.log("ошибка возврата",ошибка);
});
######Проверка возврата После подачи заявки на возврат вы можете проверить статус возврата, вызвав этот интерфейс. Возврат средств занимает некоторое время: возврат средств с помощью наличных происходит в течение 20 минут, а возврат средств с банковского счёта — в течение трёх рабочих дней. Пожалуйста, обратитесь к документации WeChat Developer для конкретных параметров и возвращаемых значений.
var params = { ```
{
"device_info": "WEB",
"transaction_id": "1005270053201511261778229445",
"out_refund_no": "REFUND0001"
}
api.refund(params).then(function(data){ console.log("refundquery data is ", data); }).fail(function(err){ console.log("refundquery erro is",err); });
Корпоративные платежи основаны на функции управления финансами в рамках платформы для продавцов WeChat Pay. Эта функция предназначена для того, чтобы помочь продавцам удобно осуществлять корпоративные платежи физическим лицам. Она предоставляется для некоторых продавцов, имеющих возможности разработки, и позволяет выполнять корпоративные платежи через API. Например, в настоящее время в страховой отрасли осуществляются выплаты клиентам при возврате страховых взносов, выплатах и урегулировании убытков. Для корпоративных платежей будет использоваться доступный баланс продавца, поэтому необходимо убедиться, что доступный баланс достаточен. Для просмотра доступного баланса, пополнения счёта и снятия наличных средств, пожалуйста, войдите в систему «Управление финансами» на платформе продавца (https://pay.weixin.qq.com/). Примечание: корпоративные платёжные средства не хранятся на том же счёте, что и средства, полученные через WeChat Pay, их необходимо пополнять отдельно. Требуется двусторонний сертификат. Подробные сведения о конкретных параметрах и возвращаемых значениях см. в документации по разработке WeChat.
var params = {
"device_info": "mac",
"partner_trade_no": "202143344343",
"openid": "opmukt4SZzas_TinMqpT5JkC3z6Q",
"check_name": "NO_CHECK",
"amount": 101,
"desc": "Урегулирование убытков",
"spbill_create_ip": "192.168.0.1"
};
api.company_transfers(params).then(function(data){
console.log("company_transfers data",data);
}).fail(function(err){
console.log("Company transfers error",err);
});
Используется для запроса результатов операции корпоративных платежей продавца. Возвращает подробные результаты операции платежа. Подробные сведения о конкретных параметрах и возвращаемых значениях см. в документации WeChat по разработке.
var params = {
"partner_trade_no":"202143344343"
};
api.company_get_transfers(params).then(function(data){
console.log("company_get_transfers data",data);
}).fail(function(err){
console.log("Company get transfers error",err);
});
Основной процесс оплаты через официальный аккаунт выглядит следующим образом:
Пользователь переходит на страницу официального аккаунта --> размещает заказ --> система бизнеса создаёт заказ --> вызывается интерфейс унифицированного заказа WeChat --> возвращается информация о предоплаченном заказе prepay_id --> создаётся объект, который будет вызываться на стороне клиента JS, и подписывается --> вызываются элементы управления оплатой WeChat --> отображается страница продавца с сообщением об успешной покупке. Конкретный процесс можно посмотреть на этом рисунке:
Создание заказа в системе бизнеса Этот шаг может быть выполнен или после вызова интерфейса унифицированного заказа WeChat, то есть это заказ в локальной системе бизнеса. Мы сначала следуем первому способу, который выполняется перед вызовом интерфейса унифицированного заказа.
Интерфейс унифицированного заказа WeChat Во всех трёх способах оплаты WeChat необходимо сначала вызвать интерфейс унифицированного заказа, чтобы создать предварительный заказ на стороне WeChat. Здесь следует отметить, что этот предварительный заказ не появится в списке заказов на платформе продавца. Код для отправки предварительного заказа выглядит следующим образом:
var order_item = {
notify_url:"http://wedo.avosapps.com/order/succ",
openid:"opmukt4SZzas_TinMqpT5JkC3z6Q",
out_trade_no:Number.parseInt(Math.random()*1000000),
spbill_create_ip:"14.23.150.211",
total_fee:1,
trade_type:"JSAPI",
body:"aavv"
};
api.unifiedorder(order_item).then(function(data){
console.log(data);
}).fail(function(err){
console.log(err);
});
Примечания:
**注意点:**
* 因为需要调用JSSDK,所以需要在每个需要调用JSSDK的页面获取TICKET信息,具体请参看jssdk的调用设置;另外对于 token和ticket的获取提供了另外一个模块wxapi.js文件,其中有ticket和token的获取的方法。此模块功能还不完善,仅供参考。
4. 调用微信支付控件,输入密码,付款成功
### 扫码支付
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )