Skip to content

Commit 5522f1a

Browse files
committed
hacking payments
1 parent 67df54a commit 5522f1a

37 files changed

Lines changed: 203 additions & 256 deletions

app/sprites/.gitkeep

Whitespace-only changes.

gulpfile.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ gulp.task('lint-watch', ['lint'], function(neverCalled) {
2727
//gulp.task('lint', require('./tasks/lint-full-die')(serverSources));
2828

2929

30-
gulp.task('watch', ['sprite', 'stylus'], function(neverCalled) {
30+
gulp.task('watch', ['stylus'], function(neverCalled) {
3131
/*
3232
browserifyTask({
3333
src: 'app/js/index.js',
@@ -51,7 +51,7 @@ gulp.task('watch', ['sprite', 'stylus'], function(neverCalled) {
5151
});
5252

5353
// Show errors if encountered
54-
gulp.task('stylus', ['clean-compiled-css'], function() {
54+
gulp.task('stylus', ['clean-compiled-css', 'sprite'], function() {
5555
return gulp.src('./app/stylesheets/base.styl')
5656
// without plumber if stylus emits PluginError, it will disappear at the next step
5757
// plumber propagates it down the chain
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
const payment = require('payment');
2-
var Order = payment.Order;
3-
var Transaction = payment.Transaction;
1+
const payments = require('payments');
2+
var Order = payments.Order;
3+
var Transaction = payments.Transaction;
44

55
exports.get = function*(next) {
66

7-
console.log("HERE");
8-
97
if (this.params.orderNumber) {
108
yield* this.loadOrder();
119
} else {
10+
1211
// this order is not saved anywhere,
1312
// it's only used to initially fill the form
1413
this.order = new Order({

hmvc/getpdf/controller/pay.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var mongoose = require('mongoose');
22
var log = require('js-log')();
3-
var payment = require('payment');
4-
var Order = payment.Order;
3+
var payments = require('payments');
4+
var Order = payments.Order;
55
var methods = require('../paymentMethods').methods;
66

77
log.debugOn();
@@ -13,14 +13,12 @@ exports.post = function*(next) {
1313
if (!method) {
1414
this.throw(403, "Unsupported payment method");
1515
}
16-
var methodApi = require(method.module); // webmoney
1716

1817
if (this.order) {
1918
log.debug("order exists", this.order.number);
2019
yield* updateOrderFromBody(this.request.body, this.order);
2120
} else {
22-
// this order is not saved anywhere,
23-
// it's only used to initially fill the form
21+
// new order template
2422
this.order = new Order({
2523
amount: 1,
2624
module: 'getpdf',
@@ -37,7 +35,7 @@ exports.post = function*(next) {
3735
this.session.orders.push(this.order.number);
3836
}
3937

40-
var form = yield* methodApi.createTransactionForm(this.order);
38+
var form = yield* payments.createTransactionForm(this.order, method.name);
4139

4240
this.body = form;
4341

hmvc/getpdf/controller/success.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
exports.get = function*(next) {
2-
yield* this.loadOrder();
2+
// yield* payment.loadOrder(this);
33

44
this.body = 'THANK YOU';
55
};

hmvc/getpdf/paymentMethods.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
exports.methods = {
2-
'yandexmoney': {module: "yandexmoney", title: "Яндекс.Деньги"},
3-
'webmoney': {module: "webmoney", title: "Webmoney"},
4-
'payanyway': {module: "payanyway", title: "PayAnyWay"},
5-
'interkassa': {module: "interkassa", title: "Интеркасса"},
6-
'paypal': {module: "paypal", title: "Paypal"}
2+
'yandexmoney': {name: "yandexmoney", title: "Яндекс.Деньги"},
3+
'webmoney': {name: "webmoney", title: "Webmoney"},
4+
'payanyway': {name: "payanyway", title: "PayAnyWay"},
5+
'paypal': {name: "paypal", title: "Paypal"}
76
};

hmvc/getpdf/router.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
var payment = require('payment');
21
var Router = require('koa-router');
32

43
var router = module.exports = new Router();
54

6-
var main = require('./controller/main');
5+
var order = require('./controller/order');
76
var pay = require('./controller/pay');
87
var success = require('./controller/success');
98

10-
router.get('', main.get);
11-
router.get('/order/:orderNumber', main.get);
9+
router.get('', order.get);
10+
router.get('/order/:orderNumber', order.get);
1211

1312
router.post('/pay', pay.post);
1413
router.get('/success/:orderNumber', success.get);

hmvc/getpdf/templates/main.jade

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ div
88
input(name="email" value=order.data.email placeholder="E-mail")
99
select(name="paymentMethod")
1010
each paymentMethod in paymentMethods
11-
option(value=paymentMethod.module) #{paymentMethod.title}
11+
option(value=paymentMethod.name) #{paymentMethod.title}
1212
input(type="submit" value="Оплатить")
1313

1414
script(src="http://code.jquery.com/jquery-2.1.1.js")

hmvc/payments/index.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
var mount = require('koa-mount');
2+
var config = require('config');
3+
4+
// Interaction with payment systems only.
5+
6+
exports.loadOrder = require('./lib/loadOrder');
7+
exports.loadTransaction = require('./lib/loadTransaction');
8+
9+
var Order = exports.Order = require('./models/order');
10+
var Transaction = exports.Transaction = require('./models/transaction');
11+
var TransactionLog = exports.TransactionLog = require('./models/transactionLog');
12+
13+
// all submodules
14+
var paymentModules = {};
15+
for(var name in config.payments.modules) {
16+
paymentModules[name] = require('./' + name);
17+
}
18+
19+
// mount('/webmoney', webmoney.middleware())
20+
var paymentMounts = [];
21+
for(var name in paymentModules) {
22+
paymentMounts.push(mount('/' + name, paymentModules[name].middleware));
23+
}
24+
25+
// delegate all HTTP calls to payment modules
26+
exports.middleware = function*(next) {
27+
28+
for (var i = 0; i < paymentMounts.length; i++) {
29+
yield* paymentMounts[i].call(this, next);
30+
}
31+
32+
};
33+
34+
exports.populateContextMiddleware = function*(next) {
35+
this.redirectToOrder = function(order) {
36+
order = order || this.order;
37+
this.redirect('/' + order.module + '/order/' + order.number);
38+
};
39+
this.loadOrder = exports.loadOrder;
40+
this.loadTransaction = exports.loadTransaction;
41+
yield* next;
42+
};
43+
44+
// creates transaction and returns the form to submit for its payment
45+
// delegates form to the method
46+
exports.createTransactionForm = function* (order, method) {
47+
48+
var transaction = new Transaction({
49+
order: order._id,
50+
amount: order.amount,
51+
module: method
52+
});
53+
54+
yield transaction.persist();
55+
56+
return paymentModules[method].renderForm(transaction);
57+
58+
};
59+
60+
61+
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var mongoose = require('mongoose');
2-
var Order = require('../../models/order');
2+
var Order = require('../models/order');
33
var assert = require('assert');
44

55
// Populates this.order with the order by "orderNumber" parameter

0 commit comments

Comments
 (0)