贝宝

获取你的 PayPal 凭证

要与 PayPal 集成,你需要通过在 PayPal 开发者门户 创建应用来获取 API 凭证。

按以下步骤操作:

  1. 在 PayPal 开发者门户创建一个账户
  2. 创建一个新应用,官方文档
  3. 在“其他功能”下配置使用 PayPal 登录
  4. 设置你的返回网址(重定向网址)
  5. 配置用户信息权限
  6. 请记下你的客户端 ID 和客户端密钥
  • PayPal 有两个环境:沙箱(用于测试)和正式(用于生产)
  • 用于测试,请在开发者控制台的“沙箱” → “账户”下创建沙箱测试账户
  • 你不能使用真实的 PayPal 账户在沙箱模式下进行测试——你必须使用生成的测试账户
  • 你PayPal应用设置中的返回URL必须完全匹配你的重定向URI
  • PayPal API 无法在本地主机上使用。你需要为重定向 URL 使用公共域名,并在本地测试时使用 HTTPS。你可以使用 NGROK 或其他类似工具来实现此功能。

确保在你的应用设置中配置“使用 PayPal 登录”:

  1. 前往开发者控制台中的应用
  2. 在“其他功能”下,勾选“使用 PayPal 登录”
  3. 点击“高级设置”
  4. 输入你的返回网址
  5. 选择你想要访问的用户信息(电子邮件、名称等)
  6. 请输入隐私政策和用户协议的链接
  • PayPal 在授权 URL 中不使用传统的 OAuth2 范围。相反,你可以直接在开发者控制台中配置权限
  • 对于实时应用,PayPal 必须在应用上线前进行审核和批准,这通常需要几周时间

配置提供程序

要配置提供程序,你需要导入该提供程序并将其传递给身份验证实例的 socialProviders 选项。

auth.ts
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 //,
        }, 
    },
})

Options

The PayPal provider accepts the following options:

  • environment'sandbox' | 'live' - 要使用的 PayPal 环境(默认:'sandbox'
  • requestShippingAddressboolean - 是否请求送货地址信息(默认值:false
auth.ts
export const auth = betterAuth({
    socialProviders: {
        paypal: {
            clientId: process.env.PAYPAL_CLIENT_ID as string,
            clientSecret: process.env.PAYPAL_CLIENT_SECRET as string,
            environment: "live", // Use "live" for production
            requestShippingAddress: true, // Request address info
        },
    },
})

Sign In with PayPal

To sign in with PayPal, you can use the signIn.social function provided by the client. The signIn function takes an object with the following properties:

  • provider:要使用的提供者。应设置为 paypal
auth-client.ts
import { createAuthClient } from "better-auth/client"
const authClient =  createAuthClient()

const signIn = async () => {
    const data = await authClient.signIn.social({
        provider: "paypal"
    })
}

Additional Options:

  • environment:要使用的 PayPal 环境。
    • 默认:"sandbox"
    • 选项:"sandbox" | "live"
  • requestShippingAddress:是否需要请求收货地址信息。
    • 默认:false
  • scope:请求的附加权限范围(与默认权限组合使用)。
    • 默认:在 PayPal 开发者控制台中配置
    • 注意:PayPal 不使用传统的 OAuth2 范围——权限是在仪表板中设置的。如需更多详情,请参阅 范围参考
  • mapProfileToUser:将 PayPal 配置文件数据映射到用户对象的自定义函数。
  • getUserInfo:用于获取用户信息的自定义函数。更多详情请参阅 用户参考
  • verifyIdToken:自定义 ID 令牌验证函数。

On this page