CoinPayments (CP)
This Lib make integration with https://www.coinpayments.net in easy way.
Initial setup
Need to setup public and private key:
Go to this page and generate new key.
Press on button "Edit Permissions" and add API Key Permissions:
Then on bot /setup
command:
Call API methods
All CoinPayments API method available here.
For example for method Get Basic Account Information we need 2 commands: /info
and /onInfo
/info
command:
In fields you can pass all fields from CoinPayments api. Just read help.
/onInfo
command:
Combine libs!
CoinPayments API do not have some methods. For example get balance by address, validate address, get transactions for address and etc.
Use Block.io Lib with CP Lib together!
Block.io is free if you do not use wallets there.
Receiving Payments
See demo bot. Available in the Store.
It is possible to receive payment for a temporary or permanent wallet.
Temporary wallet benefits:
Fixed amount
Can bind the payment to the ordered product
Status and checkout page
QR code for payment
one address for one payment
Permanent wallet benefits:
Any amount
One address for several payments
User can transfer funds at any time
Setup: set IPN Secret
The first step is to go to the My Settings page > Merchant Settings and set a IPN Secret.
Your IPN Secret is a string of your choosing. Recommended to be a random string of letters, numbers, and special characters.
CoinPayments will not send any IPNs unless you have an IPN Secret set.
See more
Once more! You need input any text (random text) as IPN secret in Merchant Settings page
Temporary wallet
We use command "create_transaction" with IPN.
Please see https://www.coinpayments.net/apidoc-create-transaction for details.
Yes, you can write it via Libs.CoinPayments.apiCall
method too. But there is an easier way.
Command /pay
/pay
Automatically with Library:
CoinPayments: IPN Retries / Duplicate IPNs
It is preferable to use method onPaymentCompleted
and not method onIPN
.
Since the method onPaymentCompleted
completely covers the IPN and solves the problem with IPN Retries / Duplicate IPNs
Command /onCreatePayment
/onCreatePayment
Command /onPaymentCompleted
/onPaymentCompleted
This command will be executed on successful payment
Need install ResourcesLib
Finished!
Now you can receive payments
Information about extra payments and refunds.
It is possible to define buyer email in fields for options (see code for command /pay )
Please note: CoinPayments do not send you extra payments. CoinPayments send just email to buyer (or you) about refund for that extra.
Also no any information about such extra in CP Panel or IPN. Be careful
Additional Information
You can check payment status
command: /on_txn_id:
command: /on_txn_id:
command /onIPN
command /onIPN
You can get info from IPN. Really it is not needed in simple. Just use onPaymentCompleted option on createTransaction.
command onError
command onError
Permanent wallet
We use command "get_callback_address" with IPN.
Please see https://www.coinpayments.net/apidoc-get-callback-address for details.
Yes, you can write it via Libs.CoinPayments.apiCall
method too. But there is an easier way.
Command /createWallet
/createWallet
Automatically with Library:
CoinPayments: IPN Retries / Duplicate IPNs
It is preferable to use method onIncome
and not method onIPN
.
Since the method onIncome
completely covers the IPN and solves the problem with IPN Retries / Duplicate IPNs
Command /onWalletCreate
/onWalletCreate
Command /onIncome
/onIncome
command onError
command onError
Troubleshooting & Debuging
Do not use same CoinPayment account for receiving and transfering funds.
Go to page. This list must have history with completed income transaction(s)
Try to resend IPN - see Debuging
Verify that you have set IPN secret
IPN History
You can view IPN History by link https://www.coinpayments.net/acct-ipn-history
Also you can resend IPN by checkin "Resend" checkbox and button "Re-send checked IPN(s)"
Test methods
Temporary wallet:
Also it is possible make test onPaymentCompleted event. It is good if you do not want make test payment.
Permanent wallet:
Also it is possible make test callTestPermanentWalletIncome event. It is good if you do not want make test payment.
Security
It is strongly recommended to pay attention to safety when using this library.
Do not use default names for secure commands such as /onIncome
, /onPaymentCompleted
Anybody can run any command by names. So need to check that security command runned by CoinPayment Lib only!
Do not use any non official libs now.
Any lib can run command with options.
Any libs can read properties (and read your API Keys from other lib)
We have not way to protect this now. Just not use NON official libs with CP lib. Well, that now there are no such libraries
Grant only the really necessary permissions for the Api key. If yor bot do not need "create_withdrawal" or etc methods - turn theys off.
Read more about security here
Do not process any before payment!
Any API commands can have errors: API errors, timeout errors, network errors, and other errors.
You need to withdraw, make deposit income only on success!
Because if you get an error, such a conclusion, replenishment of the deposit, etc. - will always be!
Last updated