| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- const HmacSHA256 = require('./libs/hmac-sha256.js');
- const CryptoJS = require('./libs/core.js');
- const config = require('./tq-game-config.js');
- const payOrderApi = `https://sdk.tqhd123.cn/client/pay/order`; // 支付上报
- const payTypeApi = `https://sdk.tqhd123.cn/client/pay/channel`; // 支付类型
- const payResultApi = `https://sdk.tqhd123.cn/client/pay/order-result`; // 获取订单结果
- const payUrlApi = `https://sdk.tqhd123.cn/client/pay/exists-order-pay`; // 已创建订单接口,重新获取支付链接
- class TQ_LIB {
- request = null;
- constructor(props) {
- this.request = props.request;
- }
- // 请求验签接口
- requestSignApi = (parmas, api, cb) => {
- const timestamp = new Date().getTime();
- const nonce = randomString32();
- const requestSign = getSign(parmas, config.tq_appid, timestamp, nonce);
- if (!requestSign) {
- cb({ status: 0, message: 'error' });
- return;
- }
- if (!this.request) {
- console.error('SDK 初始化错误【request】');
- return;
- }
- this.request({
- url: api,
- data: parmas,
- header: { sign: requestSign, timestamp: timestamp, nonce: nonce },
- success: function (r) {
- if (r.ret == 1) {
- cb({ status: 1, message: 'success', data: r.content });
- } else {
- cb({ status: 0, message: r.msg });
- }
- },
- fail: function (e) {
- cb({ status: 0, message: e });
- },
- });
- };
- // 支付类型
- getPayType = (cb) => {
- const jOrderData = {
- tq_app_id: config.tq_appid,
- };
- this.requestSignApi(jOrderData, payTypeApi, cb);
- };
- // 已创建订单接口,重新获取支付链接
- getPayUrl = (orderInfo, cb) => {
- const jOrderData = {
- tq_app_id: config.tq_appid,
- tq_order_sn: orderInfo.tq_order_sn,
- ...orderInfo,
- };
- this.requestSignApi(jOrderData, payUrlApi, cb);
- };
- // 获取支付结果
- getPayReult = (orderInfo, cb) => {
- const jOrderData = {
- tq_app_id: config.tq_appid,
- tq_order_sn: orderInfo.tq_order_sn,
- ...orderInfo,
- };
- this.requestSignApi(jOrderData, payResultApi, cb);
- };
- // 支付上报
- showOrder = (orderInfo, cb) => {
- const jOrderData = {
- tq_app_id: config.tq_appid,
- os: orderInfo.os || '',
- game_order_sn: orderInfo.gameOrderId || '',
- user_id: orderInfo.userId || '',
- role_id: orderInfo.roleId || '',
- role_name: orderInfo.roleName || '',
- product_id: orderInfo.productId || '',
- product_name: orderInfo.productName || '',
- server_id: orderInfo.serverId || '',
- server_name: orderInfo.serverName || '',
- money: orderInfo.zfAmount || '',
- extra: orderInfo.tp || '',
- pay_channel_id: orderInfo.payChannelId || '',
- company_order_sn: orderInfo.companyOrderId || '',
- company_notify_url: orderInfo.companyNotifyUrl || '',
- expire_timestamp_millis: orderInfo.expireTimestampMillis || '',
- sync_notify_url: orderInfo.syncNotifyUrl || '',
- cancel_url: orderInfo.cancelUrl || '',
- use_company_order: orderInfo.useCompanyOrder || '',
- ...orderInfo,
- };
- this.requestSignApi(jOrderData, payOrderApi, cb);
- };
- }
- // 验签 - 随机生成 32 位字符串数字组合
- const randomString32 = () => {
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- let result = '';
- for (let i = 0; i < 32; i++) {
- result += chars.charAt(Math.floor(Math.random() * chars.length));
- }
- return result;
- };
- // 验签 - 生成签名
- const getSign = (params, tq_app_id, timestamp, nonce) => {
- try {
- const paramsStr = JSON.stringify(params);
- return HmacSHA256(paramsStr + tq_app_id + timestamp + nonce, config.tq_game_secret).toString(CryptoJS.enc.Hex);
- } catch (error) {
- console.log(error);
- }
- };
- module.exports = { TQ_LIB };
|