In a world without Bitcoin, providing online shopping and establishing sound checkout procedures can be a pain.
Most merchants leverage E-commerce platforms such as Magento, Shoplify, etc. who streamline the setup by providing canned shopping experiences and payment processing solutions. Otherwise, they must build and maintain their own site which require constant IT support.
Accepting credit cards over the internet is common, but leaves the merchant with lots of risk. They must find a way to handle customer credit card data securely with as much certainty as possible that they will be able to settle against the credit card after they ship the goods.
Merchants must also deal with waves of fake and fraudulent orders that must be dealt with and cleansed from their system.
These issues can cause a merchant to suffer significant losses of profit/revenue - in terms of stolen goods (goods were shipped and not paid for) or resources time wasted cleaning up orders and collecting AR (accounts receivable).
Of course, Bitcoin makes this problem much easier to solve. If only we had a way to accept payment from the customer such that 'fake' orders are impossible to place, and merchants are able to securely receive and store the shipment data.
With Bitcoin, we can accept payment over the web where the MoneyButton is the checkout button. Since the swipe and payment of Bitcoin is the order confirmation, merchants are paid instantly which removes the incentives to spam a site with fake orders.
Fraudulent orders also become impossible as the only way to commit fraud is to actually pay the merchant. If a customer makes an error in their shipping data, they will reach out to the merchant to get it corrected as the merchant already has their Bitcoin.
To be honest, I had the idea for one page checkout before Joel Dalais posted his example (credit to him) but I took his page a step further. I uploaded this One Page Checkout web page on the blockchain:
This is a very simple example, but with it I am able to accept payment over the web for (again) the cute Mama Duck Mug, without hosting a server or paying a monthly subscription fee. I have the flexibility to have full control to dictate my customer's shopping experience (I understand we need robust tools to do this at scale).
Here users choose the quantity of mugs, then simply provide Name, Address and Email address information. As Satoshi wrote, we do not need to collect more data from the customer than that:
The user presses the 'Submit' button which makes a request to Handcash to get a new receiving address (for privacy), then renders the Money Button.
No validation on the fields is implemented in this example, but would be ideal.
Since running this web page is free today, we could instead pay for some address verification service validation at the click of 'Submit'.
Without validation, incentives are aligned such that the user would want to fill out address data properly. Users that enter bad addresses will work with the merchant to ensure they receive the the product as they already paid. This becomes a business process instead of dealing with the issue in code.
I am creating a JSON object with the name/address/email information that I will send in the OP_RETURN of the Money Button swipe.
Yes I understand that we cannot publish customer's address data on-chain, in a real implementation we can encrypt this data/use methods that nChain have laid out.
Once the button is swiped the a new tab will open to where the user can see their transaction.
We can also see the data formatted nicely in the s3 variable of BitDB Genesis:
JSON format:
{"mamaDuckMugQty":"1","name":"Mama Duck","street":"100 Pond Way","miscAddr":"Lilac 4","city":"Silicon Valley","state":"CA","zipcode":"95134","country":"USA","email":""}
Putting shipment information on-chain does have advantages - the merchant does not have to store customer data on-site (less risk), or pay for some cloud/3rd party server to host it.
Ironically, the argument can be made that customer address data is safer on-chain encrypted than it is in some hosted database (see recent Marriott hack).
Additionally, we can communicate that data to vendor's systems so that processing of the order can begin immediately. Whether one person is confirming the order with their lone shipper via sending them the transaction ID, or a 3rd party large scale shipper is receiving a notification that the order is ready to be picked.
Since Money Button is used, we can fund our suppliers at the swipe using the multiple outputs functionality, providing incentives for prompt shipment and streamlining the accounts payable process.
The JSON object embedded in the Bitcoin transaction is interpret-able by all programming languages, any system can easily ingest and process this document in some format to automate the next steps.
We could even subscribe to some standardized format (EDI) such that shipment communication is streamlined across multiple suppliers.
This is a simple example where anyone can take payments over the web securely, bringing Satoshi's goal of peer to peer cash further to fruition.
Behind the paywall is the full code that fetches the Handcash receive address and does the quantity * price calculation. The site written to the chain only works with a single address, hard-coded to pay 1/10th of a penny and has a disclaimer.


7 of 7 reviewers say it's worth paying for

0 of 7 reviewers say it's not worth paying for
  earned 0.0¢
Great article but should be pennies only
   3mo ago
  earned 0.0¢
My store is better and it takes BCH check it out!
   2mo ago