wepay/php-sdk

PHP的WePay APIv2 SDK

0.3.1 2017-01-21 07:03 UTC

This package is not auto-updated.

Last update: 2024-09-21 08:09:20 UTC


README

WePay的API允许您轻松地将支付功能集成到您的应用程序中。

有关完整文档,请参阅WePay开发者文档

安装

使用Composer

composer require wepay/php-sdk=^0.3

并将其包含在您的脚本中

require_once 'vendor/autoload.php';

用法

除了下面的示例外,我们还包含了一个非常基本的示例应用程序在demoapp目录中。请参阅其README文件以获取更多信息。

配置

对于所有请求,您必须使用您的客户端ID和客户端密钥初始化SDK,进入测试或生产模式。对WePay测试环境的所有API调用在功能上与生产环境镜像,但不会实际移动资金。这允许您从用户的视角开发和测试应用程序的结账体验,而无需在支付上花费任何资金。我们的完整文档包含了您可以使用“魔法”金额(用于触发支付失败和撤销,有助于测试IPN)以及测试账户号码的附加信息。

注意:测试和生产是两个完全独立的 环境,它们之间不共享任何数据。这意味着要使用测试环境,您必须在stage.wepay.com上注册并获取您的测试应用程序的API密钥,当您准备上线时,您必须在生产环境中做同样的事情。测试环境授予的API密钥和访问令牌不能在生产环境中使用,反之亦然。

<?php
require_once 'vendor/autoload.php';

// To initialize staging, use WePay::useStaging('ID','SECRET'); instead.
WePay::useProduction('YOUR CLIENT ID', 'YOUR CLIENT SECRET'); 

要在调用请求的头部设置API版本,请使用

<?php
require_once 'vendor/autoload.php';

// To initialize staging, use WePay::useStaging('ID','SECRET', 'YOUR API VERSION'); instead.
WePay::useProduction('YOUR CLIENT ID', 'YOUR CLIENT SECRET', 'YOUR API VERSION');

认证

为了为您的用户获取访问令牌,您必须将用户重定向到WePay进行认证。WePay使用OAuth2进行授权,这在我们文档中详细说明。要生成您必须将用户重定向到的URI,SDK包含WePay::getAuthorizationUri($scope, $redirect_uri)$scope应该是一个包含文档中详细说明的范围字符串数组。为了请求完全访问权限(对于测试最有用,因为如果您的应用程序想要做太多,用户可能不愿意授予权限),请传递WePay::getAllScopes()$redirect_uri必须是我们将用户在权限授予(或未授予)后发送的完全合格URI,并且域名必须与您的应用程序设置匹配。

如果用户授予权限,他们将被重定向到您的$redirect_uri,查询字符串中附加了code=XXXX。如果没有授予权限,我们将相反在查询字符串中放置error=XXXX。如果存在code,以下代码将用访问令牌替换它。请注意,代码仅有效几分钟,因此您应该在用户被重定向回您的网站或应用程序后立即执行此操作。

if (!empty($_GET['error'])) {
    // User did not grant permissions
} elseif (empty($_GET['code'])) {
    // Set $scope and $redirect_uri before doing this.
    // This will send the user to WePay to authenticate.
    $uri = WePay::getAuthorizationUri($scope, $redirect_uri);
    header("Location: $uri");
    exit;
} else {
    $info = WePay::getToken($_GET['code'], $redirect_uri);
    if ($info) {
        // YOUR ACCESS TOKEN IS HERE
        $access_token = $info->access_token;
    } else {
        // Unable to obtain access token
    }
}

有关访问令牌响应的完整信息在这里

注意:如果您只需要自己访问(例如,用于个人店面),应用程序设置页面会自动为您创建访问令牌。只需将其复制并粘贴到您的代码中,而不是手动进行认证流程。

执行API调用

使用上方的 $access_token,获取一个新的 SDK 对象

$wepay = new WePay($access_token);

然后您可以进行简单的 API 调用。这将列出您应用程序可用的用户账户

// (continued from above)
try {
    $accounts = $wepay->request('account/find');

    foreach ($accounts as $account) {
        // Please never blend your views with your business logic like this!
        echo "<a href=\"$account->account_uri\">$account->name</a>: $account->description <br />";
    }
} catch (WePayException $e) {
    // Something went wrong - normally you would log
    // this and give your user a more informative message
    echo $e->getMessage();
}

有关哪些 API 调用可用、它们的参数和响应以及它们需要的权限的更多详细信息,请参阅我们的文档。对于一些更详细的示例,请查看 demoapp 目录并检查 README。将整个目录放置在可访问的 Web 位置并添加您的 API 密钥,可以让您在几秒钟内启动并运行。

风险头

您可以通过将 WePay-Risk-Token 和 Client-IP 值传递给 request 函数,向 WePay 提供每个 API 调用的风险相关信息

$checkout = $wepay->request('checkout/create', array(
                'account_id' => 1723052,
                'amount' => 50,
                'currency': 'USD',
                'short_description': 'Selling 42 Pens',
                'type': 'goods'
            ), '123e4567-e89b-12d3-a456-426655440000', '100.166.99.123');

有关风险头的详细信息,请参阅WePay API 文档

安全

连接需要 TLS 1.2

根据更新的 PCI 要求,SSL(v2、v3)和早期 TLS(1.0、1.1)不再被认为是“强加密”,并且从 2016 年 6 月 30 日起不能用作安全控制。因此,WePay 将在接下来的几个月内更新其 API 端点,只允许 TLS 1.2 连接。

根据您的 PHP 栈是较新还是较旧,WePay SDK for PHP 版本 0.3.0 可能与旧版本不兼容,因此进行了语义版本的升级。

使用 PHP cURL 扩展,PHP 将通过系统的 cURL 安装发出出站请求。由于许可原因,PHP cURL 扩展使用 NSS 而不是 OpenSSL。

  • 需要 PHP (Zend 引擎) 5.5.19+ 或 5.6.3+.
  • PHP cURL 扩展需要在底层系统上使用 cURL 7.34.0(或更新版)。
  • PHP cURL 扩展必须使用 NSS 3.15.1(或更新版)编译。
  • HHVM 3.0(或更新版)和/或 Hacklang(任何版本)具有与 PHP 相同的 cURL 和 cURL 扩展要求

SSL 证书

如果 API 调用导致以下问题

未捕获的异常 'Exception',消息为 'cURL 在调用 WePay API 时出错:SSL 证书问题,验证 CA 证书是否正确。详细信息:错误:14090086:SSL 程序:SSL3_GET_SERVER_CERTIFICATE:证书验证失败'

您可以在这里找到解决方案:https://support.wepay.com/entries/21095813-problem-with-ssl-certificate-verification