Beispiel #1
0
        bill: function( cfg, util, callback ){
            if( !Z.validate.phone(cfg.payer) )
                return util.error('invalidPayer');

            cfg.payer = Phone.sanitize(cfg.payer);
            var vars = {
                //[
                    ownerId: Z.UUID.getRandom().replace(/-/g,''),//TODO unique
                    agregatorId: 165,//TODO WTF
                //] unique
                phone: cfg.payer,
                provider: 2,
                billTo: '6574898478', // TODO WTF. project.somebill

                merchantId: 3853, //TODO WTF
                info: cfg.text || 'Мясо тестовое',
                amount: cfg.amount,
                currency: 643
            };
            vars.hash = crypto.createHash('md5').update(
                iconv.encode(
                    [
                        vars.ownerId,
                        vars.phone,
                        vars.provider,
                        vars.amount,
                        vars.currency,
                        vars.billTo,
                        vars.info,
                        'kuTku%yr$tgr)polkiuj'
                    ].join(''),
                    'win1251'
                )
            ).digest('base64');

/*
1)	Owner.id,
2)	Client.Phone.number,
3)	Client.Phone.provider,
4)	Payment.amount,
5)	Payment.currency,
6)	Message.bill,
7)	Message.comment,
8)	секретный пароль Агрегатора.
*/

            var soapXML = tpl.render('MCStartReq', vars);
            //App.megalog.push({mcocean: {start: soapXML}});

            (debugcurl?fakecurl('MCStartRes'):curl.post.bind(curl))(
                //TODO OCEAN URL
                'https://mobicom.oceanbank.ru/processing/',
                {
                    headers: [
                        'SOAPAction:"urn:mobicomStart"',
                        //'SOAPAction:http://ruru.ru/serviceprovider/ITransactionService/Init',
                        'Content-type: text/xml; charset=utf-8'
                    ],
            //        verbose: true,
                    data: soapXML
                }, function( err, data ){
                    //App.megalog.push({mcocean: {startresp: data}});
                    console.logModule('OCEAN','XML',data);
                    var xmlObj = xmlParser.parseString( data, function( err, data ){
                        console.logModule('OCEAN',data);
                        var body = data['soap:Envelope']['soap:Body'][0];

                        var toDB = {
                            tid: vars.ownerId,
                            aid: vars.agregatorId,
                            billTo: vars.billTo,
                            amount: cfg.amount,
                            payer: cfg.payer,
                            createDate: +new Date(),
                            info: vars.info
                        };
                        if( body['soap:Fault'] ){
                            toDB.status = 4;
                            toDB.statusInfo = body['soap:Fault'][0]['soap:Reason'][0]+'';
                        }else{
                            var resp = body['ns1:MCStartRes'][0]['ns1:Result'][0];
                            var out = {};
                            //debugger;
                            for( var i in resp )
                                out[i] = resp[i] + '';
                            toDB.status = out['ns1:code'];
                            toDB.statusInfo = out['ns1:comment'];
                        }
                        App.megalog.push({payment_data:[toDB]});
                        db.add('mcocean', toDB, function( err, res ){
                            callback({uuid: toDB.tid, status: out['ns1:code'] == 0 ? 0 : -1});
                        });
                        console.log(toDB);

                    });

                    console.log(data);

                }
            );

        },
Beispiel #2
0
                rows.forEach( function( el ){
                    var vars = {
                        agregatorId: el.aid,
                        transactionId: el.tid
                    };
                    vars.hash = crypto.createHash('md5').update(
                        iconv.encode(
                            [
                                vars.transactionId,
                                'kuTku%yr$tgr)polkiuj'
                            ].join(''),
                            'win1251'
                        )
                    ).digest('base64');
                    var soapXML = tpl.render('MCStatusReq', vars);
                    App.megalog.push({mcocean: {status: soapXML}});

                    (debugcurl?fakecurl('MCStatusRes'):curl.post.bind(curl))(
                        //TODO OCEAN URL
                        'https://mobicom.oceanbank.ru/processing/',
                        {
                            headers: [
                                'SOAPAction:"urn:mobicomRequest"',
                                //'SOAPAction:http://ruru.ru/serviceprovider/ITransactionService/Init',
                                'Content-type: text/xml; charset=utf-8'
                            ],
                    //        verbose: true,
                            data: soapXML
                        }, function( err, data ){
                            App.megalog.push({mcocean: {statusresp: data}});
                            var xmlObj = xmlParser.parseString( data, function( err, data ){
                                return;
                                //debugger;
                                var resp = data['soap:Envelope']['soap:Body'][0]['ns1:MCStartRes'][0]['ns1:Result'][0];
                                var out = {};
                                //debugger;
                                for(var i in resp)
                                    out[i] = resp[i]+'';
                                var toDB = {
                                    tid: vars.ownerId,
                                    aid: vars.agregatorId,
                                    billTo: vars.billTo,
                                    amount: cfg.amount,
                                    payer: cfg.payer,
                                    createDate: +new Date(),
                                    status: out['ns1:code'],
                                    statusInfo: out['ns1:comment'],
                                    info: vars.info
                                };
                                App.megalog.push({payment_data:[toDB]});
                                db.add('mcocean', toDB, function( err, res ){
                                    callback({uuid: toDB.tid, status: out['ns1:code'] == 0 ? 0 : -1});
                                });
                                console.log(toDB);

                            });

                            console.log(data);

                        }
                    );

                });