def post(payment_identifier):
        payment_identifier = clean_url_path_param(payment_identifier)
        redirect_uri = unquote_plus(request.args.get('redirect_uri').strip(
        )) if request.args.get('redirect_uri') else None

        req = CreateTransactionRequest(payment_identifier=payment_identifier,
                                       redirect_uri=redirect_uri)

        transaction = create_transaction(req)

        data = jsonify(transaction.to_dict())
        response = make_response(data, 200)
        return response
    def get(payment_identifier):
        payment_identifier = clean_url_path_param(payment_identifier)

        req = GetTransactionsRequest(payment_identifier=payment_identifier)

        transactions = get_transactions(req)

        if not transactions:
            return

        data = jsonify(transactions.to_dict())
        response = make_response(data, 200)
        return response
Example #3
0
    def get(payment_identifier):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)

            payment = get_payment(payment_identifier)

            if not payment:
                return jsonify(message=MSG_NOT_FOUND), 404

            data = jsonify(payment.to_dict())
            response = make_response(data, 200)
            return response

        except Exception as err:
            return jsonify(message=MSG_SERVER_ERROR + ' ' + str(err)), 500
Example #4
0
    def get(self, nr_id, payment_id):
        try:
            # Find the existing name request
            nr_model = RequestDAO.query.get(nr_id)

            if not nr_model:
                # Should this be a 400 or 404... hmmm
                return jsonify(message='{nr_id} not found'.format(
                    nr_id=nr_id)), 400

            payment_id = int(clean_url_path_param(payment_id))
            payment = PaymentDAO.query.get(payment_id)

            payment_response = get_payment(payment.payment_token)
            receipts = payment_response.receipts
            # Wrap the response, providing info from both the SBC Pay response and the payment we created
            data = jsonify({
                'id':
                payment.id,
                'nrId':
                payment.nrId,
                'token':
                payment.payment_token,
                'statusCode':
                payment.payment_status_code,
                'completionDate':
                payment.payment_completion_date,
                'payment':
                payment.as_dict(),
                'sbcPayment':
                payment_response.as_dict(),
                'receipts':
                list(map(lambda r: map_receipt(r), receipts))
            })

            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, err.status_code)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
Example #5
0
    def put(self, nr_id, payment_id):
        try:
            # Find the existing name request
            nr_model = RequestDAO.query.get(nr_id)

            if not nr_model:
                # Should this be a 400 or 404... hmmm
                return jsonify(message='{nr_id} not found'.format(
                    nr_id=nr_id)), 400

            payment_id = clean_url_path_param(payment_id)

            json_input = request.get_json()
            if not json_input:
                return jsonify(message=MSG_BAD_REQUEST_NO_JSON_BODY), 400

            # Grab the info we need off the request
            payment_info = json_input.get('paymentInfo')
            filing_info = json_input.get('filingInfo')
            business_info = json_input.get('businessInfo')

            # Update our payment request
            req = PaymentRequest(payment_info=payment_info,
                                 filing_info=filing_info,
                                 business_info=business_info)

            payment_response = update_payment(payment_id, req)
            if not payment_response:
                raise PaymentServiceError(message=MSG_ERROR_CREATING_RESOURCE)

            data = jsonify(payment_response.to_dict())
            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, err.status_code)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
    def put(payment_identifier):
        payment_identifier = clean_url_path_param(payment_identifier)

        json_input = request.get_json()
        if not json_input:
            return jsonify(message=MSG_BAD_REQUEST_NO_JSON_BODY), 400

        receipt_number = json_input.get('receipt_number', None)
        transaction_identifier = json_input.get('transaction_identifier', None)

        req = UpdateTransactionRequest(
            payment_identifier=payment_identifier,
            receipt_number=receipt_number,
            transaction_identifier=transaction_identifier)

        transaction = update_transaction(req)

        data = jsonify(transaction.to_dict())
        response = make_response(data, 200)
        return response
Example #7
0
    def get(payment_identifier):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)

            invoices = get_invoices(payment_identifier)

            if not invoices:
                return jsonify(message=MSG_NOT_FOUND), 404

            data = jsonify(invoices.to_dict())
            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
Example #8
0
    def get(payment_identifier):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)

            payment = get_payment(payment_identifier)

            if not payment:
                return jsonify(message=MSG_NOT_FOUND), 404

            data = jsonify(payment)
            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, err.status_code)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
Example #9
0
    def post(payment_identifier):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)

            json_input = request.get_json()
            if not json_input:
                return jsonify(message=MSG_BAD_REQUEST_NO_JSON_BODY), 400

            corp_name = json_input.get('corpName', None)
            business_number = json_input.get('businessNumber', None)
            recognition_date_time = json_input.get('recognitionDateTime', None)
            filing_identifier = json_input.get('filingIdentifier', None)
            filing_date_time = json_input.get('filingDateTime', None)
            file_name = json_input.get('fileName', None)

            req = PaymentReceiptInput(
                corp_name=corp_name,
                business_number=business_number,
                recognition_date_time=recognition_date_time,
                filing_identifier=filing_identifier,
                filing_date_time=filing_date_time,
                file_name=file_name
            )

            receipt = get_receipt(payment_identifier, req)

            if not receipt:
                return jsonify(message=MSG_NOT_FOUND), 404

            return send_file(receipt, mimetype='application/pdf', as_attachment=True)

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
    def get(payment_identifier, invoice_id):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)
            invoice_id = invoice_id if invoice_id else None

            invoice = get_invoice(payment_identifier, invoice_id)

            if not invoice:
                return jsonify(message=MSG_NOT_FOUND), 404

            data = jsonify(invoice.to_dict())
            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, err.status_code)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
    def get(payment_identifier):
        payment_identifier = clean_url_path_param(payment_identifier)
        receipt_number = unquote_plus(
            request.args.get('receipt_number').strip()) if request.args.get(
                'receipt_number') else None
        transaction_identifier = unquote_plus(
            request.args.get('transaction_identifier').strip()
        ) if request.args.get('transaction_identifier') else None

        req = GetTransactionRequest(
            payment_identifier=payment_identifier,
            receipt_number=receipt_number,
            transaction_identifier=transaction_identifier)

        transaction = get_transaction(req)

        if not transaction:
            return

        data = jsonify(transaction.to_dict())
        response = make_response(data, 200)
        return response
Example #12
0
    def put(payment_identifier):
        try:
            payment_identifier = clean_url_path_param(payment_identifier)

            json_input = request.get_json()
            if not json_input:
                return jsonify(message=MSG_BAD_REQUEST_NO_JSON_BODY), 400

            # Grab the info we need off the request
            payment_info = json_input.get('paymentInfo')
            filing_info = json_input.get('filingInfo')
            business_info = json_input.get('businessInfo')

            # Update our payment request
            req = PaymentRequest(
                payment_info=payment_info,
                filing_info=filing_info,
                business_info=business_info
            )

            payment_response = update_payment(payment_identifier, req)
            if not payment_response:
                raise PaymentServiceError(message=MSG_ERROR_CREATING_RESOURCE)

            data = jsonify(payment_response.to_dict())
            response = make_response(data, 200)
            return response

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)
Example #13
0
    def get(self, nr_id, payment_id):
        try:
            # Find the existing name request
            nr_model = RequestDAO.query.get(nr_id)

            if not nr_model:
                # Should this be a 400 or 404... hmmm
                return jsonify(message='{nr_id} not found'.format(
                    nr_id=nr_id)), 400

            payment_id = int(clean_url_path_param(payment_id))
            payment = PaymentDAO.query.get(payment_id)

            payment_response = get_payment(payment.payment_token)
            receipts = payment_response.receipts
            data = []
            if not receipts and payment_response.statusCode == PaymentState.APPROVED.value:
                # generate temp receipts for approved payments
                current_app.logger.debug('adding temporary receipt details.')
                receipts = [{
                    'id': payment.payment_token,
                    'receiptAmount': None,
                    'receiptDate': None,
                    'receiptNumber': 'Pending'
                }]
                payment_response.receipts = receipts
                data.append({
                    'id': payment.id,
                    'nrId': payment.nrId,
                    'token': payment.payment_token,
                    'statusCode': payment.payment_status_code,
                    'action': payment.payment_action,
                    'completionDate': payment.payment_completion_date,
                    'payment': payment.as_dict(),
                    'sbcPayment': payment_response.as_dict(),
                    'receipts': receipts
                })
            else:
                # Wrap the response, providing info from both the SBC Pay response and the payment we created
                data.append({
                    'id':
                    payment.id,
                    'nrId':
                    payment.nrId,
                    'token':
                    payment.payment_token,
                    'statusCode':
                    payment.payment_status_code,
                    'action':
                    payment.payment_action,
                    'completionDate':
                    payment.payment_completion_date,
                    'payment':
                    payment.as_dict(),
                    'sbcPayment':
                    payment_response.as_dict(),
                    'receipts':
                    list(map(lambda r: map_receipt(r), receipts))
                })

            return jsonify(data), 200

        except PaymentServiceError as err:
            return handle_exception(err, err.message, 500)
        except SBCPaymentException as err:
            return handle_exception(err, err.message, err.status_code)
        except SBCPaymentError as err:
            return handle_exception(err, err.message, 500)
        except Exception as err:
            return handle_exception(err, err, 500)