123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- //补单
- var checkorder = require('../../terry/checkorder.js');
- var mysql = require('mysql');
- var mysqlcn = require('../../terry/mysqlcn.js');
- var config = require('../config.js');
- var encryption = require('./encryption.js');
- var qs = require('querystring');
- var query = mysqlcn.query;
- // var orderid //cp订单号
- // var serverid //服务器id
- // var uid //玩家的uid
- // var platformid //'android'或'ios'
- // var channel //渠道
- // var cfid //商品的sid
- // var money //金额
- // var moneytype //货币类型
- // var flag //等待支付
- // var product_id //计费点名称
- // var channel_order_id //渠道订单号
- // var talkingdata //1未向talkingdata数据0发送成功
- // var payment_type //附加的子渠道
- // var submittime //订单创建时间
- // var overtime //订单结束时间
- // var userid //平台或渠道的账号id
- var SIG_KEY_A = "d06ede1fc820e59c7fb795c8d310aaa4";
- var sql_insert = function(orderid, serverid,uid,money,moneytype,cfid,platform,channel,submittime,overtime,flag,product_id,talkingdata){
- var sql = "INSERT INTO payinfo SET orderid=?, serverid=?, uid=?,money=?,moneytype=?,cfid=?,platform=?,channel=?,submittime=?,overtime=?,flag=?,product_id=?,talkingdata=?";
- var values = [orderid, serverid,uid,money,moneytype,cfid,platform,channel,submittime,overtime,flag,product_id,talkingdata];
- sql = mysql.format(sql, values);
- return sql;
- }
- var sql_select = function(orderid){
- var sql = "SELECT * FROM payinfo WHERE ?? = ?";
- var inserts = ['orderid',orderid];
- sql = mysql.format(sql, inserts);
- return sql;
- }
- var istest = 2 // 充值模式 istest=1沙盒测试 2:正式
- //手动补单
- var shoudong_repair_order=function(args,res){
- try {
- console.log("补单消息:%s",args)
- var obj = JSON.parse(args);
- var serverid = obj.serverid;
- var uid = obj.uid;
- var cfid = obj.cfid;
- var money = obj.money;
- var moneytype = obj.moneytype;
- var platform = obj.platform;
- var channel = obj.channel;
- var orderid = obj.orderid;
- var act_id = obj.act_id;
- var act_type = obj.act_type;
- var goods_id = obj.goods_id;
- var sign = obj.key;
- if (serverid==null ||
- uid==null ||
- cfid==null ||
- money==null ||
- moneytype==null ||
- platform==null ||
- channel==null ||
- orderid==null ||
- act_id==null ||
- act_type==null ||
- goods_id==null ||
- sign == null
- ){
- res.send(JSON.stringify({ 'error':'参数不全'}));
- return;
- }
- var submittime = Date.parse(new Date()) / 1000;
- if (obj.desc==null){
- obj.desc = "gm";
- }
- var str_sign = "serverid="+serverid+
- "&uid="+uid+
- "&cfid="+cfid+
- "&money="+money+
- "&moneytype="+moneytype+
- "&platform="+platform+
- "&channel="+channel+
- "&orderid="+orderid+
- "&act_id="+act_id+
- "&act_type="+act_type+
- "&goods_id="+goods_id+
- "&key="+SIG_KEY_A;
- var mysign = encryption.md5(str_sign);
- if (mysign != sign){
- try{res.send( JSON.stringify( {'erron':'签名错误'}));}
- catch(e){}
- return;
- }
- query(sql_select(orderid),function(qerr,vals,fields){
- if (qerr==null){
- if (vals[0]){
- console.log("订单重复");
- try{res.send( JSON.stringify( {'erron':'订单重复'}));}
- catch(e){}
- returnorderID = 2;
- return;
- }
- var timestamp = Date.parse(new Date()) / 1000;
- var product_id = option.name
- var sql_1 = "INSERT INTO payinfo SET\
- orderid=?,\
- overtime=?,\
- flag=?,\
- money=?,\
- cfid=?,\
- platform=?,\
- channel=?,\
- moneytype=?,\
- product_id=?,\
- talkingdata=?,\
- act_id=?, \
- act_type=?, \
- goods_id=?, \
- istest=?";
- var values_2 = [orderid,timestamp,1,money,cfid,platform,channel,option.typename,product_id,1,act_id, act_type, goods_id,istest];
- var sql = mysql.format(sql_1, values_2);
- query(sql,function(qeer,vals,fields_){
- if(qeer==null){
- checkorder.pushproduct(query,orderid,uid,serverid,cfid,function(ok){
- if (ok) {
- console.log("[补单] 订单 %s: 成功发货!", orderid);
- } else{
- console.log("[补单] 订单 %s: 发货地址无效!", orderid);//在无效时返回成功,我们自己补单中会派发flag为1支付成功但是没成功发货的单
- }
- try{
- res.send(JSON.stringify({ 'error':'成功'}));
- }
- catch(e){}
- })
- }else{
- console.log(qeer);
- res.send(JSON.stringify({ 'error':'插入数据失败,请重新提交'}));
- }
- })
- }
- })
- }catch(err){
- console.log(err);
- res.send(JSON.stringify({ 'error':'请重新提交'}));
- }
- }
- //手动补单 成功 status:200 失败 status:400 其他错误 status:500
- var url_repair_order=function(args,res){
- try {
- console.log("补单消息:%s",args)
- var obj
- try {
- obj = qs.parse(args)
- console.log("qs解析成功")
- } catch(e) {
- console.log(e)
- res.send("FAILURE");
- return;
- }
- var serverid = obj.serverid;
- var uid = obj.uid;
- var cfid = obj.cfid;
- var money = obj.money;
- var moneytype = obj.moneytype;
- var platform = obj.platform;
- var channel = obj.channel;
- var orderid = obj.orderid;
- var act_id = obj.act_id;
- var act_type = obj.act_type;
- var goods_id = obj.goods_id;
- var sign = obj.key;
- var check_ret = false;
- var name = ""
- if (serverid==null){
- name = "serverid"
- }else if(uid==null) {
- name = "uid"
- }else if(cfid==null) {
- name = "cfid"
- }else if(money==null) {
- name = "money"
- }else if(moneytype==null) {
- name = "moneytype"
- }else if(platform==null) {
- name = "platform"
- }else if(channel==null) {
- name = "channel"
- }else if(orderid==null) {
- name = "orderid"
- }else if(act_id==null) {
- name = "act_id"
- }else if(act_type==null) {
- name = "act_type"
- }else if(goods_id==null) {
- name = "goods_id"
- }else if(sign==null) {
- name = "sign"
- }else{
- check_ret = true
- }
- if(!check_ret){
- console.log(name);
- res.send(JSON.stringify({ 'status':'500','msg':'参数不全'}));
- }
- var submittime = Date.parse(new Date()) / 1000;
- if (obj.desc==null){
- obj.desc = "gm";
- }
- var str_sign = "serverid="+serverid+
- "&uid="+uid+
- "&cfid="+cfid+
- "&money="+money+
- "&moneytype="+moneytype+
- "&platform="+platform+
- "&channel="+channel+
- "&orderid="+orderid+
- "&act_id="+act_id+
- "&act_type="+act_type+
- "&goods_id="+goods_id+
- "&key="+SIG_KEY_A;
- console.log(str_sign);
- console.log(obj.str);
- var mysign = encryption.md5(str_sign);
- if (mysign != sign){
- console.log(mysign);
- console.log(sign);
- try{res.send( JSON.stringify( {'status':'500','msg':'缺少参数'}));}
- catch(e){}
- return;
- }
- query(sql_select(orderid),function(qerr,vals,fields){
- if (qerr==null){
- if (vals[0]){
- console.log("订单重复");
- try{res.send( JSON.stringify( {'status':'400','msg':'订单重复'}));}
- catch(e){}
- return
- }
- var platform = 'android';
- var channel = 'replenish';
- var option = config.parse(platform,channel,cfid)
- var timestamp = Date.parse(new Date()) / 1000;
- var product_id = option.name
- var sql_1 = "INSERT INTO payinfo SET\
- orderid=?,\
- serverid=?,\
- overtime=?,\
- flag=?,\
- money=?,\
- cfid=?,\
- platform=?,\
- channel=?,\
- moneytype=?,\
- product_id=?,\
- talkingdata=?,\
- act_id=?, \
- act_type=?, \
- goods_id=?, \
- uid=?, \
- istest=?";
- var values_2 = [orderid,serverid, timestamp,1,money,cfid,platform,channel,moneytype,product_id,0,act_id, act_type, goods_id,uid,istest];
- var sql = mysql.format(sql_1, values_2);
- console.log(sql)
- query(sql,function(qeer,vals,fields_){
- if(qeer==null){
- checkorder.pushproduct(query,serverid,orderid,function(ok){
- if (ok) {
- console.log("[补单] 订单 %s: 成功发货!", orderid);
- } else{
- console.log("[补单] 订单 %s: 发货地址无效!", orderid);//在无效时返回成功,我们自己补单中会派发flag为1支付成功但是没成功发货的单
- }
- try{
- res.send(JSON.stringify({ 'status':'200','msg':'成功'}));
- }
- catch(e){}
- })
- }else{
- console.log(qeer);
- res.send(JSON.stringify({ 'status':'400','msg':'插入数据失败,请重新提交'}));
- }
- })
- }
- })
- }catch(err){
- console.log(err);
- res.send(JSON.stringify({ 'status':'400','msg':'请重新提交'}));
- }
- }
- var express = require('express');
- var router = express.Router();
- router.get('/repair_order', function(req, res) {
- try{
- var real_ip = req.get("X-Real-IP") || req.get("X-Forwarded-For") || req.ip;
- console.log("get shoudong_repair_order,host:%s, ip:%s,time:%s",req.hostname,real_ip,new Date());
- var data = "";
- req.on("data",function(chunk){
- data += chunk;
- })
- req.on("end",function(){
- shoudong_repair_order(data,res);
- })
- req.on("error",function(err){
- var info = JSON.stringify({ 'error':'充值系统错误'});
- res.send(info);
- })
- }catch(err){
- console.log(err);
- var info = JSON.stringify({ 'error':'充值系统错误'});
- res.send(info);
- }
- })
- router.post('/repair_order', function(req, res) {
- var real_ip = req.get("X-Real-IP") || req.get("X-Forwarded-For") || req.ip;
- console.log("post repair_order,host:%s, ip:%s,path:%s,time:%s",req.hostname,real_ip,req.path,new Date());
- var data = "";
- req.on("data",function(chunk){
- data += chunk;
- });
- req.on("end",function(){
- try{
- url_repair_order(data,res)
- } catch(e) {
- console.log(e)
- res.send("FAILURE");
- }
- });
- req.on("error",function(err){
- console.log("error:%s",err);
- res.send("FAILURE");
- });
- });
- module.exports = router;
|