PayButton可以通過在您的網站上添加捐款或購買的按鈕,來接收eCash。
首先PayButton需要您先設置一個eCash錢包,這樣才能開始進行收款。如果您還沒有錢包,目前有很多方案供您選擇。
只需將以下內容添加到您網站的HTML中,用您的eCash錢包中的地址替換YOUR_ADDRESS_HERE:
<script src="https://unpkg.com/@paybutton/paybutton/dist/paybutton.js"></script>
<div class="paybutton" to="YOUR_ADDRESS"></div>使用JavaScript生成PayButton的示例:
<script src="https://unpkg.com/@paybutton/paybutton/dist/paybutton.js"></script>
<div id="my_button"></div>
<script>
function mySuccessFunction(transaction) {
const transactionAttrs = {
hash,
amount,
paymentId,
confirmed,
message,
timestamp,
address,
rawMessage,
inputAddresses
} = transaction;
console.log(transactionAttrs);
}
function myTransactionFunction(transaction) {
const transactionAttrs = {
hash,
amount,
paymentId,
confirmed,
message,
timestamp,
address,
rawMessage,
inputAddresses
} = transaction;
console.log(transactionAttrs);
console.log( 'Received: ' + transactionAttrs.amount );
}
function myCloseFunction(success, paymentId) {
console.log('Closed!')
console.log('Payment successful?: ' + success)
console.log('Payment ID: ' + paymentId)
}
function myOpenFunction(amount, to, paymentId) {
console.log('Opened to: ' + to + ' for ' + amount + ' XEC')
console.log('Payment ID: ' + paymentId)
}
var config = {
to: 'ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp',
amount: 4.5,
goalAmount: 300000,
editable: false,
currency: 'USD',
text: 'Tip Us a Coffee!',
hoverText: 'One coffee',
theme: {
palette: {
primary: '#ee8b2b',
secondary: '#fefbf8',
tertiary: '#504030'
}
},
animation: 'invert',
successText: 'Purchase Complete!',
onSuccess: mySuccessFunction,
onTransaction: myTransactionFunction,
onOpen: myOpenFunction,
onClose: myCloseFunction,
randomSatoshis: true,
opReturn:"ABC",
disablePaymentId: true,
disabled: false,
wsBaseUrl: 'http://localhost:5000',
apiBaseUrl: 'http://localhost:3000'
disableAltpayment: true,
contributionOffset: 10
};
PayButton.render(document.getElementById('my_button'), config);
</script>使用React生成PayButton的示例:
!> 需要React v16.3或更高版本.
npm i --save @paybutton/reactimport { PayButton } from '@paybutton/react'
function App() {
function mySuccessFunction() {
console.log("Success!")
}
const to = 'ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp'
const amount = 12
const currency = 'USD'
const text = 'Join the Cause'
const hoverText = 'Fee: $12'
const theme = {
palette: {
primary: '#B94283',
secondary: '#FFFFFF',
tertiary: '#333333'
}
}
const onSuccess = mySuccessFunction()
return <PayButton
to={to}
amount={amount}
currency={currency}
text={text}
hoverText={hoverText}
theme={theme}
onSuccess={onSuccess}
/>
}
您還可以創建一個可視性的PayButton插件,不需要點擊按鈕即可打開:
<script src="https://unpkg.com/@paybutton/paybutton/dist/paybutton.js"></script>
<div class="paybutton-widget" to="ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp"></div><script src="https://unpkg.com/@paybutton/paybutton/dist/paybutton.js"></script>
<div id="my_button"></div>
<script>
PayButton.renderWidget(document.getElementById('my_button'), { to: 'ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp' });
</script>import { Widget as PayButtonWidget } from '@paybutton/react'
function App() {
return <PayButtonWidget
to='ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp'
/>
}
export default App;
使用以下選項來自定義您的PayButton:
參數"to"用來定義匯款去向。
!> 此參數是必需使用的。可用值是一切有效的eCash地址。
例子:
to="ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp"to: 'ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp'to = "ecash:qrmm7ed0px8tydrlhgvu3putwpwzlfyr0uzfc0slxp"
參數"amount"用來定義指定金額。將此參數與可選用的參數"currency"結合使用,可以指定以其他貨幣來顯示特定的金額。
?> 此參數是可選用的。默認值為0。有效值為任何十進制。
例子:
amount=100amount: 100amount = 100
參數"currency"用來定義幣種。將此參數與可選用的參數"currency"結合使用,可以指定以其他貨幣來顯示特定的金額。
?> 此參數是可選用的。替代貨幣為"XEC"。可用幣種如下:XEC、BCH、美元、加幣。
例子:
currency="USD"currency: 'USD'currency = "USD"
參數"text"用來定義按鈕上顯示的默認文字。
?> 此參數是可選用的。默認文字為"Donate"。可用內容為任何文字符號。它对小部件没有任何影响。
例子:
text="Purchase"text: 'Purchase'text = "Purchase"
參數"hover-text"用來定義當滑鼠懸停留時所顯示的文字。
?> 此參數是可選用的。默認文字為"Click to send XEC"。可用內容為任何文字符號。
例子:
hover-text="Send Bitcoin Cash"hoverText: 'Send Bitcoin Cash'hoverText = "Send Bitcoin Cash"
參數'goal-amount'指定了需要多少捐款/貢獻才能認為資金籌集已完成,由一個進度條指示。
?> 此參數是可選的。預設值為0(無)。可能的值是任何數字。
例子:
goal-amount="10"goalAmount: 10goalAmount = 10
參數'editable'指定是否提供一個輸入框,以供用戶能夠改變付款金額。
?> 此參數是可選用的。默認值為false。有效值為true或false。
例子:
editable="true"editable: trueeditable = true
參數"theme"用來定義按鈕和對話框的主題。
?> 此參數是可選用的。默認值為{ "palette": { "primary": "#4bc846", "secondary": "#f8fdf8", "tertiary": "#374936" } }。可用值為任何有效的調色板代碼值。
例子:
theme='{ "palette": { "primary": "#ee8b2b", "secondary": "#fefbf8", "tertiary": "#504030"} }'theme: { "palette": { "primary": "#ee8b2b", "secondary": "#fefbf8", "tertiary": "#504030"} }theme = { palette: { primary: "#ee8b2b", secondary: "#fefbf8", tertiary: "#504030"} }
參數"animation"用來定義當滑鼠停留時按鈕所產生的改變。
?> 此參數是可選用的。默認值為slide。可用值為slide、invert、none。
例子:
animation="invert"animation: 'invert'animation = "invert"
參數"success-text"用來定義成功付款後所顯示的文字。
?> 此參數是可選用的。默認文字為"Thank for your support!"。可用內容為任何文字符號。
例子:
success-text="Thanks!"successText: 'Thanks!'successText = "Thanks!"
"transaction-text" 參數指定當發生新交易但金額或 OP_RETURN 代碼不正確時顯示的文字。
?> 此參數為選填,預設值為空。可用值為任何字串。
Example:
transaction-text="New transaction!"transactionText: 'New transaction!'transactionText = "New transaction!"
參數"on-success"用來定義指定地址收款後運行的回呼函式。
?> 此參數是可選用的。默認值為空白。有效值為任何已定義的函式。
- transaction (
object):- hash (
string) - 傳輸的雜湊值 - amount: (
number) - 被請求的金額是多少 - paymentId (
string) - 资金将汇入的地方
- hash (
例子:
on-success="successCallback"onSuccess: successCallbackonSuccess = successCallback
參數"on-transaction"用來定義收到任何付款到指定地址後運行回呼函式。
?> 此參數是可選用的。默認值為空白。有效值為任何已定義的函式。
- transaction (
object):- hash (
string) - 傳輸的雜湊值 - amount: (
number) - 被請求的金額是多少 - paymentId (
string) - 资金将汇入的地方 例子:
- hash (
on-transaction="transactionCallback"onTransaction: transactionCallbackonTransaction = transactionCallback
參數"on-open"指定了在按鈕被點擊、對話框打開之前運行的回呼函數。
?> 這個參數是可選的。默認值為空。可能的值是任何已定義的函數。
- amount: number - 請求的金額是多少(以加密貨幣計)
- to: string - 付款的唯一标识符
- paymentId: string - 资金将汇入的地方
Example:
on-open="successCallback"onOpen: successCallbackonOpen = successCallback
參數"on-close"指定了對話框關閉時運行的回呼函數。
?> 這個參數是可選的。默認值為空。可能的值是任何已定義的函數。
- success: boolean - 付款狀態
- paymentId: string - 付款標識
Example:
on-close="successCallback"onClose: successCallbackonClose = successCallback
‘op-return’參數指定將與交易一起發送的自定義消息。
?> 此參數是可選的。默認值為空。可能的值為任何最多68字節的字符串。
op-return=""opReturn: ''opReturn = ""
參數'random-satoshis'用來定義是否將付款金額的最後幾位隨機化,因此當一個人進行付款時不太可能觸發回呼onSuccess的同時另一個人正打開付款螢幕。
?> 此參數是可選用的。默認值為false。有效值為true、false或0到4的整數,該整數指定應隨機化多少個最後的數字。將其設置為true等同於將其設置為3。將其設置為false等同於將其設置為0。
例子:
random-satoshis="true"randomSatoshis: truerandomSatoshis = true
參數'hide-toasts'指定是否讓應用程式完全控制在檢測到付款時發生的情況。
?> 此參數是可選用的。默認值為false。有效值為true或false。
例子:
disabled="true"disabled: truedisabled = true
參數'disable-enforce-focus'被傳遞給 Dialog material UI 組件。將其設定為 false 可以幫助提高如螢幕閱讀器等技術的可訪問性,但可能會在運行 Material UI 的網站上引發錯誤。
?> 此參數是可選用的。默認值為true。有效值為true或false。
例子:
disable-enforce-focus="false"disableEnforceFocus: falsedisableEnforceFocus = false
參數'disabled'指定是否鎖定按鈕/小工具以防止其被使用。
?> 此參數是可選用的。默認值為false。有效值為true或false。
例子:
disabled="true"disabled: truedisabled = true
參數‘disable-payment-id’用於移除支付生成的隨機ID,該ID用於防止當一個人和另一個人同時打開支付屏幕時觸發onSuccess回調。
?> 此參數是可選的。默認值為false。可能的值為true或false。
範例:
disable-payment-id="true"disablePaymentId: truedisablePaymentId = true
參數'wsBaseUrl'指定了用於 websocket 的 URL,新交易的資訊將從這裡獲取。
?> 該參數是可選的。預設值是‘https://socket.paybutton.org’。可能的值是任何有效的 URL。
Example:
ws-base-url="https://socket.paybutton.org"wsBaseUrl: 'https://socket.paybutton.org'wsBaseUrl = "https://socket.paybutton.org"
參數'apiBaseUrl'指定了 API 的 URL,新交易、價格和地址的資訊將從這裡獲取。
?> 該參數是可選的。預設值是‘https://paybutton.org’。可能的值是任何有效的 URL。
Example:
api-base-url="https://paybutton.org"apiBaseUrl: 'https://paybutton.org'apiBaseUrl = "https://paybutton.org"
“disableAltpayment” 參數用於禁用備用支付邏輯。
?> 該參數為可選項,預設值為 false。可選值為 true 或 false。
Example:
disable-altpayment="true"disableAltpayment: 'true'disableAltpayment = "true"
"contributionOffset" 參數用於調整顯示的總貢獻額,可用於模擬先前的貢獻或減少總額。
?> 此參數為可選(預設值:0)。接受正數或負數整數,且總貢獻額上限為 goalAmount。
Example:
contribution-offset="10"contribution-offset: 10contributionOffset = 10
‘autoClose’ 收到付款後,參數會自動關閉付款對話框.
?> 此參數是可選的。預設為 true(2 秒)。可接受 true、false,或數字(單位:秒)以自訂延遲。 Example:
auto-close="1"autoClose: 1autoClose = 1
「size」參數用於調整按鈕的大小。
?> size 參數為選填,支援以下預設的字串值:'xs'(特小)、'sm'(小)、'md'(中)、'lg'(大)以及 'xl'(特大)。若未指定,預設值為 'md'。你也可以使用別名 'extrasmall'、'small'、'medium'、'large' 和 'extralarge',這些別名會分別對應到 'xs'、'sm'、'md'、'lg' 和 'xl'。
Example:
size="sm"size: "sm"size = "sm"
「disableSound」參數會在交易成功時靜音原本播放的聲音。
?>此參數為選填。預設值為 false。可接受的值為 true 或 false。
Example:
disable-sound="false"disableSound: falsedisableSound = false
「donationRate」參數用於設定將捐贈到捐贈地址的金額。
?> donationRate 參數是可選的,接受的值為 0 到 100 之間的整數。預設值為 2。
Example:
donation-rate="10"donationRate: 10donationRate = 10
「fields」參數用於指定自訂輸入欄位,以便在付款前收集用戶的額外資訊。
?> 此參數是可選的。預設值為空。可接受的值是欄位物件陣列或 JSON 字串。每個欄位物件可以包含以下屬性:name(必填,唯一識別碼)、text(必填,顯示給用戶的標籤)、type(輸入類型,如 'text'、'email'、'number')、value(預設值)和 required(布林值)。
Example:
fields='[{"name": "email", "text": "電子郵件地址", "type": "email", "required": true}, {"name": "note", "text": "備註", "type": "text"}]'fields: [
{ name: 'email', text: '電子郵件地址', type: 'email', required: true },
{ name: 'note', text: '備註', type: 'text' }
]fields = {[
{ name: 'email', text: '電子郵件地址', type: 'email', required: true },
{ name: 'note', text: '備註', type: 'text' }
]}
「on-fields-submit」參數用於指定當用戶提交自訂欄位時執行的回呼函數。
?> 此參數是可選的。預設值為空。可接受的值是任何已定義的函數。
- fieldValues (
object): 包含以欄位名稱為鍵的欄位值物件
Example:
on-fields-submit="fieldsSubmitCallback"onFieldsSubmit: (fieldValues) => {
console.log('Fields submitted:', fieldValues);
// fieldValues 示例: { email: 'user@example.com', note: '我的付款備註' }
}onFieldsSubmit = {(fieldValues) => {
console.log('Fields submitted:', fieldValues);
}}
PayButton是一個社區主導的開放源代碼促進會。此項目的成功關鍵在於對社區的貢獻。
1.克隆倉庫
git clone https://github.com/PayButton/paybutton.git
- 導航至項目文件夾並構建項目
yarn build
- 你現在可以將在
paybutton/dist/paybutton.js找到的 bundle 集成到你的本地網站中。
- 啟動開發服務器
yarn dev
-
在此查看網站
localhost:10001 -
你可以在
paybutton/dev/demo/index.html中修改示範頁面 -
示範頁面的更改應該會自動反映在服務器上
- 運行 docker 容器以啟動 storybook
docker-compose up
- 等待
storybook初始化 - 打開
http://localhost:6006你應該能夠在 storybook 中測試組件
- 啟動文檔網站本地伺服器
yarn start:docs
- 網站將在
localhost:3001上可用 - 你可以通過修改文件
docs/README.md來更新文檔
op-return 屬性用於以結構化字串的形式傳遞附加的元資料。這個內容可以在回呼函式(onSuccess 和 onTransaction)返回的訊息中作為參數看到。此字串可以是:
- 一般字串,例如簡單的訊息或片語。
- 字串化的 JSON。
- 使用
|分隔的值陣列 - 鍵值格式的字串,鍵與值之間用 = 分隔,同一鍵的多個值用
|分隔。
op-return="hello world"- 一個普通字串,沒有解析行為。
op-return="classOf=2013 bullYears=2013|2017|2021"- 此格式會被解析成一個物件:
{
"classOf": 2013,
"bullYears": [2013, 2017, 2021]
}op-return="{'foo': 'bar'}"- 此格式會被解析成一個物件:
{
"foo": "bar"
}op-return="item1|item2|item3"- 此格式會被解析成一個陣列:
["item1", "item2", "item3"]所有收到的PayButton捐款都直接用於資助PayButton的開發。