se468 / kakaopay-php
PHP 对 Kakaopay REST API 的封装
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ^6.3
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- mockery/mockery: ~0.9.2|~1.0.0
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-09-26 06:57:47 UTC
README
Kakaopay REST API 封装器。Kakaopay 提供了一种方便的韩国网络交易方式,因为它不需要单独的支付网关(PG)。交易仅通过用户的 Kakaotalk 账户完成。
官方 Kakaopay REST API 文档:[此处](https://developers.kakao.com/docs/restapi/kakaopay-api)。
示例实现:[此处](https://github.com/se468/kakaopay-laravel-example)。
演示:[此处](http://package-demos.seyongcho.com/kakaopay)。
安装
通过 Composer
composer require se468/kakaopay-php
使用方法
单次支付流程
支付准备
用于请求用户进行交易。用户将收到确认交易的短信。
API 端点
POST /v1/payment/ready HTTP/1.1
使用示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->ready([ 'cid' => 'TC0ONETIME', 'partner_order_id' => 'partner_order_id', 'partner_user_id' => 'partner_user_id', 'item_name' => '초코파이', 'quantity' => '1', 'total_amount' => '2200', 'vat_amount' => '200', 'tax_free_amount' => '0', 'approval_url' => 'http://package-development.valet/kakaopay/success', 'cancel_url' => 'http://package-development.valet/kakaopay/fail', 'fail_url' => 'http://package-development.valet/kakaopay/cancel' ]);
以下是过程的说明
-
来自
payment/ready的结果将包含交易 ID,或tid($result->tid),您可以安全地将其存储在会话中。 -
将
tid存储在会话中,并重定向到$result->next_redirect_pc_url。客户将被提示输入他们的 Kakaopay 手机号码和密码。 -
客户填写表格后,他们将在 Kakaotalk 中收到确认交易的短信。屏幕将重定向到您提供的
approval_url。 -
然后,您可以使用会话中存储的
tid调用payment/approve并处理支付。
支付批准
使用来自支付准备的给定 tid 批准交易以完成。
POST /v1/payment/approve HTTP/1.1
示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->approve([ 'cid' => 'TC0ONETIME', 'tid' => 'T1234567890123456789', //tid received from result from 'ready' 'partner_order_id' => 'partner_order_id', 'partner_user_id' => 'partner_user_id', 'pg_token' => $input['pg_token'] ]);
- 您可以在获得此处的结果后删除
tid,并将包含交易信息的$result存储在您的数据库中,并将其显示给客户。
订阅过程
支付准备
示例支付准备用于订阅
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->ready([ 'cid' => 'TCSUBSCRIP', 'partner_order_id' => 'partner_order_id', 'partner_user_id' => 'partner_user_id', 'item_name' => '음악정기결제', 'quantity' => '1', 'total_amount' => '9900', 'vat_amount' => '900', 'tax_free_amount' => '0', 'approval_url' => 'http://package-development.valet/kakaopay/subscription/success', 'cancel_url' => 'http://package-development.valet/kakaopay/subscription/fail', 'fail_url' => 'http://package-development.valet/kakaopay/subscription/cancel' ]);
注意,这里与单次支付不同的只有
cid参数。
支付批准
请参阅单次支付的文档。过程完全相同。
从第二次支付开始的订阅
可以进行中的订阅费用调用如下
POST /v1/payment/subscription HTTP/1.1
示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->subscription([ 'cid' => 'TCSUBSCRIP', // cid for testing 'sid' => 'S1234567890987654321', 'partner_order_id' => 'subscription_order_id_1', 'partner_user_id' => 'subscription_user_id_1', 'item_name' => '음악정기결제', 'quantity' => '1', 'total_amount' => '9900', 'vat_amount' => '900', 'tax_free_amount' => '0', ]);
取消支付
POST /v1/payment/cancel HTTP/1.1
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->cancel([ 'cid' => 'TC0ONETIME', // cid for testing 'tid' => 'T1234567890123456789', 'cancel_amount' => '2200', 'cancel_tax_free_amount' => '0', 'cancel_vat_amount' => '200', 'cancel_available_amount' => '4000', ]);
订单检查
GET/POST /v1/payment/order HTTP/1.1
示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->order([ 'cid' => 'TC0ONETIME', // cid for testing 'tid' => 'T1234567890123456789', ]);
检查订阅信息
POST /v1/payment/manage/subscription/status HTTP/1.1
示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->order([ 'cid' => 'TCSUBSCRIP', // cid for testing 'tid' => 'S1234567890987654321', ]);
停用订阅
POST /v1/payment/manage/subscription/inactive HTTP/1.1
示例
$payment = new \se468\Kakaopay\Payment(); \se468\Kakaopay\Kakaopay::setAdminKey(env('KAKAOPAY_ADMIN_KEY')); $result = $payment->inactive([ 'cid' => 'TCSUBSCRIP', // cid for testing 'sid' => 'S1234567890987654321', ]);