@coinbase/ cbpay-js (英语)
Coinbase Onramp JS SDK 包含了帮助者的方法 来简化与我们的fiat onramp的融合. 钱包提供商和dapp可以利用Coinbase Onramp来杠杆,让用户将自控钱包顶上.
文档
见 Conbase Onramp 文档 说明如何登机前往Coinbase Onramp并开始.
安装
与 yarn数字 :
yarn add @coinbase/cbpay-js
与 npm数字 :
npm install @coinbase/cbpay-js
该软件包既作为无害环境管理模块分发,又作为通用JS分发。 要使用通用JS输出,请输入 regenerator-runtime 还需要安装软件包 :
与 yarn数字 :
yarn add regenerator-runtime
与 npm数字 :
npm install regenerator-runtime
基本实例
import { initOnRamp } from '@coinbase/cbpay-js';
const options = {
appId: '<Your Project ID obtained from Coinbase Developer Platform>',
widgetParameters: {
// Specify the addresses and which networks they support
addresses: { '0x0': ['ethereum','base'], 'bc1': ['bitcoin']},
// Filter the available assets on the above networks to just these ones
assets: ['ETH','USDC','BTC'],
},
onSuccess: () => {
console.log('success');
},
onExit: () => {
console.log('exit');
},
onEvent: (event) => {
console.log('event', event);
},
experienceLoggedIn: 'popup',
experienceLoggedOut: 'popup',
closeOnExit: true,
closeOnSuccess: true,
};
// Initialize the CB Pay instance
let onrampInstance;
initOnRamp(options, (error, instance) => {
onrampInstance = instance;
});
// Open the widget when the user clicks a button
onrampInstance.open();
反应示例
import { CBPayInstanceType, initOnRamp } from "@coinbase/cbpay-js";
import { useEffect, useState } from "react";
export const PayWithCoinbaseButton: React.FC = () => {
const [onrampInstance, setOnrampInstance] = useState<CBPayInstanceType | null>();
useEffect(() => {
initOnRamp({
appId: '<Your Project ID obtained from Coinbase Developer Platform>',
widgetParameters: {
// Specify the addresses and which networks they support
addresses: { '0x0': ['ethereum','base'], 'bc1': ['bitcoin']},
// Filter the available assets on the above networks to just these ones
assets: ['ETH','USDC','BTC'],
},
onSuccess: () => {
console.log('success');
},
onExit: () => {
console.log('exit');
},
onEvent: (event) => {
console.log('event', event);
},
experienceLoggedIn: 'popup',
experienceLoggedOut: 'popup',
closeOnExit: true,
closeOnSuccess: true,
}, (_, instance) => {
setOnrampInstance(instance);
});
// When button unmounts destroy the instance
return () => {
onrampInstance?.destroy();
};
}, []);
const handleClick = () => {
onrampInstance?.open();
};
return <button onClick={handleClick} disabled={!onrampInstance}>Buy with Coinbase</button>;
};
反应- Native 示例
先决条件
yarn add react-native-url-polyfill
import React, { useMemo } from 'react'
import { WebView } from 'react-native-webview'
import { generateOnRampURL } from '@coinbase/cbpay-js'
import 'react-native-url-polyfill/auto'
const CoinbaseWebView = ({ currentAmount }) => {
const coinbaseURL = useMemo(() => {
const options = {
appId: '<Your Project ID obtained from Coinbase Developer Platform>',
// Specify the addresses and which networks they support
addresses: { '0x0': ['ethereum','base'], 'bc1': ['bitcoin']},
// Filter the available assets on the above networks to just these ones
assets: ['ETH','USDC','BTC'],
handlingRequestedUrls: true,
presetCryptoAmount: currentAmount,
}
return generateOnRampURL(options)
}, [currentAmount, destinationAddress])
const onMessage = useCallback((event) => {
// Check for Success and Error Messages here
console.log('onMessage', event.nativeEvent.data)
try {
const { data } = JSON.parse(event.nativeEvent.data);
if (data.eventName === 'request_open_url') {
viewUrlInSecondWebview(data.url);
}
} catch (error) {
console.error(error);
}
}, [])
return (
<WebView source={{ uri: coinbaseURL }} onMessage={onMessage} />
)
}
export default CoinbaseWebView
聚合实例
评议 Coinbase 开发者文件 如何在坡道聚合器内生成使用参数.
import { CBPayInstanceType, initOnRamp } from "@coinbase/cbpay-js";
import { useEffect, useState } from "react";
export const PayWithCoinbaseButton: React.FC = () => {
const [onrampInstance, setOnrampInstance] = useState<CBPayInstanceType | null>();
useEffect(() => {
initOnRamp({
appId: '<Your Project ID obtained from Coinbase Developer Platform>',
widgetParameters: {
// Specify the addresses and which networks they support
addresses: { '0x0': ['ethereum','base'], 'bc1': ['bitcoin']},
// Filter the available assets on the above networks to just these ones
assets: ['ETH','USDC','BTC'],
// Aggregator params are ignored unless they are all provided.
// defaultNetwork is the exception - it's optional.
quoteId: '<quote_id from the Buy Quote API>',
defaultAsset: 'USDC',
defaultNetwork: 'base',
defaultPaymentMethod: 'CARD',
presetFiatAmount: 20,
fiatCurrency: 'USD',
},
onSuccess: () => {
console.log('success');
},
onExit: () => {
console.log('exit');
},
onEvent: (event) => {
console.log('event', event);
},
experienceLoggedIn: 'popup',
experienceLoggedOut: 'popup',
closeOnExit: true,
closeOnSuccess: true,
}, (_, instance) => {
setOnrampInstance(instance);
});
// When button unmounts destroy the instance
return () => {
onrampInstance?.destroy();
};
}, []);
const handleClick = () => {
onrampInstance?.open();
};
return <button onClick={handleClick} disabled={!onrampInstance}>Buy with Coinbase</button>;
};