问题描述
我想将 flutterwave
集成到我的 react native
应用程序中。我下载了他们的名为 flutterwave-react-native
的 npm 包并遵循了他们的教程,但仍然无法做到。我在 Github 上使用他们的示例代码段,但收到一条错误消息:
this.usePaymentLink 不是函数
我到处搜索,但找不到定义 this.usePaymentLink
的位置。您可以查看我的片段并告诉我我错过了什么以及 this.usePaymentLink
的样子。
import React from 'react';
import {View,TouchableOpacity} from 'react-native';
import {flutterwaveInit} from 'flutterwave-react-native';
class MyCart extends React.Component {
abortController = null;
componentwillUnmout() {
if (this.abortController) {
this.abortController.abort();
}
}
handlePaymentinitialization = () => {
this.setState({
isPending: true,},() => {
// set abort controller
this.abortController = new AbortController;
try {
// initialize payment
const paymentLink = await flutterwaveInit(
{
tx_ref: generateTransactionRef(),authorization: '[merchant public key]',amount: 100,currency: 'USD',customer: {
email: 'customer-email@example.com',payment_options: 'card',this.abortController
);
// use payment link
return this.usePaymentLink(paymentLink);
} catch (error) {
// do nothing if our payment initialization was aborted
if (error.code === 'ABORTERROR') {
return;
}
// handle other errors
this.displayErrorMessage(error.message);
}
});
}
render() {
const {isPending} = this.state;
return (
<View>
...
<TouchableOpacity
style={[
styles.paymentbutton,isPending ? styles.paymentButtonBusy : {}
]}
disabled={isPending}
onPress={this.handlePaymentinitialization}
>
Pay $100
</TouchableOpacity>
</View>
)
}
}
解决方法
所以我一直在尝试将其应用在世博会上,但最终取得了突破。
// 所以我在让它运行之前做了一些小修正
// 这是直接来自他们的 npm 或 github 的代码
import {PayWithFlutterwave} from 'flutterwave-react-native';
<PayWithFlutterwave
...
onRedirect={handleOnRedirect}
options={{
tx_ref: transactionReference,authorization: '[merchant public key]',customer: {
email: 'customer-email@example.com'
},amount: 2000,currency: 'NGN',payment_options: 'card'
}}
/>
//我的更正
-
首先 handleOnRedirect 必须是一个定义好的函数
-
其次我删除了 handleOnRedirect 函数之前的三个点 (...)
-
然后创建了一个函数来生成一个随机引用的 no
-
然后我粘贴了我的公共 flutterwave 帐户密钥 “商家公钥”
-
我还粘贴了我的 flutterwave 帐户电子邮件来代替这个'customer-email@example.com'
import {PayWithFlutterwave} from 'flutterwave-react-native';
const handleOnRedirect = () => {
console.log('sadi')
}
const generateRef = (length) => {
var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split("");
var b = [];
for (var i=0; i<length; i++) {
var j = (Math.random() * (a.length-1)).toFixed(0);
b[i] = a[j];
}
return b.join("");
}
<PayWithFlutterwave
onRedirect={handleOnRedirect}
options={{
tx_ref: generateRef(11),authorization: 'FLWPUBK-43019239kj8739hj945a36ab52375479-X',customer: {
email: 'user@gmail.com'
},payment_options: 'card'
}}
/>
``