2018-01-25 17:42:38 +00:00
|
|
|
import os
|
|
|
|
import sys
|
2018-01-26 16:01:39 +00:00
|
|
|
import time
|
2018-01-25 17:42:38 +00:00
|
|
|
import logging
|
2018-01-26 16:01:39 +00:00
|
|
|
import uuid
|
2018-01-25 17:42:38 +00:00
|
|
|
import requests
|
|
|
|
from flask import Flask
|
|
|
|
from flask import request
|
2018-01-26 16:01:39 +00:00
|
|
|
from flask import jsonify
|
|
|
|
from rabbitmq import Publisher
|
2018-01-25 17:42:38 +00:00
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
|
|
@app.route('/health', methods=['GET'])
|
|
|
|
def health():
|
|
|
|
return 'OK'
|
|
|
|
|
|
|
|
@app.route('/pay/<id>', methods=['POST'])
|
|
|
|
def pay(id):
|
|
|
|
app.logger.info('payment for {}'.format(id))
|
|
|
|
cart = request.get_json()
|
|
|
|
app.logger.info(cart)
|
|
|
|
|
|
|
|
# dummy call to Paypal, hope they dont object
|
|
|
|
req = requests.get('https://paypal.com/')
|
|
|
|
app.logger.info('paypal returned {}'.format(req.status_code))
|
|
|
|
|
2018-01-26 16:01:39 +00:00
|
|
|
# Generate order id
|
|
|
|
orderid = str(uuid.uuid4())
|
2018-01-30 09:16:51 +00:00
|
|
|
queueOrder({ 'orderid': orderid, 'user': id, 'cart': cart })
|
2018-01-26 16:01:39 +00:00
|
|
|
|
2018-01-25 17:42:38 +00:00
|
|
|
# TDOD - order history
|
|
|
|
|
2018-01-30 09:16:51 +00:00
|
|
|
return jsonify({ 'orderid': orderid })
|
2018-01-26 16:01:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
def queueOrder(order):
|
|
|
|
app.logger.info('queue order')
|
|
|
|
publisher.publish(order)
|
|
|
|
|
|
|
|
# RabbitMQ
|
|
|
|
publisher = Publisher(app.logger)
|
2018-01-25 17:42:38 +00:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
sh = logging.StreamHandler(sys.stdout)
|
|
|
|
sh.setLevel(logging.INFO)
|
|
|
|
app.logger.addHandler(sh)
|
|
|
|
app.logger.setLevel(logging.INFO)
|
|
|
|
port = int(os.getenv("PAYMENT_PORT", "8080"))
|
|
|
|
app.run(host='0.0.0.0', port=port)
|