Beat Censorship With A GoFundMe Alternative Using Paytrace Payment Gateway with Python / Django
Published:By: Kevin from CyberHavenProgramming.com
Free crowdfunding GoFundMe fundraiser alternative with Python and Django
I'd like to introduce my new crowdfunding go fund me alternative web app to anyone reading this. The purpose of it is to be able to have your own crowdfunding capabilities in case people in Silicon Valley or wherever decide to ban you for something they disapprove of. You can test out my app here.
The idea was to just use a different payment gateway / merchant account that has more respect for freedom of speech, since places like Chase bank bans / censors conservatives and other people they disagree with. After some backlash, I heard they gave her the account back, but it's not very promising, and people have to start suing to stop this behavior. They've unfairly screwed me over in the past too. If this is you, you are being unfairly discriminated against. Stop playing games, and start suing them.
Places like GoFundMe, Patreon, Twitter, Facebook, etc., all do the same, and deplatform people they merely disagree with. Milo Yiannopulos, Alex Jones, Laura Loomer, and many others were deplatformed from many of these places too. The people I just mentioned didn't commit any crimes either. Concerning GoFundMe and Laura, they wouldn't even give her a reason why they banned her. But seeing the trend among these companies, it was most likely for differences in politics, and letting their enemy get money for their own cause is a big no-no in their mind.
If I were in GoFundMe's position I wouldn't ban anyone as long as they weren't doing anything illegal - I'd let the people of the world decide whether they want to support something or not, even if it was something offensive, racist etc. The reason why is because when you ban free speech, it's a never ending downward spiral of ancient kings ruling people with an iron fist, ignoring your rights, and having double standards for people with power. Being in "the club" gives you special rights that others don't have. Banning speech also makes war inevitable, and you have to be able to speak freely to stop problems before they begin.
Consider Jesus. Whether you believe he existsed or not isn't the point. The issue is the guy said a few things that others didn't like, so a group of people got the government to murder him for them. Whatever side you're on, what if that was you?? Would you consider it fair for yourself to be murdered for saying a few words that other people disagreed with?? I doubt it. And this problem of others trying to ban free speech and access to commerce has been going on for awhile now in the USA, and it's getting worse. On the left, you have people who claim to be tolerant and good people. They also claim to hate Nazi's, but they adopt the same principles and tactics as them, and literally do to others what Nazi Germany did to people they disagreed with (banned from commerce / doing business, public speaking, etc. - see the links above).... The hypocrisy of these people....
What if it happened to you???
I can't say I agree with the beliefs of everyone who was banned, but I'd rather have a dangerous freedom than a peaceful slavery. The reality of a "peaceful" slavery is what Venezuela is going through right now, and the countless other times Communism has tried to be implemented, and failed. In those places, you become the ruling class's bitch, you get plundered, and then people have to eat garbage (literally) to survive in Communist countries. When you go into Socialism / slavery, you have to fight your way out of it.
- MOST IMPORTANT INFO: Anyone will be allowed to donate to any fundraiser created for 90 days. They don't need to have an account, nor be logged in to donate. This program uses Paytrace's API and sandbox account. See "how to install" below for how to get started. I intentionally made this app pretty bare bones just to get the payment functionality up for a Minimum Viable Product. It started with the thought of making it for just one fundraiser, but that grew into making it allow many among different categories. That means if you have 2 or more fundraiser's going, all the money coming in would go to your ONE merchant account, and you would be responsible for dividing up everything properly, minus your estimated cut (see important payment gateway API info below - You will have to develop this program a little further if you want it to be more automated - otherwise, only having 1 fundraiser going at a time works just fine). I set the cut to be 10% as an example. This extra complexity makes your job more complex if you have 2 or more fundraisers going at a time. So you will have to verify the values each fundraiser made from the paytrace dashboard on your own. Not the estimated amount stored on the database you set up. You have to handle refunds, chargebacks, etc. and make all payouts manually based on the values raised from the Paytrace server, not the estimated value stored in your own database (see step 8 for an example on checks to make). To extend the functionality, I suggest you only add admin actions with the principle I say in the "Important payment gateway API info" section below.
- Dynamic RSS 2 and Atom 1 feeds: Each Fundraiser lets the creator make updates and edits to their particular fundraiser, and updates for it. People who subscribe to the feed can get updates about it without having to keep visiting the page. This is a simple work around to save money by not having to spend money on native apps for iOS or Android just for push notifications. Just subscribe to it in your feed reader on any device, and have your feed reader give push notifications for you, with the time you set it to check. Why pay more when you don't have to??
- PCI Compliant: No credit card numbers, security codes, etc. are stored on my database. See below too.
- Markdown syntax supported: Check the markdown syntax cheat sheet for formatting your fundraiser and updates for it.
Important payment gateway API info
If you have only one fundraiser going at a time: This is the easiest and works just fine. Just make 1 category, and 1 fundraiser for it. Deny anyone else the ability to make a fundraiser. But you will still have to handle refunds, chargebacks, etc. manually. All you really have to do is link it up to your paytrace merchant account.
If you have 2 OR MORE one fundraisers going at a time: You will need to know exactly how much each Fundraiser raised from the Paytrace servers. I haven't done it myself yet, but skimming through the docs shows me you can add the optional discretionary data to give each payment something like a fundraiser_name attribute on their end, and have data exported by batch. I asked a developer there and they confirmed to me that you can query their database for the amount raised based off the fundraiser, and the time is lasted for, instead of the estimation you get on the backend of your server (again, this is so you get exact values before you make a payout to the person who made the fundraiser). If I were to do that, I would do so with an admin action, and have it export to a csv file or something similar. Since this is free and I'm not getting paid for it, I didn't do it myself because it's too much work to get paid for nothing. I'm also making this open source now, so using this is at your own risk and responsibility, and to build on top of it if you want.
How to install
- Clone the repo, paste the fundraiser_app/ folder to your root project, and add that string with no slash to your INSTALLED_APPS list.
- Add path('fundraiser_app/', include('fundraiser_app.urls')), in your root project's urls.py, or with whatever route you want it to have.
- Make a sandbox account at Paytrace. You might have to contact them manually to get a sandbox account. I did.
- Download, rename, and add your public_key.pem file to the root of your static folder. This file will encrypt credit card numbers and security codes. Extra details on this process are in the paytrace JSON api Client Side Encryption Library section.
- From my included settings.py, have your developer add the proper values from PAYTRACE_API_USER_NAME, PAYTRACE_API_USER_PASSWORD, PAYTRACE_API_USER_INTEGRATOR_ID, PAYTRACE_NEW_ACCESS_TOKEN_CREDENTIALS and PAYTRACE_NEW_ACCESS_TOKEN_HEADERS in your settings.py file. You will get these when you make a sandbox or merchant account.
- Search the directory for CustomUser, and change the imports / values to be equal to whatever your User object is. If you want more fields, add any you want.
- Make migrations, migrate, and mess with the settings you want required on the Paytrace payment gateway (names, CSC, zip code, etc.). Add those parameters as checks to make during the donate function, such as: if payment_response['response_code'] != 101:, and so on. Check the response codes, and other required attributes at those spots.
- Now with your backend Django account enabled, anyone with super user privileges can go to the dashboard and create any categories they want. Make at least one category. Anyone else who makes a non super user account on my site (or yours, if you implement it) can now make a new Fundraiser in any category they want, if they have an account at your site. But they can only do it if a category is created by a super user.
- Enjoy! And when you're ready, upgrade to a real merchant account instead of the sandbox. Links back to my site are also appreciated.