bootpay/server-php

bootpay v2 API 的 PHP 服务器端插件

2.0.4 2022-09-14 02:43 UTC

This package is auto-updated.

Last update: 2024-09-14 06:52:23 UTC


README

bootpay 官方 PHP 库(服务器端使用)

可用于使用 PHP 编写的应用程序、框架等。

  • PG 支付窗口的集成由客户端库执行。 (JavaScript, Android, iOS, React Native, Flutter 等)
  • 支付验证及取消、账单生成、实名认证等操作在服务器端进行。 (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET 等)

功能

  1. (用于 bootpay 通信的) 令牌发行

  2. 支付单条查询

  3. 支付取消(全额取消/部分取消)

  4. 信用卡自动还款(账单支付)

    4-1. 账单生成

    4-2. 使用生成的账单进行支付授权请求

    4-3. 使用生成的账单进行支付预约请求

    4-4. 使用生成的账单进行支付预约 - 取消请求

    4-5. 删除账单

    4-6. 账单查询

  5. (生物认证、密码支付) 买家令牌发行

  6. 服务器授权请求

  7. 实名认证结果查询

  8. (使用 Escrow 时) 向 PG 发送配送信息

使用 composer 进行安装

composer require bootpay/server-php

使用方法

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

use Bootpay\ServerPhp\BootpayApi;

BootpayApi::setConfiguration(
    '59b731f084382614ebf72215',
    'WwDv0UjfwFa04wYG0LJZZv1xwraQnlhnHE375n52X0U='
);

$response = BootpayApi::getAccessToken();
if (!isset($token->error_code)) { 
    //토큰 발급 성공
    var_dump($response);
}

函数级别的示例代码请参考这里

1. (用于 bootpay 通信的) 令牌发行

为了与 bootpay 服务器通信,需要从 bootpay 服务器获取令牌。
生成的令牌有效期为 30 分钟,首次生成后 30 分钟过期,此时需要重新调用令牌发行函数。

$token = BootpayApi::getAccessToken();
var_dump($response);

if (isset($token->error_code)) { 
    //토큰 발급 실패
    return;
}

2. 支付单条查询

对支付窗口和定期支付中批准/取消的支付项目,通过服务器间通信进行支付验证,以确定是否为正确的支付项目。

$response = BootpayApi::receiptPayment('61b009aaec81b4057e7f6ecd');
var_dump($response);

3. 支付取消(全额取消/部分取消)

如果不指定 price,则进行全额取消。

  • 对于手机支付,如果延期,则可能不会根据运营商的政策取消。
  • 如果取消金额大于应结算金额,则可能根据 PG 的政策无法取消。在这种情况下,建议您向 PG 咨询。
  • 对于虚拟账户,如果 CMS 协约中未规定,则不会取消。因此,建议在支付测试时不要使用虚拟账户。

部分取消仅适用于信用卡支付的款项,且仅部分 PG 支持。在请求时,请在 price 中指定金额。

  • (支持 PG:インニシス、kcp、ダナ、ペレター、ナイスペー、カカオペー、ペイコ)

有时由于开发人员的失误,会多次发送部分取消请求,导致多次取消。因此,bootpay 添加了 cancel_id 字段来防止部分取消重复请求。指定 cancel_id 可以防止重复请求。

$response = BootpayApi::cancelPayment(
    array(
        'receipt_id' => '62591cfcd01c7e001c19e259',
        'cancel_price' => 1000,
        'cancel_tax_free' => '0',
        'cancel_id' => null,
        'cancel_username' => 'test',
        'cancel_message' => '테스트 결제 취소',
        'refund' => array(
            'bank_account' => '',
            'bank_username' => '',
            'bank_code' => ''
        )
    )
);
var_dump($response);

4-1. 账单生成

通过将客户从客户端传递的卡信息通过 REST API 方式发送给 PG,可以获取生成的账单。存储生成的账单,然后在需要的时间,以所需的金额进行支付授权请求,以适应更自由的支付场景。

  • 仅支持支持非认证定期支付的 PG。
$response = BootpayApi::requestSubscribeBillingKey(array(
    'pg' => '나이스페이',
    'order_name' => '테스트결제', 
    'subscription_id' => time(),
    'card_no' => '5570********1074', //카드번호 
    'card_pw' => '**', //카드 비밀번호 2자리 
    'card_identity_no' => '******',  //카드 소유주 생년월일 6자리 
    'card_expire_year' => '**',  //카드 유효기간 년 2자리 
    'card_expire_month' => '**', //카드 유효기간 월 2자리 
    'user' => array(
        'phone' => '01000000000',
        'username' => '홍길동',
        'email' => 'test@bootpay.co.kr'
    ),
    'reserve_execute_at' => date("Y-m-d H:i:s \U\T\C", time() + 5)
));
var_dump($response);

4-2. 使用生成的账单进行支付授权请求

可以随时使用生成的账单以所需的金额进行支付授权请求。除非是余额不足或被盗卡等特殊情况,否则 PG 会立即批准支付。

$response = BootpayApi::requestSubscribeCardPayment(array(
    'billing_key' => '62b41f88cf9f6d001ad212ad',
    'order_name' => '테스트결제',
    'price' => 1000,
    'order_id' => time()
));
var_dump($response);

4-3. 使用生成的账单进行支付预约请求

可以在 4-1 中发送支付授权请求,也可以在账单生成后立即进行支付预约。 (每个账单最多 10 条)

$response = BootpayApi::subscribePaymentReserve(array(
    'billing_key' => '62b41f88cf9f6d001ad212ad',
    'order_name' => '테스트결제',
    'price' => 1000,
    'order_id' => time(),
    'user' => array(
        'phone' => '01000000000',
        'username' => '홍길동',
        'email' => 'test@bootpay.co.kr'
    ),
    'reserve_execute_at' => date("Y-m-d H:i:s \U\T\C", time() + 5)
));
var_dump($response); 

4-4. 使用生成的账单进行支付预约 - 取消请求

取消预约的支付项目。

$cancel = BootpayApi::cancelSubscribeReserve($response->reserve_id);
var_dump($cancel);

4-5. 删除账单

删除不再使用的账单。

$response = BootpayApi::destroyBillingKey('62b41f88cf9f6d001ad212ad');
var_dump($response); 

4-6. 账单查询

(仅限于返回 receipt_id 的账单) 查询是哪个账单。

$response = BootpayApi::lookupSubscribeBillingKey('62b41f68cf9f6d001ad212a5');
var_dump($response); 

5. 用户令牌发行

(bootpay 独立) 为了使用 bootpay 提供的便捷支付窗口、基于生物认证的支付,开发人员需要管理会员唯一编号,并为该会员生成用户令牌。使用此令牌值,客户端可以进行支付请求。

$response = BootpayApi::requestUserToken(array(
    'user_id' => 'gosomi1',
    'phone' => '01012345678'
));
var_dump($response);

6. 服务器授权请求

支付授权方式有客户端授权方式和服务器授权方式两种。

客户端授权方式是 JavaScript 或 native 等中进行 confirm 函数的一般方法,但根据情况可能需要服务器授权方式。

需要的原因

  1. 为了确保 100% 稳定的支付后客户通知 - 由于客户端在 PG 支付完成后无法执行 onDone(互联网环境等),因此可能无法通知客户支付后信息。
  2. 需要单一交易的概念 - 在需要库存检查的电子商务运营中,可能需要交易概念,此时需要使用服务器授权。
$response = BootpayApi::confirmPayment('62b4200acf9f6d001ad212b1');
var_dump($response);

7. 实名认证结果查询

查询 다날 实名认证后的结果。다날 实名认证中,需要额外请求通信公司、外国人与否、电话号码这三种信息。

$response = BootpayApi::certificate('625783a6cf9f6d001d0aed19');
var_dump($response);
  1. (使用 Escrow 时) 向 PG 发送配送信息 现金交易的保护方式,作为中介服务,使卖家和买家的在线电子商务能够顺利地进行。根据国内法,在线电子商务中必须适用。PG 也支持 Escrow 支付,如果需要使用 Escrow 支付,请在 PG 加盟时提前讨论 Escrow 支付,然后进行。

将配送信息发送给 PG 以更改 Escrow 状态的 API。

$response = BootpayApi::shippingStart(
    array(
        'receipt_id' => "62b4200acf9f6d001ad212b1",
        'tracking_number' => '3982983',
        'delivery_corp' => 'CJ대한통운',
        'user' => array(
            'username' => '테스트',
            'phone' => '01000000000',
            'zipcode' => '099382',
            'address' => '서울특별시 종로구'
        )
    )
);
var_dump($response);

Example 项目

请参考应用示例

文档

请参阅Bootpay 开发手册

技术咨询

请通过Bootpay 网站首页右侧下方的聊天窗口进行技术咨询!

许可证

MIT 许可证.