Files
ZYZ/game-server/app/services/pay/weixinPay.ts
2021-05-12 17:57:38 +08:00

94 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import tenpay = require('tenpay');
import path = require('path');
/*
包名com.bantu.sgzzyz
APPIDwx1d3cd5cd2f065358
AppSecretebf099c41da57edf8693b5bb234d9b31
商户号1272966801
APISECRETABCabc328BantuPKU726BANTUMPRCghb
*/
const config = {
appid: 'wx1d3cd5cd2f065358',
mchid: '1272966801',
partnerKey: 'ABCabc328BantuPKU726BANTUMPRCghb',
pfx: require('fs').readFileSync(path.resolve(__dirname, '../../../../../key/weixinpay/apiclient_cert.p12')),
notify_url: "https://" + "10.29.176.166" + "/order/weixinpaycallback",//支付回调网址
spbill_create_ip: '127.0.0.1'
};
// 方式一
const api = new tenpay(config);
// 调试模式
// const api = new tenpay(config, true);
// 沙盒模式(用于微信支付验收)
// const sandboxAPI = await tenpay.sandbox(config);
/**
* 微信下单
*
* @param {number} price 价格订单金额(分)
* @param {string} message 商品信息
* @param {string} localOrderID 本地订单号
*
*/
export async function applyOrderWX(localOrderID: string, price: number, message: string) {
let data = {
out_trade_no: localOrderID,
body: message,//'商品简单描述',
total_fee: price,//'订单金额(分)',
}
console.log('applyOrderWX :', data)
let result = await api.getAppParams(data)
// { appid: 'wx1d3cd5cd2f065358',
// partnerid: '1272966801',
// prepayid: 'wx12171213153829021f7cfe9413f0a20000',//微信订单号
// package: 'Sign=WXPay',
// noncestr: 'OohMyaHNK0iP77uh',
// timestamp: '1620810734',
// sign: '7A1B41C577E78602344D03DE4A2F7B0A' }
console.log('applyOrderWX result: ', result)
if (result.appid == config.appid && result.partnerid == config.mchid) {
return { code: 1, data: result };
}
return { code: 0, data: JSON.stringify(result) };
}
/**
* 微信查询支付结果
*
* @param {number} serverId 区Id
* @param {string} roleId 角色Id
* @param {string} localOrderID 本地订单号
*
*/
export async function checkOrderWX(localOrderID: string) {
let data = {
out_trade_no: localOrderID,
}
console.log('checkOrderWX :', data)
let result = await api.orderQuery(data)
// { return_code: 'SUCCESS',
// return_msg: 'OK',
// result_code: 'SUCCESS',
// mch_id: '1272966801',
// appid: 'wx1d3cd5cd2f065358',
// device_info: '',
// trade_state: 'NOTPAY',
// total_fee: '6',
// out_trade_no: 'nMeyvwjJSmNXPmfGcr6kzalTR3jlp7jW',
// trade_state_desc: '订单未支付',
// nonce_str: 'aJevQOtSDgvNDbtQ',
// sign: '955CE5F8AA2F046DA66E0A5DA56B338A' }
console.log('checkOrderWX result: ', result)
if (result.appid == config.appid && result.mch_id == config.mchid) {
return { code: 1, data: result };
}
return { code: 0, data: JSON.stringify(result) };
}