STEEMPAY.IO v1.0.1 LIVE! Accept Steem/SBD anywhere! Button generator included!

in #steempay8 years ago (edited)

Our beta is now live! Start accepting STEEM anywhere you want!

After countless hours of not sleeping to focus on Steempay, together with @cass who made an amazing UI for Steempay, we're finally able to launch our beta version.

Some parts may still be raw and not yet 100% completed, but the functionality is!

http://steempay.io

Todo list within the next 48h

  • Add more buttons to the generator
  • Publish the Github to public
  • Start creating the shopping cart plugins (WOO first)

What's next?

Steempay is just the beginning of many projets to follow. There are still some legal aspects to cover, but Steempayments (Steempay's umbrella group) will most likely start processing transactions on it's own servers. This would make it possible for simple, clean merchant solutions like BitPay provides, mobile wallet solutions like Blockchain to increase the usability of steem worldwide, and many more.


Raw documentation until Github is public

Donation vs payment

When choosing to receive donations, the user is free to send any amount of any currency. To set the donation option, simple use amount=0 in your parameters. Set currency to either SBD or STEEM since it's irrelevant for the end user. The user will receive a message to send any amount to your address.

For fixed amounts, called payments, set the amount and currency to the values required for you.

WARNING: Make sure to use 3 decimals! (AMOUNT.000) when generating a payment. This has multiple reasons, including future expantion of Steempay.io.

Button generator

See https://steempay.io/generate
Currently there is only 1 default button available but that will change in the next couple of hours.

The generated button looks like this (this actually works!)


Some of the proposals by @cass

Requesting a new payment

A new payment is created by passing URL or DATA parameters to steempay.io. This means you could send raw HTTP requests, or stay on your own website and send the data via AJAX calls or JSON request.

Following parameters are required:

  • receiver
  • amount
  • currency

Following parameters are optional but recommended

  • callback

! IMPORTANT !

Amount : Make sure to use 3 decimals! (AMOUNT.000) This has multiple reasons, including future expantion of Steempay.io

Callback: Get's called on success. You can use this to post a success message or handle data on your server/website if needed.

Handle callbacks

Set the callback parameter with your desired url. Always use http:// to start your url.

If a callback URL has been provided, steempay will post the unique paymentID to your URL. A simple php script can catch the the callback and verify the payment a last time (recommended).

example.php

<?php
if (isset($_GET['payid'])) {
    // Payment is success, confirm once again
    
    $url = "http://steempay.io/payment/verify?payid=" . $_GET['success'] . "& receiver=YOUR_USERNAME&amount=1.000&currency=SBD";
    
    $json = file_get_contents($url);
    if (json_decode($json->status) && json_decode($json->success) == "success") 
    {
        // Payment is double verified, do whatever needed now.
    }
}else{
    // Some error occured
    echo $_GET['message'];
}

Verification is possible via http://steempay.io/payment/verify?payid=XXX&receiver=XXX&amount=XXX&currency=XXX.

The returned main parameters are

  • success boolean
  • message Message about the success status
  • payid unique serverside generated ID

The full response is given below (if success)

{"status":"success","success":true,"message":"Payment completed with fixed amount (0.001 SBD).","block":4306279,"trx_id":"58c415fe70fe7d953e30997b78551415c7e4d190","payid":"Re3Hbl1ekAeSwVtzKS","amount":"0.001 SBD","timestamp":"2016-08-22T14:55:15"}

Beta version - What this means

Alpha version describes a development status that usually means the first complete version of a program or application, which is most likely unstable, but is useful to show what the product will do to, usually, a selected group—and is also called preview version; the beta version is usually the last version before wide release, often tested by users under real-world conditions.

Bugs could still occur, but all payments are made directly to the blockchain, so transactions are always safe from errors.

Thank you community

I would like to pay my eternal respect to this community, and give a big applause to @cass for the amazing UI and the time he put in this project, and also @roelandp for giving me good advice on how to lower the server's load.

Sort:  

Hello, I am the founder of Etheroll - Ethereum based dice game.

http://steemit.com/steemit/@etheroll/hello-steem-i-am-the-founder-of-etheroll-an-ethereum-based-provably-fair-dice-game-with-50-50-odds-and-a-low-1-house-edge-this

I may be interested to port this sort of behaviour into a Steem based version of our dice game.

I will be in touch. Congratulations on the progress!

You don't have to risk gettin locked up on the street corners now for shootin dice....Fantastic...I wanna take this to every hood :-)

If you do, make sure to RSVP about it on the beyondbitcoin hangout! We are here to cover solid projects with people who care about their work RSVP to Promote your Project Here. We are the first hangout series to give the steem community the power to upvote what we cover. :)

Payment verification after the callback should not be considered recommended but rather mandatory, since you don't know who is actually making the callback request. Furthermore, the verification URL needs to use HTTPS, otherwise a man-in-the-middle attack can be used to tell the merchant the payment was a success even when it wasn't.

Agreed that HTTPS is better

verification is using SSL but need to update my certificates since they block external requests for being selfsigned ;)

https://steempay.io/payment/verify?payid=Re3Hbl1ekAeSwVtzKS&receiver=steve-walschot&amount=0.001&currency=SBD

works just fine, but once your curl it, it's getting blocked. Should be resolved in max 24h from now.

you can get a letsencrypt certificate for this. dont pay for certificates from big corporations. letsencrypt is free and open!

Please follow the instructions carefully
New donation to steve-walschot
send any amount
Using following memo code

mTv41AjYsDQmubqQ2A
Awaiting your payment 

Send to whom?

After sent some to steve-walschot the progress bar is still running and "Awaiting your payment"

New donation to steve-walschot

:-)

Not really. Bittrex and Polo are able to process my deposit if I encrypted memo in the standard way. Currently memo is not encrypted by default on Steemit.com, but already some people asking for "encrypt memo by default", if it's applied, you need to warn the users to NOT encrypt memo, because users may not even know it's encrypted by default. Yes it's just some concerns about future.

What if I want to donate some to arhag? still send my fund to steve-walschot?

You change the receiver to arhag. For example in raw URL

https://steempay.io/payment?&receiver=arhag&amount=0&currency=0&callback=http://www.steemit.com

I mean, lack of a "to" field in the page. If I send fund to arhag directly, how can you process?

Because every action is recorded in the blockchain. It will process your donation to arhag. You can also set your receiver in the generator, click generate and then click the button to go straight to the page

OK, I understand now. But you will be unable to decrypt encrypted memo.

Using following memo code If you change the memo code, Steempay will not be able to process it. Just like you would deposit your coins at bittrex/polo and mistyping your memo code. The receiver will receive the coins, but steempay will not pickup the transaction (yet)

https://steempay.io/payment/www.steemit.com?payid=mTv41AjYsDQmubqQ2A
Got an exception when clicking on the Go back to your merchant link, some code is printed out.

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

Open: /var/dev_steempay/bootstrap/compiled.php

        if (!is_null($route)) {
            return $route->bind($request);
        }
        $others = $this->checkForAlternateVerbs($request);
        if (count($others) > 0) {
            return $this->getOtherMethodsRoute($request, $others);
        }
        throw new NotFoundHttpException();
    }
    protected function checkForAlternateVerbs($request)

Perhaps caused by lack of http:// on callback in your first version of the reply.

Set the callback parameter with your desired url. Always use http:// to start your url.

Hey @steve-walschot. Great job! I was trying to test out the button right now and not sure why it's not working for me or my dev. Transactions do register on the blockchain but doesn't show the success screen. Any common issue we could be having? Thanks!

Thank you for this!

congrats @steve-walschot great work (and also @cass for the beautiful design) and thanks for the mention :) I'm going to see how I can implement this in future projects!

a few quick tips since it's now out in the open:

  • in the payment page's .js : uncomment console.log, it's unfortunately not a web standard: https://developer.mozilla.org/en-US/docs/Web/API/Console/log I think you forgot one :)
  • Maybe a <title/> on the payment page
  • Maybe an instruction for people on how to make the payment on Steemit.com could be nice, hidden under an '?'
  • And/or store their 'username' in a cookie so you can auto-generate the 'transfers' page for future visits: https://steemit.com/@USERNAME/transfers

Looking forward to the github / open sourcing!

thx dude keep up the good work... Let the payments begin!

Thanks @roelandp, the log's are leftovers from debugging, removed now.
There will be an option to go straight to the wallet in a popup, but this is planned for the next update.

wow ... this is soooo cool

@cass & @steve-walschot we need a donate image/button :)

There you go :-)



I know what you mean, a 'donate' text button. @cass is working on it.
Should be ready soon!

shame on me .. i will do this next .. first have to finish a logo for the "abuse" group ..

Here's a donate button for you guys ;-)


Also, great initiative. Just a friendly reminder, you might wanna turn debug mode off on your webapp :-)

When the donate button will be available?

This is simply AWESOME! Thanks for sharing this great news with us, namaste :)

" Make sure to use 3 decimals!"
I hope the code should detect and correct this kind of requirements.

I want to integrate FoxyCart with this. :)

Hey! I've used your cart before without even knowing it at Vermont Flannel. Maybe I can buy a new hoodie with some steem dollars soon :)

Very cool!

As I've talked about before in various comments, the biggest problem is getting merchants onboard to accept currencies their customers are not asking to pay them with. We integrated Bitpay back in 2013 so thousands of Foxy stores could use it, and almost none of them did. Same thing with our Coinbase integration. I've blogged about it many times, but stores don't care until their customers demand it. It's the customer that drives what the merchants do.

Stores need to provide incentives for us to use, to drive demand. As we know, they can save on credit card fees, so give us a little discount and then we'll have a good reason to spend our bits. Gyft does 3% back, so I use that more than not. If they had a Vermont Flannel gift card, while VF directly accepted btc with no discount or cash back, I'd have no incentive to use btc direct.

New Egg nailed this by offering that heavy discount when they first started accepting bitcoin. It was $150 off $500 or more anywhere in the store for the first weekend. This got people to at least start using it.

I do think that SteemDollars will be different, however, as sbd is more spendable, given its lack of speculative upside that btc presents, while still providing all of the friction-less advantages. Love that FoxyCart could be leading the way! :)