📜  paypal sdk 脚本 (1)

📅  最后修改于: 2023-12-03 14:45:05.873000             🧑  作者: Mango

PayPal SDK 脚本介绍

PayPal SDK (Software Development Kit)是一个软件开发工具包,为开发人员提供了使用 PayPal 进行支付和管理商户账户的功能。

支持的编程语言

PayPal SDK 支持多个编程语言,包括:

  • PHP
  • Python
  • Java
  • Node.js
  • Ruby
功能

PayPal SDK 提供的功能包括:

  • 处理支付(包括信用卡、PayPal 帐户)
  • 授权,捕获和退款
  • 账单和付款
  • 发票和退款
  • 移动支付
  • 赞助
  • Sales Tax
安装

使用 PayPal SDK,你需要在你的项目中安装它的库。以下是针对每个支持的编程语言的说明:

PHP

使用 Composer,执行以下命令以安装 PayPal 的 PHP SDK:

composer require paypal/rest-api-sdk-php
Python

在命令行终端(控制台)中运行以下命令以安装 PayPal 的 Python SDK:

pip install paypalrestsdk
Java

将以下依赖项添加到 pom.xml 文件中:

<dependency>
  <groupId>com.paypal.sdk</groupId>
  <artifactId>rest-api-sdk</artifactId>
  <version>LATEST</version>
</dependency>
Node.js

在命令行终端中运行以下命令以安装 PayPal 的 Node.js SDK:

npm install paypal-rest-sdk --save
Ruby

添加以下 gem 到你的 Gemfile:

gem 'paypal-sdk-rest'
示例

以下是使用 PayPal SDK 进行支付的示例:

PHP
require __DIR__ . '/vendor/autoload.php';

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
        'CLIENT_ID', // PayPal分配的客户端ID
        'CLIENT_SECRET' // PayPal分配的客户端秘钥
    )
);

$payment = new \PayPal\Api\Payment();
$payment->setIntent('sale')
    ->setPayer(
        new \PayPal\Api\Payer(
            array(
                'payment_method' => 'paypal'
            )
        )
    )
    ->setRedirectUrls(
        new \PayPal\Api\RedirectUrls(
            array(
                'return_url' => 'http://example.com/success',
                'cancel_url' => 'http://example.com/cancel'
            )
        )
    )
    ->setTransactions(
        array(
            new \PayPal\Api\Transaction(
                array(
                    'amount' => array(
                        'total' => '7.47',
                        'currency' => 'USD'
                    )
                )
            )
        )
    );

try {
    $payment->create($apiContext);
    header('Location: ' . $payment->getApprovalLink());
} catch (Exception $ex) {
    // 处理异常
}
Python
import paypalrestsdk

paypalrestsdk.configure({
    'mode': 'sandbox', # sandbox 或 live
    'client_id': 'CLIENT_ID',
    'client_secret': 'CLIENT_SECRET'
})

payment = paypalrestsdk.Payment({
    'intent': 'sale',
    'payer': {
        'payment_method': 'paypal'
    },
    'redirect_urls': {
        'return_url': 'http://example.com/success',
        'cancel_url': 'http://example.com/cancel'
    },
    'transactions': [{
        'amount': {
            'total': '7.47',
            'currency': 'USD'
        }
    }]
})

if payment.create():
    for link in payment.links:
        if link.method == 'REDIRECT':
            redirect_url = str(link.href)
            # 使用 redirect_url 来重定向到 PayPal 登录页
else:
    # 记录错误日志
Java
import com.paypal.api.payments.*;
import com.paypal.base.rest.*;

APIContext apiContext = new APIContext(
    new OAuthTokenCredential(
        "CLIENT_ID", // PayPal分配的客户端ID
        "CLIENT_SECRET" // PayPal分配的客户端秘钥
    ).getAccessToken()
);

Payment payment = new Payment();
payment.setIntent("sale")
    .setPayer(new Payer().setPaymentMethod("paypal"))
    .setRedirectUrls(new RedirectUrls()
        .setReturnUrl("http://example.com/success")
        .setCancelUrl("http://example.com/cancel"))
    .setTransactions(Arrays.asList(
        new Transaction().setAmount(
            new Amount().setTotal("7.47").setCurrency("USD")
        )
    ));

try {
    payment.create(apiContext);
    for (Links link : payment.getLinks()) {
        if (link.getRel().equals("approval_url")) {
            String redirectUrl = link.getHref();
            // 使用 redirectUrl 来重定向到 PayPal 登录页
        }
    }
} catch (PayPalRESTException e) {
    // 记录错误日志
}
Node.js
const paypal = require('paypal-rest-sdk');

paypal.configure({
    mode: 'sandbox', // sandbox 或 live
    client_id: 'CLIENT_ID',
    client_secret: 'CLIENT_SECRET'
});

paypal.payment.create({
    intent: 'sale',
    payer: {
        payment_method: 'paypal'
    },
    redirect_urls: {
        return_url: 'http://example.com/success',
        cancel_url: 'http://example.com/cancel'
    },
    transactions: [
        {
            amount: {
                total: '7.47',
                currency: 'USD'
            }
        }
    ]
}, (error, payment) => {
    if (error) {
        // 记录错误日志
    } else {
        for (let link of payment.links) {
            if (link.method === 'REDIRECT') {
                const redirectUrl = link.href;
                // 使用 redirectUrl 来重定向到 PayPal 登录页
            }
        }
    }
});
Ruby
require 'paypal-sdk-rest'

PayPal::SDK.configure(
    mode: 'sandbox', # sandbox 或 live
    client_id: 'CLIENT_ID',
    client_secret: 'CLIENT_SECRET'
)

payment = PayPal::SDK::REST::DataTypes::Payment.new({
    intent: 'sale',
    payer: { payment_method: 'paypal' },
    redirect_urls: {
        return_url: 'http://example.com/success',
        cancel_url: 'http://example.com/cancel'
    },
    transactions: [
        {
            amount: { total: '7.47', currency: 'USD' }
        }
    ]
})

if payment.create
    payment.links.each do |link|
        if link.rel == 'approval_url'
            redirect_url = link.href
            # 使用 redirect_url 来重定向到 PayPal 登录页
        end
    end
else
    # 记录错误日志
end
结语

使用 PayPal SDK,你可以轻松地实现 PayPal 支付和管理商户账户的功能。这个工具包对于在 Web 应用程序和其他应用程序中集成 PayPal(或 PayPal 混合付款)的开发人员来说是非常有用的。