PayPal
PayPal 提供商的设置和使用。
获取你的 PayPal 凭证
要与 PayPal 集成,你需要通过在 PayPal 开发者门户 创建应用程序来获取 API 凭证。
按以下步骤操作:
- 在 PayPal 开发者门户创建账户
- 创建一个新的应用程序,官方文档
- 在“其他功能”下配置“使用 PayPal 登录”
- 设置你的返回 URL(重定向 URL)
- 配置用户信息权限
- 记录你的客户端 ID 和客户端密钥
- PayPal 有两个环境:沙盒(用于测试)和正式(用于生产)
- 用于测试时,请在“沙盒” → “账户”下创建沙盒测试账户
- 你不能使用真实的 PayPal 账户在沙盒模式下测试——必须使用生成的测试账户
- 你的 PayPal 应用程序设置中的返回 URL 必须与重定向 URI 完全匹配
- PayPal API 不支持 localhost。你需要对重定向 URL 使用公共域名,对本地测试使用 HTTPS。可以使用 NGROK 或其他类似工具实现。
确保在应用程序设置中配置“使用 PayPal 登录”:
- 转到开发者门户中的应用程序
- 在“其他功能”下勾选“使用 PayPal 登录”
- 点击“高级设置”
- 输入你的返回 URL
- 选择你想要访问的用户信息(电子邮件、姓名等)
- 输入隐私政策和使用协议 URL
- PayPal 在授权 URL 中不使用传统的 OAuth2 范围。相反,你可以在开发者仪表板中直接配置权限
- 对于正式应用,PayPal 必须审核并批准你的应用,才能上线,这通常需要几周时间
配置提供商
要配置提供商,你需要导入提供商并将其传递给 socialProviders 选项。
import { betterAuth } from "better-auth"
export const auth = betterAuth({
socialProviders: {
paypal: {
clientId: process.env.PAYPAL_CLIENT_ID as string,
clientSecret: process.env.PAYPAL_CLIENT_SECRET as string,
environment: "sandbox", // or "live" for production //,
},
},
})选项
PayPal 提供商接受以下选项:
environment:'sandbox' | 'live'- 要使用的 PayPal 环境(默认:'sandbox')requestShippingAddress:boolean- 是否请求收货地址信息(默认:false)
export const auth = betterAuth({
socialProviders: {
paypal: {
clientId: process.env.PAYPAL_CLIENT_ID as string,
clientSecret: process.env.PAYPAL_CLIENT_SECRET as string,
environment: "live", // 用于生产环境
requestShippingAddress: true, // 请求地址信息
},
},
})使用 PayPal 登录
要使用 PayPal 登录,你可以使用客户端提供的 signIn.social 函数。signIn 函数接受一个包含以下属性的对象:
provider:要使用的提供商。应设置为paypal。
import { createAuthClient } from "better-auth/client"
const authClient = createAuthClient()
const signIn = async () => {
const data = await authClient.signIn.social({
provider: "paypal"
})
}附加选项:
environment:要请求的 PayPal 环境。- 默认值:
"sandbox" - 选项:
"sandbox"|"live"
- 默认值:
requestShippingAddress:是否请求收货地址信息。- 默认值:
false
- 默认值:
scope:要请求的额外权限(与默认权限合并)。- 默认值:在 PayPal 开发者仪表板中配置
- 注意:PayPal 不使用传统的 OAuth2 范围——权限在仪表板中设置
- 有关更多详细信息,请参阅 范围参考
mapProfileToUser:自定义函数,用于将 PayPal 配置文件数据映射到用户对象。getUserInfo:自定义函数,用于获取用户信息。 有关更多详细信息,请参阅 用户参考verifyIdToken:自定义 ID 令牌验证函数。