Inspiration

Making a payment - to another person, or a purchase - involves a mishmash of options, each filled with issues, fees, and complexities. Hit Me Up is a unified personal payment solution, that eliminates the problems with current methods. It removes waste and overhead, allowing a person to pay or receive payment with the currency (fiat or crypto) of choice using a universal PayID identity.

What it does

Using PayID as a payment identifier, Hit Me Up allows you to make payments in a wide variety of use cases. You can send money to others, simply by tapping your phone to theirs. You can also ask for a payment and receive it by tapping phones. You can add an item to purchase by scanning its QR code tag with your phone camera, and then checkout with a PayID payment tied to the currency of your choice. You can make a purchase at an NFC terminal such as a vending machine simply by tapping your phone. The app can also send an amount to any PayID account.

All payments are locally authenticated via biometric sensors such as FaceID or TouchID.

Amounts are displayed and managed in dollars, but the underlying payments are performed in the network/currency of choice associated with the account PayID. The app gathers real-time conversion rates between dollars and XRP, BTC, or ETH from CoinGecko. You can view the rates and your current balances under Settings.

At this point the app only implements XRP transactions, with test accounts from Xpring. Extension to other currencies or backends is straightforward.

Use cases

Let's say I went to lunch with a friend. I can use Hit Me Up to pay the merchant who has a Hit Me Up NFC terminal. The amount is specified in dollars, but I choose to pay with my XRP balance. I can then request a payment from my friend by splitting the bill amount. He chooses to pay in ETH. We tap phones to initiate the transfer. Both transactions are biometrically authenticated (i.e. with FaceID) for security. If he doesn't have the app, I can show him a QR code to scan for download.

I want a soda from a vending machine that takes Hit Me Up payments. I select my item, which is priced in dollars. I have elected to pay using my XRP balance. I tap my phone to the NFC terminal, accept the charge, and authenticate with FaceID. The vending machine receives my payment and delivers my item.

I see a nice face mask I'd like to buy from a street merchant. The merchant has a PayID address, and has printed item tags with Hit Me Up QR codes. To buy the item, I simply scan the tag with the app and authenticate the purchase with FaceID.

How I built it

I created an iOS app that performs all the operations. It integrates the XpringKit SDK to connect with PayID services.

For in-person P2P payments, the app implements a bluetooth-based communication protocol for transferring payment details between devices when they are in very close proximity. Each device uses a PayID for identity and connects to an associated backend (currently the Xpring demo service).

For in-store or merchant shopping, the app can scan QR codes that have been formatted with item and merchant info. A list is accumulated in the app as a shopping cart, and can be paid for in one payment.

For terminal payments such as at a vending machine, the app implements an NFC reader, with the captured RFID text encoding relevant item and payment information.

Challenges I ran into

I'm relatively new to the crypto-world, so I had a lot to learn. There are many features in the app, so there was a lot of code to write, test and debug. This is a new app, though I had some familiarity with bluetooth and QR codes, it was the first time I've worked with NFC.

Testing and debugging some of the networked features, such as peer-to-peer communication, or reading NFC tags was a big challenge and took a lot of trial and error to get working.

Creating a 3-minute video demonstrating all the features was also quite a challenge - gathering all the content, cropping, editing, and compositing. Getting all the timing and positioning for caption overlays took a while, as I don't do much video work. Fitting it all in 3 minutes took a lot of time.

Accomplishments that I'm proud of

I'm proud of how simple the app is to use, given the complexity under the hood. Also, the breath of features I was able to integrate makes the app useful in just about all payment scenarios.

What I learned

I learned a good deal about crypto currencies, particularly Ripple and Drops. I also learned about PayID and the XpringKit implementation for iOS. This was also the first time I've coded for NFC, so I learned about building a reader in iOS.

What's next for Hit Me Up

Building out a backend to get off the Xpring demo service would be the next step. Then adding additional currency support, and getting people to alpha test the service. I will also need a portal for account signups.

Access / Testing

The GitHub link includes the entire project. You will need a Mac with Xcode and Cocoapods to build. It's a private repo, but the address contactxpring@ripple.com has been invited to collaborate.

There is also a link to TestFlight beta test the app. This is a public link, so anyone can install.

There are several test accounts built into the app. They should have XRP balances.

You will need 2 iOS devices with the Hit Me Up app to test the P2P feature (see the video). To test the Buy feature, you will need an appropriately formatted QR code that represents an item (see the video). I included a QR code for the Circuit Mask in the DevPost pictures. To test the Tap feature, you will need a properly formatted NFC/RFID tag for the app to read (see the video). I can supply the format if you have the necessary hardware. For the demo, I used an Android phone that is capable of generating the appropriate NFC output.

Built With

Share this project:

Updates