Quickstart
1
Set up the server
Installation
npm install @paypal/agent-toolkit @ai-sdk/openai aiConfiguration
PAYPAL_CLIENT_ID=your-paypal-client-id
PAYPAL_CLIENT_SECRET=your-paypal-client-secret
OPENAI_API_KEY=your-openai-api-keyInitialization
import { PayPalAgentToolkit } from '@paypal/agent-toolkit/ai-sdk';
const paypalToolkit = new PayPalAgentToolkit({
clientId: process.env.PAYPAL_CLIENT_ID,
clientSecret: process.env.PAYPAL_CLIENT_SECRET,
configuration: {
actions: {
invoices: { create: true, list: true },
orders: { create: true, get: true },
// Add other tools/modules you need
},
},
});2
Build the front end
Install Next.js
npx create-next-app@latest paypal-integration --typescript
cd paypal-integration
npm installCreate a chat interface
import React, { useState } from 'react';
const Home: React.FC = () => {
const [message, setMessage] = useState('');
const [chat, setChat] = useState<{ sender: 'user' | 'agent'; text: string }[]>([]);
const handleSendMessage = async () => {
setChat((prevChat) => [...prevChat, { sender: 'user', text: message }]);
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message }),
});
const data = await response.json();
setChat((prevChat) => [...prevChat, { sender: 'agent', text: data.response }]);
setMessage('');
};
return (
<div>
<h1>PayPal Chat Interface</h1>
<div>
{chat.map((c, index) => (
<div key={index} className={c.sender}>
{c.sender}: {c.text}
</div>
))}
</div>
<input
type="text"
value={message}
onChange={(e) => setMessage(e.target.value)}
/>
<button onClick={handleSendMessage}>Send</button>
</div>
);
};
export default Home;3
Test the integration
import { NextRequest, NextResponse } from 'next/server';
import { openai } from '@ai-sdk/openai';
import { generateText } from 'ai';
import { PayPalAgentToolkit } from '@paypal/agent-toolkit/ai-sdk';
const paypalToolkit = new PayPalAgentToolkit({
clientId: process.env.PAYPAL_CLIENT_ID,
clientSecret: process.env.PAYPAL_CLIENT_SECRET,
configuration: {
actions: {
orders: { create: true, get: true },
invoices: { create: true, list: true },
// Extend with other actions as needed
},
},
});
export async function POST(req: NextRequest) {
try {
const { message } = await req.json();
// Define System Prompt for controlling behavior
const systemPrompt = 'This is a PayPal agent. You are tasked with handling PayPal orders and providing relevant information.';
const { text: response } = await generateText({
model: openai('gpt-4o'),
tools: paypalToolkit.getTools(),
maxSteps: 10,
prompt: message,
system: systemPrompt,
});
return NextResponse.json({ response });
} catch (error) {
const errorMessage = error instanceof Error
? error.message
: 'An unknown error occurred';
return NextResponse.json(
{ error: errorMessage },
{ status: 500 }
);
}
}Best practices
Additional resources
Was this helpful?

