Author

Topic: Accepting Crypto Payments (Read 200 times)

jr. member
Activity: 54
Merit: 14
February 11, 2020, 03:50:25 AM
#10
If you're not the one selling the goods and you are going to allow your users to sell/buy products, BTCPayServer may not be the best solution here.

My advice would be to run your own node (bitcoind), assign addresses for your users and store them in a database.

Bitcoind will notify you whenever a transaction happens, so if a user makes a deposit, all you need to do is update the database with the user's new balance.

If the user buys a product, no bitcoin transactions should be made. Instead, the values (balances) in the database should change. If a user have 0.2BTC in his balance, and then he buys a product that costs 0.1BTC... 0.1BTC +0.004BTC (4% platform fees) should be deducted from his balance and 0.1BTC should be added to the seller's wallet (always, on the database).

Now, whenever a withdrawal request is made from a user's dashboard, that's when you make an on-chain transaction based on the user's balance found in the database.

In order to do any of the above, you have to be familiar with Bitcoin-CLI[1][2].

[1] https://chainquery.com/bitcoin-cli
[2] https://www.youtube.com/watch?v=cMM-t7azzJE&list=PLhWIQKZKupCawKJQBAEJc-Y4I30HQ6KBH



Sounds like an amazing idea, and would truly be something in the space. Though I imagine that people buying things in Bitcoin aren't going to want all their money sitting with a centralized company with no idea as to if they're getting their funds are not. Just a concern I always raise when it comes to crypto projects that are going to be holding the coins themselves during a transcation.

I'd imagine a good idea would be to setup some sort of wallet where independent moderators (arbitrators) can release the coins to the sellers once everything is confirmed to have been delivered to the buyers. Though then again, we land in a place where you have to trust someone, now we're stuck to trusting the moderators.

Pretty much why people stick to sites like Ebay/Paypal/Amazon -- they know that if something goes wrong, in the worst case they can claw their money back from their credit card company. A benefit and a tradeoff to not have in crypto.

I think this idea already implemented by nicehash, because when you buy hashing power, you need to deposit crypto to your account, and then make transactions. Need to learn more about security issues with crypto, because nicehash was hacked in 2017 and $64m in crypto was stolen. They still didn't make full payout to their users. So it's a big security issue.
jr. member
Activity: 54
Merit: 14
February 11, 2020, 03:26:25 AM
#9
We will research and discuss both solutions with the team. But as I see both of them need to deal with payments. The thing is we don't want to keep Seller's crypto and deal with security issues. We want a solution that will automatically transfer crypto from Buyer to Seller and our platform taking 2-4% commission.
You may want to reassess what you are doing, and how you go about doing it. If you are not offering any type of escrow and it's a simple we take x% and they take the reset without any checks in place to make sure the seller actually sends the buyer their items your platform will be filled with scammers in a heartbeat.

You will need to have the payment go to your account first before sending it to another account, I do not believe there is anyway to breakup a transaction automatically to send part to you and part to another person in a buy/sell type situation handled automatically on a website. Other than saying send this % to address1 and this % to address2 which is not very customer friendly.

Customer will send your website the full amount
A script on your site will do the division and send
x% to your sites cold wallet
y% to your sellers address

If this is processed immediately nothing forces the seller to provide anything to the buyer, they already received their payment and can easily scam. The buyer will be pissed at your company more than the seller fr not having any protections in place.

BTCpayserver has a "store" functionality where you can run a node and let others sign up input their own address creation information and use your daemon / processor, it's open source so I guess you could branch it to let sellers do something like that but pull it in to your main account first. (seems like a lot of extra work)

I really think that what you are doing is getting over complicated.

The easiest way is seller makes a post, buyer agrees to pay and sends money to  you (you act as an escrow). Your server generates payment instructions which the buyer pays and your webserver handles the payment notifications, once payment is accepted you tell the seller to ship. The seller ships and when the buyer receives they mark the order as paid. If the buyer marks the transaction as all clear a script on your webserver runs to send payment to the sellers BTC address that you have on file. If the buyer has an issue they can work with you and the seller to rectify it. BTCpayserver can handle this extremely easily (the you getting paid and notifying your webserver/database that an invoice was paid). You would then need to do the coding for your specific case of when things get triggered and how that process is handled (ie no customer balances, but customers have a pending status that once the order is complete the coins are sent). All btcpayserver does is generate invoices and monitors the addresses/invoices and notifies you when the status updates.

I get what you mean, we have discussed issues with scammers and researched how eBay deal with them. First, they set limits for new registered accounts: 5 listing with total no more than 5 listings. Then they scan each listing for potential fraud and if their robots notice something that's suspicious, eBay suspends selling account. If everything is good and Seller complete 5 listings with good reviews, then he can apply for listings' increase. So eBay have some mechanism to deal with scammers, we want to try as well. Main thing is to find a solution with crypto payments without 3rd parties
legendary
Activity: 1666
Merit: 1285
Flying Hellfish is a Commie
February 10, 2020, 08:38:41 PM
#8
If you're not the one selling the goods and you are going to allow your users to sell/buy products, BTCPayServer may not be the best solution here.

My advice would be to run your own node (bitcoind), assign addresses for your users and store them in a database.

Bitcoind will notify you whenever a transaction happens, so if a user makes a deposit, all you need to do is update the database with the user's new balance.

If the user buys a product, no bitcoin transactions should be made. Instead, the values (balances) in the database should change. If a user have 0.2BTC in his balance, and then he buys a product that costs 0.1BTC... 0.1BTC +0.004BTC (4% platform fees) should be deducted from his balance and 0.1BTC should be added to the seller's wallet (always, on the database).

Now, whenever a withdrawal request is made from a user's dashboard, that's when you make an on-chain transaction based on the user's balance found in the database.

In order to do any of the above, you have to be familiar with Bitcoin-CLI[1][2].

[1] https://chainquery.com/bitcoin-cli
[2] https://www.youtube.com/watch?v=cMM-t7azzJE&list=PLhWIQKZKupCawKJQBAEJc-Y4I30HQ6KBH



Sounds like an amazing idea, and would truly be something in the space. Though I imagine that people buying things in Bitcoin aren't going to want all their money sitting with a centralized company with no idea as to if they're getting their funds are not. Just a concern I always raise when it comes to crypto projects that are going to be holding the coins themselves during a transcation.

I'd imagine a good idea would be to setup some sort of wallet where independent moderators (arbitrators) can release the coins to the sellers once everything is confirmed to have been delivered to the buyers. Though then again, we land in a place where you have to trust someone, now we're stuck to trusting the moderators.

Pretty much why people stick to sites like Ebay/Paypal/Amazon -- they know that if something goes wrong, in the worst case they can claw their money back from their credit card company. A benefit and a tradeoff to not have in crypto.
legendary
Activity: 2198
Merit: 1989
฿uy ฿itcoin
February 10, 2020, 02:01:58 PM
#7
If you're not the one selling the goods and you are going to allow your users to sell/buy products, BTCPayServer may not be the best solution here.

My advice would be to run your own node (bitcoind), assign addresses for your users and store them in a database.

Bitcoind will notify you whenever a transaction happens, so if a user makes a deposit, all you need to do is update the database with the user's new balance.

If the user buys a product, no bitcoin transactions should be made. Instead, the values (balances) in the database should change. If a user have 0.2BTC in his balance, and then he buys a product that costs 0.1BTC... 0.1BTC +0.004BTC (4% platform fees) should be deducted from his balance and 0.1BTC should be added to the seller's wallet (always, on the database).

Now, whenever a withdrawal request is made from a user's dashboard, that's when you make an on-chain transaction based on the user's balance found in the database.

In order to do any of the above, you have to be familiar with Bitcoin-CLI[1][2].

[1] https://chainquery.com/bitcoin-cli
[2] https://www.youtube.com/watch?v=cMM-t7azzJE&list=PLhWIQKZKupCawKJQBAEJc-Y4I30HQ6KBH



Yeah, this is probably your best approach. None of the payment gateways I know are designed to process payments by forwarding it and taking a percentage for yourself.
sr. member
Activity: 463
Merit: 309
February 10, 2020, 12:47:30 PM
#6
We will research and discuss both solutions with the team. But as I see both of them need to deal with payments. The thing is we don't want to keep Seller's crypto and deal with security issues. We want a solution that will automatically transfer crypto from Buyer to Seller and our platform taking 2-4% commission.
You may want to reassess what you are doing, and how you go about doing it. If you are not offering any type of escrow and it's a simple we take x% and they take the reset without any checks in place to make sure the seller actually sends the buyer their items your platform will be filled with scammers in a heartbeat.

You will need to have the payment go to your account first before sending it to another account, I do not believe there is anyway to breakup a transaction automatically to send part to you and part to another person in a buy/sell type situation handled automatically on a website. Other than saying send this % to address1 and this % to address2 which is not very customer friendly.

Customer will send your website the full amount
A script on your site will do the division and send
x% to your sites cold wallet
y% to your sellers address

If this is processed immediately nothing forces the seller to provide anything to the buyer, they already received their payment and can easily scam. The buyer will be pissed at your company more than the seller fr not having any protections in place.

BTCpayserver has a "store" functionality where you can run a node and let others sign up input their own address creation information and use your daemon / processor, it's open source so I guess you could branch it to let sellers do something like that but pull it in to your main account first. (seems like a lot of extra work)

I really think that what you are doing is getting over complicated.

The easiest way is seller makes a post, buyer agrees to pay and sends money to  you (you act as an escrow). Your server generates payment instructions which the buyer pays and your webserver handles the payment notifications, once payment is accepted you tell the seller to ship. The seller ships and when the buyer receives they mark the order as paid. If the buyer marks the transaction as all clear a script on your webserver runs to send payment to the sellers BTC address that you have on file. If the buyer has an issue they can work with you and the seller to rectify it. BTCpayserver can handle this extremely easily (the you getting paid and notifying your webserver/database that an invoice was paid). You would then need to do the coding for your specific case of when things get triggered and how that process is handled (ie no customer balances, but customers have a pending status that once the order is complete the coins are sent). All btcpayserver does is generate invoices and monitors the addresses/invoices and notifies you when the status updates.
jr. member
Activity: 54
Merit: 14
February 10, 2020, 12:14:13 PM
#5
We will research and discuss both solutions with the team. But as I see both of them need to deal with payments. The thing is we don't want to keep Seller's crypto and deal with security issues. We want a solution that will automatically transfer crypto from Buyer to Seller and our platform taking 2-4% commission.
sr. member
Activity: 463
Merit: 309
February 10, 2020, 11:51:01 AM
#4
If you're not the one selling the goods and you are going to allow your users to sell/buy products, BTCPayServer may not be the best solution here.

My advice would be to run your own node (bitcoind), assign an address (preferably multiple ones) for users and store them in a database.

Whenever a user makes a deposit, the database should be updated with his new balance.

If the user buys a product, no bitcoin transactions should be made. Instead, the values (balances) in the database should change. If a user had 0.2BTC in his balance, and he bought a product that costs 0.1BTC... 0.1BTC +0.004BTC (4% platform fees) should be deducted from his balance and 0.1BTC should be added to the seller's wallet.

Now, whenever a withdrawal request is made from a user's dashboard, that's when you make an on-chain transaction.

In order to do any of the above, you have to be familiar with Bitcoin-CLI[1][2].

[1] https://chainquery.com/bitcoin-cli
[2] https://www.youtube.com/watch?v=cMM-t7azzJE&list=PLhWIQKZKupCawKJQBAEJc-Y4I30HQ6KBH


Why wouldn't BTCPayServer be usable for this, you run your own bitcoind and it handles invoicing and payment processing you fully run the payment processor. What you do with the information (processing it) btcpayserver collects is fully on you.

The way I'd think it would work is
Customer places order on your site, your site sends the amounts to your running btcpayserver which receives a reply to create an invoice for the customer to pay. The customer pays the invoice and btcpayserver sends an IPN to your webserver, your webserver then processes the IPN and logs the customers order and updates the customer and sellers accounts to reflect this (ie customer paid your site, 0.1 BTC, the sellers account gets updated for 0.09BTC and a record for the fee of 0.01BTC is logged to your database).

The main difference is, your running bitcoind on btcpayserver does not actually use the wallet, it just uses it for verification of the blockchain transactions. I would then export the data and run manually the payouts to each user or if you have a lot of users start investing in automation of the payouts and verification's if the sale was fully processed. You wouldn't want to pay a seller and find out the next day they didn't even ship the item.

Edit* And yes what you are describing is the "correct" way of doing it but it also is a reinvention of the wheel. For someone that wants to make a new site, start off with something that will do what you want and customize as you grow. What I am describing can be done in both scenarios. A user can make a deposit to your site or just pay for each item individually, you would just need to setup the logic (if/else) on your webserver.

If userbalance > 0
use userbalance
else
create invoice for total

If deposit
update userbalance
(don't charge a fee for people making a deposit just for the buy/sell event).
staff
Activity: 3500
Merit: 6152
February 10, 2020, 11:35:36 AM
#3
If you're not the one selling the goods and you are going to allow your users to sell/buy products, BTCPayServer may not be the best solution here.

My advice would be to run your own node (bitcoind), assign addresses for your users and store them in a database.

Bitcoind will notify you whenever a transaction happens, so if a user makes a deposit, all you need to do is update the database with the user's new balance.

If the user buys a product, no bitcoin transactions should be made. Instead, the values (balances) in the database should change. If a user have 0.2BTC in his balance, and then he buys a product that costs 0.1BTC... 0.1BTC +0.004BTC (4% platform fees) should be deducted from his balance and 0.1BTC should be added to the seller's wallet (always, on the database).

Now, whenever a withdrawal request is made from a user's dashboard, that's when you make an on-chain transaction based on the user's balance found in the database.

In order to do any of the above, you have to be familiar with Bitcoin-CLI[1][2].

[1] https://chainquery.com/bitcoin-cli
[2] https://www.youtube.com/watch?v=cMM-t7azzJE&list=PLhWIQKZKupCawKJQBAEJc-Y4I30HQ6KBH

sr. member
Activity: 463
Merit: 309
February 10, 2020, 11:24:50 AM
#2
Hi, we are developing a marketplace, eBay type. And implemented a Coinbase merchant solution. However, I feel there are many other options, so I'm asking for advice. We have platform charging commission and Seller receiving crypto. Is there any merchant solution that can automatically process crypto and send it to 2 different wallets, the main sum to the seller and 2-4% to the platform? Like Paypal does for eBay.
btcpayserver

https://github.com/btcpayserver/

Then setup your bitcoind / server to do the split.

jr. member
Activity: 54
Merit: 14
February 10, 2020, 10:59:42 AM
#1
Hi, we are developing a marketplace, eBay type. And implemented a Coinbase merchant solution. However, I feel there are many other options, so I'm asking for advice. We have platform charging commission and Seller receiving crypto. Is there any merchant solution that can automatically process crypto and send it to 2 different wallets, the main sum to the seller and 2-4% to the platform? Like Paypal does for eBay.
Jump to: