bootpay / server-php
bootpay v2 API 的 PHP 服务器端插件
Requires
- php: >= 5.3.0
- ext-json: *
README
bootpay 官方 PHP 库(服务器端使用)
可用于使用 PHP 编写的应用程序、框架等。
- PG 支付窗口的集成由客户端库执行。 (JavaScript, Android, iOS, React Native, Flutter 等)
- 支付验证及取消、账单生成、实名认证等操作在服务器端进行。 (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET 等)
功能
-
(用于 bootpay 通信的) 令牌发行
-
支付单条查询
-
支付取消(全额取消/部分取消)
-
信用卡自动还款(账单支付)
4-1. 账单生成
4-2. 使用生成的账单进行支付授权请求
4-3. 使用生成的账单进行支付预约请求
4-4. 使用生成的账单进行支付预约 - 取消请求
4-5. 删除账单
4-6. 账单查询
-
(生物认证、密码支付) 买家令牌发行
-
服务器授权请求
-
实名认证结果查询
-
(使用 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 函数的一般方法,但根据情况可能需要服务器授权方式。
需要的原因
- 为了确保 100% 稳定的支付后客户通知 - 由于客户端在 PG 支付完成后无法执行 onDone(互联网环境等),因此可能无法通知客户支付后信息。
- 需要单一交易的概念 - 在需要库存检查的电子商务运营中,可能需要交易概念,此时需要使用服务器授权。
$response = BootpayApi::confirmPayment('62b4200acf9f6d001ad212b1'); var_dump($response);
7. 实名认证结果查询
查询 다날 实名认证后的结果。다날 实名认证中,需要额外请求通信公司、外国人与否、电话号码这三种信息。
$response = BootpayApi::certificate('625783a6cf9f6d001d0aed19'); var_dump($response);
- (使用 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 网站首页右侧下方的聊天窗口进行技术咨询!