活动:支付宝支付
This commit is contained in:
@@ -7,6 +7,7 @@ import { dicRMB } from '../../../pubUtils/dictionary/DicRMB';
|
|||||||
import { UserOrderModel } from '../../../db/UserOrder';
|
import { UserOrderModel } from '../../../db/UserOrder';
|
||||||
import _ = require('underscore');
|
import _ = require('underscore');
|
||||||
import { applyOrderWX, checkOrderWX } from '../../../services/pay/weixinPay';
|
import { applyOrderWX, checkOrderWX } from '../../../services/pay/weixinPay';
|
||||||
|
import { applyOrderALI, checkOrderALI } from '../../../services/pay/aliPay';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
return new orderHandler(app);
|
return new orderHandler(app);
|
||||||
@@ -50,7 +51,6 @@ export class orderHandler {
|
|||||||
switch (payType) {
|
switch (payType) {
|
||||||
case PAY_TYPE.WX:
|
case PAY_TYPE.WX:
|
||||||
{
|
{
|
||||||
//生成订单号
|
|
||||||
let weixinOrder = await applyOrderWX(localOrderID, price * 100, message);
|
let weixinOrder = await applyOrderWX(localOrderID, price * 100, message);
|
||||||
if (weixinOrder.code == 0) {
|
if (weixinOrder.code == 0) {
|
||||||
console.log('微信下单失败')
|
console.log('微信下单失败')
|
||||||
@@ -62,6 +62,14 @@ export class orderHandler {
|
|||||||
}
|
}
|
||||||
case PAY_TYPE.ALI:
|
case PAY_TYPE.ALI:
|
||||||
{
|
{
|
||||||
|
let aliOrder = await applyOrderALI(localOrderID, price, message);
|
||||||
|
if (aliOrder.code == 0) {
|
||||||
|
console.log('支付宝下单失败')
|
||||||
|
return resResult(STATUS.APPLY_ORDER_ERROR);
|
||||||
|
}
|
||||||
|
sdkOrderInfo = aliOrder.data;
|
||||||
|
orderID = aliOrder.data;//支付宝订单
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +161,20 @@ export class orderHandler {
|
|||||||
}
|
}
|
||||||
case PAY_TYPE.ALI:
|
case PAY_TYPE.ALI:
|
||||||
{
|
{
|
||||||
|
let aliResult = await checkOrderALI(localOrderID);
|
||||||
|
if (aliResult.code == 0) {
|
||||||
|
console.log('支付宝订单查询失败')
|
||||||
|
return resResult(STATUS.ORDER_ERROR);
|
||||||
|
}
|
||||||
|
if (parseInt(aliResult.data.total_amount) != price) {
|
||||||
|
console.log('订单价格错误')
|
||||||
|
return resResult(STATUS.PRICE_ERROR);
|
||||||
|
}
|
||||||
|
if (aliResult.data.trade_status != "TRADE_SUCCESS") {
|
||||||
|
return resResult(STATUS.NO_PAY);
|
||||||
|
}
|
||||||
|
let aliOrderID = aliResult.data.trade_no;
|
||||||
|
await UserOrderModel.saveOrderID(roleId, localOrderID, aliOrderID);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,19 +188,12 @@ export class orderHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//订单成功
|
//订单成功
|
||||||
let isSuccess = true;
|
|
||||||
if (isSuccess) {
|
|
||||||
orderInfo = await UserOrderModel.success(roleId, localOrderID);
|
orderInfo = await UserOrderModel.success(roleId, localOrderID);
|
||||||
if (orderInfo) {
|
if (orderInfo) {
|
||||||
//结算奖励
|
//结算奖励
|
||||||
console.log('结算完成', localOrderID)
|
console.log('结算完成', localOrderID)
|
||||||
return resResult(STATUS.SUCCESS, Object.assign({}));
|
return resResult(STATUS.SUCCESS, Object.assign({}));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
let message = '订单校验失败';
|
|
||||||
orderInfo = await UserOrderModel.fail(roleId, localOrderID, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return resResult(STATUS.DUPLICATE_ORDER);
|
return resResult(STATUS.DUPLICATE_ORDER);
|
||||||
}
|
}
|
||||||
|
|||||||
93
game-server/app/services/pay/aliPay.ts
Normal file
93
game-server/app/services/pay/aliPay.ts
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
|
||||||
|
import path = require('path');
|
||||||
|
import fs = require('fs');
|
||||||
|
const Alipay = require('alipay-mobile').default
|
||||||
|
/*
|
||||||
|
包名:com.bantu.sgzzyz
|
||||||
|
APPID:2021002142639438
|
||||||
|
*/
|
||||||
|
|
||||||
|
//notify_url: 异步通知url
|
||||||
|
//app_id: 开放平台 appid
|
||||||
|
//appPrivKeyFile: 你的应用私钥
|
||||||
|
//alipayPubKeyFile: 蚂蚁金服公钥
|
||||||
|
const config = {
|
||||||
|
app_id: '2021002142639438',
|
||||||
|
appPrivKeyFile: fs.readFileSync(path.resolve(__dirname, '../../../../../key/alipay/rsa_private_key.pem')),
|
||||||
|
alipayPubKeyFile: fs.readFileSync(path.resolve(__dirname, '../../../../../key/alipay/rsa_public_key.pem'))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const service = new Alipay(config)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝下单
|
||||||
|
*
|
||||||
|
* @param {number} price 订单总金额,单位为元,精确到小数点后两位
|
||||||
|
* @param {string} message 商品信息
|
||||||
|
* @param {string} localOrderID 本地订单号
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function applyOrderALI(localOrderID: string, price: number, message: string) {
|
||||||
|
const data = {
|
||||||
|
subject: message,
|
||||||
|
out_trade_no: localOrderID,
|
||||||
|
total_amount: price.toFixed(2).toString()
|
||||||
|
}
|
||||||
|
console.log('applyOrderALI :', data)
|
||||||
|
let result = await service.createOrder(data)
|
||||||
|
|
||||||
|
// { code: 0,
|
||||||
|
// message: '请求成功',
|
||||||
|
// data:
|
||||||
|
// 'app_id=2021002142639438&biz_content=%7B%22subject%22%3A%22%E8%B5%B5%E4%BA%91%E4%BC%A0%E8%B4%AD%E4%B9%B0%E5%85%83%E5%AE%9D60%22%2C%22out_trade_no%22%3A%22bwnNLGfdCylflxKf54bEpcwyEbq7xygp%22%2C%22total_amount%22%3A%226.00%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2×tamp=2021-05-12%2018%3A40%3A25&version=1.0&sign=S4U6JzSUiCSMvAbXeiJ2m2AQ%2BfCSr4VE4VNN9QEZtplgWIO51HIGhL24BpR4aj7mMfWO%2BqaWQnU0Fe8Uki960smBdj0%2FDpuztA7%2BIBWHK1Qj69%2FLhDNLoHZgO41jQJjIOVI0gWt1KaDlG2%2B52ghswqcZN%2FkFLwfMZCMEph3eg3aofq1mmwRbqAh8Sepoy9nCd24CmMUIbNe%2FmcxVg3xvYcWXnneWWHu%2FFbnaeZtynoHVhXqqhjFZSrxdk8lo5qyTXkE1ZoUrhJz918E2rArwzZeUL09ncPshHHvX6AygXp5BtV4clwTY0OY5yzOEXboluR5YmSaVXn0VkTWJZCTWTQ%3D%3D'
|
||||||
|
// }
|
||||||
|
console.log('applyOrderALI result: ', result)
|
||||||
|
if (result.code == 0) {
|
||||||
|
return { code: 1, data: result.data };
|
||||||
|
}
|
||||||
|
return { code: 0, data: JSON.stringify(result) };
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝查询支付结果
|
||||||
|
*
|
||||||
|
* @param {number} serverId 区Id
|
||||||
|
* @param {string} roleId 角色Id
|
||||||
|
* @param {string} localOrderID 本地订单号
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function checkOrderALI(localOrderID: string) {
|
||||||
|
let data = {
|
||||||
|
out_trade_no: localOrderID,
|
||||||
|
}
|
||||||
|
console.log('checkOrderALI :', data)
|
||||||
|
|
||||||
|
let result = await service.queryOrder(data)
|
||||||
|
console.log('checkOrderALI result: ', result)
|
||||||
|
// {
|
||||||
|
// 0|app | code: '0',
|
||||||
|
// 0|app | data: {
|
||||||
|
// 0|app | code: '10000',
|
||||||
|
// 0|app | msg: 'Success',
|
||||||
|
// 0|app | buyer_logon_id: '525***@qq.com',
|
||||||
|
// 0|app | buyer_pay_amount: '0.00',
|
||||||
|
// 0|app | buyer_user_id: '2088302819007765',
|
||||||
|
// 0|app | invoice_amount: '0.00',
|
||||||
|
// 0|app | out_trade_no: 'JbyWyR1SIVIw9ArxvHAgte6tmnIzSRea',
|
||||||
|
// 0|app | point_amount: '0.00',
|
||||||
|
// 0|app | receipt_amount: '0.00',
|
||||||
|
// 0|app | send_pay_date: '2019-09-29 18:32:13',
|
||||||
|
// 0|app | total_amount: '1.00',
|
||||||
|
// 0|app | trade_no: '2019092922001407760553648380',
|
||||||
|
// 0|app | trade_status: 'TRADE_SUCCESS'
|
||||||
|
// 0|app | },
|
||||||
|
// 0|app | message: 'success'
|
||||||
|
// 0|app | }
|
||||||
|
if ((result.code == '0') && (result.message == "success")) {
|
||||||
|
return { code: 1, data: result.data };
|
||||||
|
}
|
||||||
|
return { code: 0, data: JSON.stringify(result) };
|
||||||
|
}
|
||||||
128
game-server/package-lock.json
generated
128
game-server/package-lock.json
generated
@@ -224,6 +224,16 @@
|
|||||||
"debug": "4"
|
"debug": "4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"alipay-mobile": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.nlark.com/alipay-mobile/download/alipay-mobile-4.0.2.tgz",
|
||||||
|
"integrity": "sha1-dGQCRAgLpSlJf76vhqwGKGUaFs4=",
|
||||||
|
"requires": {
|
||||||
|
"joi": "^14.3.1",
|
||||||
|
"moment": "^2.19.3",
|
||||||
|
"urllib": "^2.21.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ansi-colors": {
|
"ansi-colors": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
|
||||||
@@ -404,71 +414,6 @@
|
|||||||
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz",
|
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz",
|
||||||
"integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28="
|
"integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28="
|
||||||
},
|
},
|
||||||
"body-parser": {
|
|
||||||
"version": "1.19.0",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz",
|
|
||||||
"integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
|
|
||||||
"requires": {
|
|
||||||
"bytes": "3.1.0",
|
|
||||||
"content-type": "~1.0.4",
|
|
||||||
"debug": "2.6.9",
|
|
||||||
"depd": "~1.1.2",
|
|
||||||
"http-errors": "1.7.2",
|
|
||||||
"iconv-lite": "0.4.24",
|
|
||||||
"on-finished": "~2.3.0",
|
|
||||||
"qs": "6.7.0",
|
|
||||||
"raw-body": "2.4.0",
|
|
||||||
"type-is": "~1.6.17"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"debug": {
|
|
||||||
"version": "2.6.9",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566551397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
|
|
||||||
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"http-errors": {
|
|
||||||
"version": "1.7.2",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
|
|
||||||
"integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
|
|
||||||
"requires": {
|
|
||||||
"depd": "~1.1.2",
|
|
||||||
"inherits": "2.0.3",
|
|
||||||
"setprototypeof": "1.1.1",
|
|
||||||
"statuses": ">= 1.5.0 < 2",
|
|
||||||
"toidentifier": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"inherits": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
|
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
|
||||||
},
|
|
||||||
"ms": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
|
||||||
},
|
|
||||||
"qs": {
|
|
||||||
"version": "6.7.0",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz",
|
|
||||||
"integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
|
|
||||||
},
|
|
||||||
"raw-body": {
|
|
||||||
"version": "2.4.0",
|
|
||||||
"resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
|
|
||||||
"integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
|
|
||||||
"requires": {
|
|
||||||
"bytes": "3.1.0",
|
|
||||||
"http-errors": "1.7.2",
|
|
||||||
"iconv-lite": "0.4.24",
|
|
||||||
"unpipe": "1.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
|
||||||
@@ -1340,6 +1285,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||||
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
||||||
},
|
},
|
||||||
|
"hoek": {
|
||||||
|
"version": "6.1.3",
|
||||||
|
"resolved": "https://registry.npm.taobao.org/hoek/download/hoek-6.1.3.tgz",
|
||||||
|
"integrity": "sha1-c7fTOVLgH+J6OLBFcpS3ndjaJCw="
|
||||||
|
},
|
||||||
"http-errors": {
|
"http-errors": {
|
||||||
"version": "1.7.3",
|
"version": "1.7.3",
|
||||||
"resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz",
|
"resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz",
|
||||||
@@ -1522,6 +1472,14 @@
|
|||||||
"resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
|
"resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
|
||||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||||
},
|
},
|
||||||
|
"isemail": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npm.taobao.org/isemail/download/isemail-3.2.0.tgz",
|
||||||
|
"integrity": "sha1-WTEKAhkxqfsGu7UeFVzgs/I2gyw=",
|
||||||
|
"requires": {
|
||||||
|
"punycode": "2.x.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"isexe": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
@@ -1532,6 +1490,16 @@
|
|||||||
"resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
|
"resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
|
||||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||||
},
|
},
|
||||||
|
"joi": {
|
||||||
|
"version": "14.3.1",
|
||||||
|
"resolved": "https://registry.npm.taobao.org/joi/download/joi-14.3.1.tgz?cache=0&sync_timestamp=1612746391586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjoi%2Fdownload%2Fjoi-14.3.1.tgz",
|
||||||
|
"integrity": "sha1-FkomLsC4VUZuDDXuoqiFrotscDw=",
|
||||||
|
"requires": {
|
||||||
|
"hoek": "6.x.x",
|
||||||
|
"isemail": "3.x.x",
|
||||||
|
"topo": "3.x.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"js-tokens": {
|
"js-tokens": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz",
|
"resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz",
|
||||||
@@ -1667,11 +1635,6 @@
|
|||||||
"resolved": "https://registry.npm.taobao.org/make-error/download/make-error-1.3.6.tgz?cache=0&sync_timestamp=1582105759247&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-error%2Fdownload%2Fmake-error-1.3.6.tgz",
|
"resolved": "https://registry.npm.taobao.org/make-error/download/make-error-1.3.6.tgz?cache=0&sync_timestamp=1582105759247&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-error%2Fdownload%2Fmake-error-1.3.6.tgz",
|
||||||
"integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I="
|
"integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I="
|
||||||
},
|
},
|
||||||
"media-typer": {
|
|
||||||
"version": "0.3.0",
|
|
||||||
"resolved": "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz",
|
|
||||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
|
||||||
},
|
|
||||||
"memory-pager": {
|
"memory-pager": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/memory-pager/download/memory-pager-1.5.0.tgz",
|
"resolved": "https://registry.npm.taobao.org/memory-pager/download/memory-pager-1.5.0.tgz",
|
||||||
@@ -2310,14 +2273,6 @@
|
|||||||
"object-keys": "^1.1.1"
|
"object-keys": "^1.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"on-finished": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz?cache=0&sync_timestamp=1614930634590&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fon-finished%2Fdownload%2Fon-finished-2.3.0.tgz",
|
|
||||||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
|
|
||||||
"requires": {
|
|
||||||
"ee-first": "1.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"once": {
|
"once": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
|
"resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
|
||||||
@@ -3325,6 +3280,14 @@
|
|||||||
"resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
|
"resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
|
||||||
"integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
|
"integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
|
||||||
},
|
},
|
||||||
|
"topo": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npm.taobao.org/topo/download/topo-3.0.3.tgz",
|
||||||
|
"integrity": "sha1-1aZ/suaTB+vusIQC7Coqb1962Vw=",
|
||||||
|
"requires": {
|
||||||
|
"hoek": "6.x.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
"tough-cookie": {
|
"tough-cookie": {
|
||||||
"version": "2.5.0",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
||||||
@@ -3403,15 +3366,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
||||||
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
|
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
|
||||||
},
|
},
|
||||||
"type-is": {
|
|
||||||
"version": "1.6.18",
|
|
||||||
"resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
|
|
||||||
"integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
|
|
||||||
"requires": {
|
|
||||||
"media-typer": "0.3.0",
|
|
||||||
"mime-types": "~2.1.24"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "3.9.7",
|
"version": "3.9.7",
|
||||||
"resolved": "https://registry.npm.taobao.org/typescript/download/typescript-3.9.7.tgz?cache=0&sync_timestamp=1596790269694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftypescript%2Fdownload%2Ftypescript-3.9.7.tgz",
|
"resolved": "https://registry.npm.taobao.org/typescript/download/typescript-3.9.7.tgz?cache=0&sync_timestamp=1596790269694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftypescript%2Fdownload%2Ftypescript-3.9.7.tgz",
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
"@types/redis": "^2.8.25",
|
"@types/redis": "^2.8.25",
|
||||||
"@types/request-promise": "^4.1.47",
|
"@types/request-promise": "^4.1.47",
|
||||||
"@types/underscore": "^1.10.24",
|
"@types/underscore": "^1.10.24",
|
||||||
|
"alipay-mobile": "^4.0.2",
|
||||||
"bcrypt": "^5.0.0",
|
"bcrypt": "^5.0.0",
|
||||||
"bluebird": "^3.5.1",
|
"bluebird": "^3.5.1",
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
|
|||||||
3
key/alipay/rsa_private_key.pem
Normal file
3
key/alipay/rsa_private_key.pem
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpQIBAAKCAQEAqhFp/IbUVIqLSCGbC/TDbEBzALTf5Tr0Be9dTmOz+nJO73H5VUhT2ADDFRxDtsn3Nannwer0B/kK40xGiYj7tv+uCIwNulr4aOkA7t+faDu01atbIroJb/6TGe8I33JkRWlW0O2IG0P3ZMLRp28yj0zmmxdeUpQomdy3AEcSSL9HKkRniYuSviud7FjOm/oa3mjUjAxmDVeZYpqAhSPT2rhpaIC47PBmEIfYjrH5QsszgxEyrOFq84mBtYFSJp0pHYp/7+p9olmxHO+R3OoPIWCrjJ653Z0AFuSNARNLAIpgKfTnXqenm+KC2cHEBRkHU971kOWTlecOGr/wrOBrrQIDAQABAoIBAQCoX51C+mn1WUUUINFUQPvJjPVO2cRhOsClr5n9JhDl/43O2lQz7uuziu2ZVOZlbgdmBdUB1A/OZO42oymiuRAc2X3/0Ek3GyGdHDJkTNmRZKtgb8pG01DMpIoWvuVV8/b6EZR2PPTnqZ6hD5Bp6FlyLnyRR82GjFC2JCK6D6M2iSkDr8GwC7Snw8dj+nM8VmnmS4jfDVX7M7sNJ+/hQwYaP4G6YLf0JzzxzZJg0nqUComQP5duUWTQO+9yVgFPMa28VxcEBb8xJ2lhYSN5ReBYPhftS46v6OGiPRZSEJOYyWh2Zkj5MUS2jfyuYlUSF2Hm+syUdaK1FVxnJrHnPtwBAoGBAOy3WrqmhOpg4+H5MHj3t7bETVoHNyAQ4QT40eYe7BH1QikFgoVtBKvbgK/9XBcmNWf3fJtoNiPA4HwL31RFm5SX24iqZ+OPnE2si1V2lawSQqcF5yTzFR1CEooKVMOEb36QL8zacs8o30so5BTZ4YCnwpVDnrtdZxV3nNmWIzZBAoGBALfsIaIHkldrp+nADFMW+OayAOesP3NfhSdG8N/uGvEkhT6YjCaycTUQ5Jxl8oWmlCG0OvdTZ/yvQZqWqDYS7b0O56A4sTGFjzdPNTPB6EYXODcUFCCi6er2aNaKc9OQgdaR3jsj0RyIl3oNgp/Lo6YNrCbr4JCPROSv0EcfIdJtAoGBANmWXLavNAQBFdd0Z+L5yQwd+wAjG7/E5CHe2YnOqK6FI9BzORuOLzoNpYefuxOoUnUDn612KDXLKE292AYtiaoXwHsqMB6TtlgLn3Pqcf/eNRg0K9jh/GmNf18Vyf6CcL4EqXuC3P+hEUeUCbtE36yUCB+OLY0KeSPZc/rpr+pBAoGBAIpBBkc2SdtNIbukkZ8j9ZX02JlN8aRYeU89FHRAGCCMw1x6b1/nYxHw0Oh/+f5daZysTmb8W36mfzolZey/7dXgDl1yQEBplW6OK//sEx4c9jTw8vBVhmEJOWWMTeULC46vt83c7qP0SWmGHlrgSPPZ8z6OsQ/5omAFiRrtXA9BAoGAOfjbJPSvfFeE9k16o2BUcZFmkN5xiKnausxJNJCCP/TzMX7urXimRFY6Y7+xSnitJovQUubDNjQsp4bfrlt41JO5ejcy4bQr2pQr4S5M+Hh5UOliwDS5Bt5Yy+5LLBWhQ0vyWdD5Ej+QNm2PFaBDqY+yoouEWNBY54uGjTbgRNI=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
3
key/alipay/rsa_public_key.pem
Normal file
3
key/alipay/rsa_public_key.pem
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
-----BEGIN PUBLIC KEY-----
|
||||||
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqhFp/IbUVIqLSCGbC/TDbEBzALTf5Tr0Be9dTmOz+nJO73H5VUhT2ADDFRxDtsn3Nannwer0B/kK40xGiYj7tv+uCIwNulr4aOkA7t+faDu01atbIroJb/6TGe8I33JkRWlW0O2IG0P3ZMLRp28yj0zmmxdeUpQomdy3AEcSSL9HKkRniYuSviud7FjOm/oa3mjUjAxmDVeZYpqAhSPT2rhpaIC47PBmEIfYjrH5QsszgxEyrOFq84mBtYFSJp0pHYp/7+p9olmxHO+R3OoPIWCrjJ653Z0AFuSNARNLAIpgKfTnXqenm+KC2cHEBRkHU971kOWTlecOGr/wrOBrrQIDAQAB
|
||||||
|
-----END PUBLIC KEY-----
|
||||||
@@ -28,6 +28,15 @@ export default class UserOrder extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
message: string; // 信息
|
message: string; // 信息
|
||||||
|
|
||||||
|
|
||||||
|
//保存平台订单号
|
||||||
|
public static async saveOrderID(roleId: string, localOrderID: string, aliOrderID: string) {
|
||||||
|
let result: UserOrderModelType = await UserOrderModel.findOneAndUpdate({ roleId, localOrderID },
|
||||||
|
{ $set: { orderID: aliOrderID } },
|
||||||
|
{ new: true }).lean(true);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//校验订单
|
//校验订单
|
||||||
public static async check(roleId: string, localOrderID: string, message: string = '') {
|
public static async check(roleId: string, localOrderID: string, message: string = '') {
|
||||||
let result: UserOrderModelType = await UserOrderModel.findOneAndUpdate({ roleId, localOrderID, state: { $ne: ORDER_STATE.RESULT_SUCCESS } },
|
let result: UserOrderModelType = await UserOrderModel.findOneAndUpdate({ roleId, localOrderID, state: { $ne: ORDER_STATE.RESULT_SUCCESS } },
|
||||||
|
|||||||
Reference in New Issue
Block a user