Closed: BNT-6 - Point-of-Sale Payment Dapp

We’ve completed v0!

You can try a live demo here. Our implementation follows the spec, though we are still working on backend notifications (dealing with the same IPV6 issues as others). One neat feature we developed is custom URLs for each merchant page. We would also like to continue enhancing the merchant page with transitions and branding.

All code is open source and can be viewed at this repo. The ReadMe (still in progress) has a thorough overview of the project/features.

Developing this project (our first integration with IC) has been a good lesson on various topics throughout the ecosystem: from Motoko and local replicas to https outcalls and authentication.

All feedback is welcome! Thanks for the opportunity to work on this RFP.

P.S.: A short demo video will be out soon!

5 Likes

Looking forward to the promotion and applications in real life!

3 Likes

Crossing the divide from interesting POC to useful application is tricky but so important!

2 Likes

:white_check_mark: Email notifications, working

Try it at https://hngac-6aaaa-aaaal-qb6tq-cai.icp0.io/

3 Likes

And finally:

:white_check_mark: SMS notifications, working

I didn’t have to make any messy workaround, instead solutions feels rather clean. I deployed a Netlify function that supports IPv6 and from there makes the requests to IPv4 Courier. Simple stuff, one ts file.

Notifications repository here: GitHub - kristoferlund/ic-pos-notifications: Netlify function that sends notifications for IC-POS using Courier/Mailgun/Twilio.

4 Likes

How are you doing it now?

  1. Canister calls Netlify function on IPv6.
  2. Netlify function calls Courier.
  3. Courier calls Mailgun and Twilio.
5 Likes

Nice solution! We tried something similar with a Vercel API endpoint, but there was no support for IPV6. We’ll try to implement your approach soon.

Here is a quick demo of our submission!

5 Likes

Hi! Has there been an update on the grant’s status?

1 Like

Sorry for the delay.

@kristofer @icplonger @kryptik Thank you all for your submissions! You all did a really great job! After reviewing your submissions, we’d like to announce the following distribution:

:1st_place_medal: @kristofer USD 3’500 in ICP
:2nd_place_medal: @kryptik USD 2’500 in ICP
:3rd_place_medal: @icplonger USD 1’500 in ICP

I’ll contact each of you in private for the next steps on claiming the awards.

In addition, I’d like to give a bit of feedback on the submissions

To @kristofer

You provide a simple and straightforward design that perfectly fits the use case. I also love the detailed comments in the code. You missed the option to print the QR code, and it would have been nice to get a direct payment notification in the app as well, in case the app is open.
In my test, I got the email but haven’t got a text message.

To @kryptik

Also a great job on design. From a UX perspective, I was a bit confused about what to add for the address in the setup, and I’m missing the info about the current balance. In my test, I haven’t got a notification, besides in the app itself.

To @icplonger

Awesome job on your first ICP project! From what I could gather it always requires entering an external wallet address, but you still have “Send ckBTC” in the menu. I’m not sure how this would work.

Again thank you all for the great work on this! Is anyone interested in moving the project forward? I’d be interested to hear your thoughts.

One feature to be added would be to also support the draft standard on payment request formats that has been already implemented in the NNS frontend Dapp. This would allow a merchant to specify an amount to be requested, instead of letting the payer enter the amount.

1 Like

Thanks for the update and the feedback. We’re glad to have participated in this bounty.

And yes, we are interested in carrying the project forward! The next steps for our implementation would be to add the IPV6 workaround shared by @kristofer , expand support for more tokens (within ICP and possibly other networks), and adopt the payment request format.

2 Likes

@kristofer @kryptik @icplonger

Could we get your twitter handles for a DFINITY tweet announcement?

wow this is great! thank you for the generous award and to the other participants congrats.

I’m already building a crypto commerce saas product called supercart.ai - its web2 based/EVM focused but my long term goal is to build a fully decentralized version and I think the IC is the most suitable chain to migrate to - however my view is “any token any chain” for commerce and not just ckbtc/icp. As I talk to merchants I’m finding they mostly want to deal in stablecoins - something we lack on the IC right now, so a few things have to come together before I can build it out but I remain optimistic.

My twitter is @ai_janus thanks!

3 Likes

Our twitter handle is: kryptikApp

Thank you all participants, this was a fun project to build! This is me on Twitter: https://twitter.com/kristoferlund

Payment requests would definitely add value to the app. Next logical step would then be to make it more into an actual POS where merchant can register the sale and calculate total amount:

  1. Add one head of lettuce, $3
  2. Add one tiny super expensive bag of micro greens, $5
  3. Sum total, $8
  4. Show QR with payment request
  5. Buyer scans and pays

Thanks for feedback, I will fix remaining issues.

  • The receive page can be printed to get QR on paper. I will style it to look nicer when printed and add a print icon.
  • Direct payment in app is a available on the receive page, it takes up to a minute though because of slow API. Will add notification to main merchant page as well.
  • Text messages, you are right, not working. It worked well in testing but turns out the Twilio trial account only can send sms to my phone number. I do see the requests being made on Courier though so the flow is working. Will upgrade Twilio account to have a fully functional demo.

Edit 26/7: Issues above have been fixed.

2 Likes

I’m reading through all the ecommerce threads here in the forum. I am NOT a dev but I have a 20 year ecommerce site that is fairly sizable and legit.
Seems like progress is coming along here. I’m looking for someone interested in working with someone like me to develop my catalog and payment on the IC.
I don’t care about getting fiat as payment, but I have a large catalog and the functions here come close to making the basics of my operation move smoothly enough.
I want to contribute to the IC by being a real world dude using it as proof of concept.
I’ve made 500,000 online sales since 1999.
I believe I could be a unique asset or partner in development here.
I’ll be reading and following but really want to make this happen.

1 Like

Mrweempers,

I’ve built an ecommerce platform to handle your exact use-case. It can accept payments direct p2p using crypto only (I don’t deal in fiat either) and it can integrate with the most popular platforms (shopify, woocommerce etc)

Everything is non-custodial but right now, only EVM chains are supported.

I’m working on a fully decentralized version that will run on the IC, but won’t be ready until next year.

Hit me up with a DM if you are interested, I’m always looking for new merchants to integrate :+1:

5 Likes

Hello and thank you.
I have filled out the contact form at Smartcart in both Brave and FireFox but did not seem to land on a proper confirmation page. Also, I think I am too new here to DM you possibly? Or I can’t find it.
I’m a BigCommerce site and I’d like to try and do this if you can DM me?
Thanks again.

Yes lets build it on the IC. Any update?