Building a Payment Processor Extension for CiviCRM / Drupal (Outreachy weeks 5 – 6)

The main project I am working on during my Outreachy internship with the Free Software Foundation involves using PHP to build a Payment Processor for CiviCRM.

CiviCRM is a Constituent Relationship Management System – Which is like a Customer Relationship Management System but for Non-profit organizations. CRMs help businesses keep track of their relationship with customers including sales, customer profiles etc. In the case of non-profits, the CRM helps keep track of donors, profiles, memberships, pledges etc. CiviCRM is a popular opensource CRM used by non-profits and it is available as a plugin for popular opensource CMS systems like WordPress, Joomla and Drupal.

The FSF uses CiviCRM and Drupal on their site to manage relationships with their constituents and keep track of donors, pledges, memberships etc. At the moment the FSF is able to receive donations from their constituents via credit and debit cards. My task during this internship is to develop a new CiviCRM extension that helps the FSF receive donations in Bitcoin. Specifically, the project involves integrating CiviCRM with a self-hosted Bitcoin Payment Processor called BTCPay Server .

Everybody Struggles (Outreachy Weeks 3 – 4)

So far, I have made some good progress with my work on the CiviCRM/Drupal 7 BTCPay extension for the Free Software Foundation. The first thing I did was get my development environment setup. I was stuck on this for a while.

Specifically, I struggled with getting BTCPay to work in testnet mode on the dev server that I would be using to test the BTCPay extension throughout the internship.

I was eventually able to resolve this issue after digging deeper into technical documentation for NBXplorer, Electrum and BTCPay Server. I also got help from other members of the FSF tech team with bitcoind, bitcoin-cli and how to get bitcoin running in testnet mode.

I intend to detail the steps I took to self-host BTCPay Server in testnet mode and make a contribution to the BTCPay Server documentation at some point within the coming weeks.

I concluded setting up my development environment about a week ago. Within the past week, I actually started coding the BTCPay extension and right now, I am struggling with something else. My BTCPay extension is not working. Specifically I am trying to figure out why I can’t successfully pair my extension with the BTCPay Server I hosted. The pairing should work, but it just doesn’t at the moment and I have littered the code with var_dumps and print_r statements in an attempt to figure that out. So far Ruben, Ian and Andrew from the FSF tech team have been really helpful in pointing me to relevant code examples and developer documentation.

I intend to keep working through this till next week. And if I still cannot figure it out, I’ll ask for my mentors to take a closer look at what’s happening.

Introduce Yourself (Outreachy Weeks 1 – 2)

It’s been a really long time since I wrote a blog post about myself. And I don’t like starting articles with my name in the first sentence so here we are. My name is Kofi Oghenerukevwe. I am a software developer living and working in Delta State, Nigeria. I am stoked about spending the next 12 weeks as an Outreachy intern with the Free Software Foundation.

In the prompt for this blog post, I am told to pick 3 of my core values in life and explain why they are important to me.

My first core value is Transparency / Honesty. I think being honest about things and with people is the greatest kindness I can show to other human beings because in doing so I preserve a person’s autonomy. I think when I tell a lie to someone, even just a little lie or a slight omission…. I take away their ability to effectively do the uniquely human thing to do – choose. The way I see it, you can’t make a real autonomous decision with deceptive or misleading information. For this reason I try to be honest with people about things. I don’t always live up to this expectation 100% but this is a value that is important to me and it is a value that I admire and find refreshing in other people.

My second core value is Excellence. I like being good at what I do, and I hate it so much when I for some reason, don’t really know what I am doing. This is an odd complex to have because, everybody struggles with things at some point in time, including me. I am learning, slowly, to be more patient with myself. I am learning that all the best artisans become the best because of commitment through years of practice, application and study.

My third core value is Kindness. I find that the people who inspire me the most, my personal heroes, are people who model this beautiful and elegant balance between being very firm in communicating and acting on their convictions on the one hand, and being kind and welcoming to everyone, even those who disagree with them, on the other hand. I think life on earth sucks enough and everyone deserves kindness from others as we go about our daily lives together. I sincerely care about doing the best I can to leave people with a good experience of me.

I applied to the Outreachy program for 2 main reasons. Firstly, the $6000 stipend is attractive to me 🙂 Secondly, I have been looking to become a regular contributor to an open source project and in the past year, I have been really indecisive about the project I would contribute to. The Outreachy application was a moment of clarity for me. It allowed me to identify an open source community with projects that line up with my existing skills. While I intend to continue making contributions beyond these 12 weeks, it’s nice that I would be getting paid for the duration of the internship.

Create your website at
Get started