https://github.com/phwoolcon/payment
Payment module for Phwoolcon
https://github.com/phwoolcon/payment
Last synced: about 1 month ago
JSON representation
Payment module for Phwoolcon
- Host: GitHub
- URL: https://github.com/phwoolcon/payment
- Owner: phwoolcon
- License: apache-2.0
- Created: 2016-06-20T04:00:55.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-07-30T08:29:01.000Z (almost 9 years ago)
- Last Synced: 2025-01-11T13:50:56.603Z (over 1 year ago)
- Language: PHP
- Size: 60.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-zh.md
- License: LICENSE
Awesome Lists containing this project
README
# Phwoolcon Payment
[](https://travis-ci.org/phwoolcon/payment)
[](https://codecov.io/gh/phwoolcon/payment)
[](https://opensource.org/licenses/Apache-2.0)
Phwoolcon 支付模块
本模块已默认集成支付宝。
## 1. 安装
用 composer 把本模块加入到你的项目中:
```
composer require "phwoolcon/payment":"dev-master"
```
## 2. 配置
请创建文件 `app/config/production/payment.php` 来填写支付宝收款帐号:
```php
[
'alipay' => [
'partner' => 'YOUR_PARTNER_ID_APPLIED_FROM_ALIPAY',
'seller_id' => 'YOUR_SELLER_EMAIL_APPLIED_FROM_ALIPAY',
'private_key' => '-----BEGIN RSA PRIVATE KEY-----
YOUR_PRIVATE_KEY_PROVIDED_TO_ALIPAY
-----END RSA PRIVATE KEY-----',
'ali_public_key' => '-----BEGIN PUBLIC KEY-----
THE_PUBLIC_KEY_APPLIED_FROM_ALIPAY
-----END PUBLIC KEY-----',
],
],
];
```
## 3. 使用
Phwoolcon Payment 抽象了一个支付处理器,所有支付动作都将通过 `Processor::run()`
来调用。
### 3.1. 发送支付宝支付请求(手机 Web 支付)
```php
'alipay',
'method' => 'mobile_web',
'action' => 'payRequest',
'data' => [
'trade_id' => $tradeId,
'product_name' => 'Test product',
'client_id' => 'test_client',
'user_identifier' => 'Test User',
'amount' => 1,
],
]));
echo get_class($payload); // 输出 Phwoolcon\Payment\Process\Payload
$result = $payload->getResult();
echo get_class($result); // 输出 Phwoolcon\Payment\Process\Result
$order = $result->getOrder();
echo get_class($order); // 输出 Phwoolcon\Payment\Model\Order
echo $order->getStatus(); // 输出 pending
$redirectUrl = $order->getPaymentGatewayUrl();
echo $redirectUrl; // 输出类似这样的 url:
// https://mapi.alipay.com/gateway.do?service=alipay.wap.create.direct.pay.by.user&partner=...
// 你可以一个用 302 响应把用户浏览器重定向
// 到这个 url 以完成支付
$returnUrl = $order->getOrderData('alipay_request.return_url');
echo $returnUrl; // 输出类似这样的 url:
// http://yoursite.com/api/alipay/return
// 支付成功或失败后,支付宝会把用户跳转到
// 这个 url
$notifyUrl = $order->getOrderData('alipay_request.notify_url');
echo $notifyUrl; // 输出类似这样的 url:
// http://yoursite.com/api/alipay/callback
// 支付成功或失败后,支付宝服务器会对这个
// url 发起 post 回调
```
### 3.2. 处理支付宝回调
```php
'alipay',
'method' => 'mobile_web',
'action' => 'callback',
'data' => $_POST,
]));
$result = $payload->getResult();
echo $result->getResponse(); // 输出 success
```
## 4. 如何创建自定义支付方式
所有支付方式都是在配置文件 `payment.php` 里定义的,如果有需要,你可以添加
任何支付网关/支付方式。
### 4.1. 创建支付网关/支付方式配置结构
编辑 `app/config/payment.php`:
```php
[
.
.
.
'your_gateway' => [
'label' => '支付网关名称',
'order_prefix' => 'SOME_PREFIX',
'methods' => [
'payment_method_1' => [
'class' => 'Fully\Qualified\Class\Name',
'label' => '支付方式名称',
],
'payment_method_2' => [
'class' => 'Fully\Qualified\Class\Name',
'label' => '支付方式名称',
],
],
'required_callback_parameters' => [
'order_id',
'amount',
'status',
'sign',
],
'any_options' => 'value',
'another_option' => 'value',
],
],
];
```
### 4.2. 填写真实帐号资料
请**不要**在上面的配置文件里面填写真实帐号资料,假如你把这个文件添加到版本
控制系统(例如 git,svn),你的支付网关帐号可能会被泄露。
正确的做法是,把真实帐号填写到 `app/config/production/payment.php` 文件中,
并且在版本控制系统里面忽略这个文件。
### 4.3. 创建支付方式类
支付方式类**必须**实现接口 `Phwoolcon\Payment\MethodInterface`
`Phwoolcon\Payment\MethodTrait` 已经抽象了一些通用功能,你可以把它 use 进
你的支付方式类里面。
可以参考 `Phwoolcon\Payment\Tests\Helper\TestPaymentMethod`
每个支付方式至少**应该**实现两个动作:
`payRequest` 和 `callback`
你可以给你的支付方式添加任何动作,通过设置 `Processor::run()` Payload
里面的 `action` 参数来调用。
任何动作都**应该**返回一个 `Phwoolcon\Payment\Process\Result` 对象,该对象
要么包含一个订单 `Order`,要么包含一个错误信息。