simon80119 / laravel-spgateway
laravel 的 spgateway 库
Requires
- php: >=7.2.5
- guzzlehttp/guzzle: ^6.5.5|^7.0.1
- laravel/framework: ^7|^8|^9|^10
This package is auto-updated.
Last update: 2024-09-25 09:40:16 UTC
README
Laravel Spgateway 是一个开源的 智付通 非官方套件
目录
要求
- PHP >= 7.2.5
- Laravel >= 7
- Composer
安装
$ composer require leochien/laravel-spgateway
配置
Laravel 应用
- 在
config/app.php
注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)
'providers' => [ // ... LeoChien\Spgateway\SpgatewayServiceProvider::class, ], 'aliases' => [ // ... 'MPG' => LeoChien\Spgateway\Facades\MPG::class, 'Receipt' => LeoChien\Spgateway\Facades\Receipt::class, 'Refund' => LeoChien\Spgateway\Facades\Refund::class, 'Transfer' => LeoChien\Spgateway\Facades\Transfer::class, ],
- 创建配置文件:
php artisan vendor:publish --provider="LeoChien\Spgateway\SpgatewayServiceProvider"
-
修改
config/spgateway.php
中的对应参数。 -
在
.env
中添加以下设置
# 金流系統設定
SPGATEWAY_HASH_KEY=
SPGATEWAY_HASH_IV=
# 金流合作推廣商系統設定
SPGATEWAY_COMPANY_KEY=
SPGATEWAY_COMPANY_IV=
SPGATEWAY_PARTNER_ID=
SPGATEWAY_MERCHANT_ID_PREFIX=
SPGATEWAY_MERCHANT_ID=
# 發票系統設定
SPGATEWAY_RECEIPT_KEY=
SPGATEWAY_RECEIPT_IV=
SPGATEWAY_RECEIPT_MERCHANT_ID=
使用
多功能收款MPG
快速上手
创建订单
// 產生智付通訂單資料
$order = MPG::generate(
100,
'leo@hourmasters.com',
'測試商品'
);
// $order的 getPostData() 及 getPostDataEncrypted() 會回傳包含即將傳送到智付通的表單資料,可在此時紀錄log
// 前台送出表單到智付通
return $order->send();
解析智付通返回订单数据
$tradeInfo = MPG::parse(request()->TradeInfo);
查询订单
$order = MPG::search(
'20180110151950mTHuUY'
100
);
可用方法
generate ($amount, $email, $itemDesc [, $params ])
生成智付通建立订单必要字段
参数
amount (Integer)
: 订单金额email (String)
: 购买人EmailitemDesc (String)
: 商品描述[ params (Array) ]
: 其他可选参数,详见下方参数表
返回
(Class)
: MPG Class 实例,其中 getPostData() 及 getPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$order = MPG::generate(
100,
'leo@hourmasters.com',
'測試商品'
);
参数表
备注
- 支付方式若无选择,默认开启智付通后台设置方式
- 若无发送订单编号默认会建立年月日时分秒+6位随机字符串的订单编号,例如:20180110151950mTHuUY
send ()
前台发送智付通订单建立表单
使用示例
$order->send();
parse ($tradeInfo)
解析智付通交易结果返回参数,也适用于取号完成
参数
tradeInfo (String)
: 智付通返回,经AES加密之交易数据
返回
详见智付通文件第六节:交易支付系统返回参数说明 / 第七节:取号完成系统返回参数说明
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$tradeInfo = MPG::parse(request()->TradeInfo);
search ($orderNo, $amount)
生成智付通查询订单必要字段
参数
orderNo (String)
: 订单编号amount (Integer)
: 订单金额
返回
详见智付通文件第四章:交易查询系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
// 查詢智付通訂單
$order = MPG::search(
'20180110151950mTHuUY'
100
);
电子发票
快速上手
开立发票
// 產生智付通開立發票資料
$receipt = Receipt::generate([
'BuyerName' => 'Leo',
'TotalAmt' => 10,
'ItemName' => [1],
'ItemCount' => [1],
'ItemUnit' => ['式'],
'ItemPrice' => [10],
]);
// $receipt的 getPostData() 及 getPostDataEncrypted 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出開立發票申請,取得發票開立回傳結果
$res = $receipt->send();
触发开立发票
// 產生智付通出發開立發票資料
$receipt = Receipt::generateTrigger('17122817285242624', '20171121WJNBX5NNBP', 100);
// $receipt的 getTriggerPostData() 及 getTriggerPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出觸發開立發票申請,取得發票觸發開立回傳結果
$res = $receipt->send();
作废发票
// 產生智付通作廢發票資料
$receipt = Receipt::generateInvalid('YF83646422', '作廢原因');
// $receipt的 getInvalidPostData() 及 getInvalidPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出作廢發票申請,取得作廢發票回傳結果
$res = $receipt->sendInvalid();
查询发票
// 查詢發票資料
$receipt = Receipt::search('20171121WJNBX5NNBP', 100);
可用方法
generate ($params)
生成智付通开立电子发票必要字段
参数
params (Array)
: 详见下方可选参数
返回
(Class)
: Class 实例,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单数据
使用示例
$receipt = Receipt::generate([
'BuyerName' => 'Leo',
'TotalAmt' => 10,
'ItemName' => [1],
'ItemCount' => [1],
'ItemUnit' => ['式'],
'ItemPrice' => [10],
]);
可选参数
备注
- 本套件仅提供快速串接方式,详细税率计算方式请务必与公司财务人员确认
send()
发送开立发票请求到智付通
返回
详见智付通文件第四节之二:开立发票系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $receipt->send();
generateTrigger ($invoiceTransNo, $orderNo, $amount)
生成智付通触发开立电子发票必要信息
参数
invoiceTransNo (String)
: 智付宝开立序号orderNo (String)
: 商店自定编号amount (Integer)
: 发票金额
返回
(Class)
: Class 实例,其中 getTriggerPostData() 及 getTriggerPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$receipt = Receipt::generateTrigger('17122817285242624', '20171121WJNBX5NNBP', 100);
sendTrigger()
送出触发开立电子发票请求到智付通
返回
详见智付通文件第四节之四:触发开立发票系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $receipt->sendTrigger();
generateInvalid ($receiptNumber, $invalidReason)
生成智付通触发开立电子发票必要信息
参数
receiptNumber (String)
: 发票号码invalidReason (String)
: 作废原因
返回
(Class)
: Class 实例,其中 getInvalidPostData() 及 getInvalidPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$receipt = Receipt::generateInvalid('17122817285242624', '作廢原因');
sendInvalid()
送出触发开立电子发票请求到智付通
返回
详见智付通文件第五节之二:作废发票系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $receipt->sendInvalid();
search($orderNo, $amount)
查询发票
参数
orderNo (String)
: 商店自定编号amount (Integer)
: 发票金额
返回
详见智付通文件第七节之二:查询发票系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $receipt->search('20171121WJNBX5NNBP', 100);
退款/取消授权
因智付通信用卡退款有尚未请款需串接取消授权API,已请款需串接退款API之规则,本功能旨在整合此一过程,降低开发人员负担,另外也提供非即时交易退款功能
快速上手
// 產生智付通退費 / 取消授權必要資訊
$refund = Refund::generate('20171121WJNBX5NNBP', 100);
// $refund的 postType為cacnel時,訂單準備取消授權;為refund時,訂單準備退款
// $refund的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出退款/取消授權申請,取得回傳結果
$res = $refund->send();
可用方法
generate ($orderNo, $amount[, $notifyUrl = null, $delayed = false, $params = []])
生成智付通退款/取消授权必要字段
参数
orderNo (String)
: 商店自定编号amount (String)
: 订单金额,若不想全额退款请于可选参数中发送Amt字段[ notifyUrl (String) ]
: 接受取消授权结果地址,于取消授权或非即时交易时才需填写[ delayed (Boolean) ]
: 是否为非即时交易[ params (Array) ]
: 详见下方参数表
返回
(Class)
: Class 实例,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单数据;getPostType() 为 cancel 时,订单准备取消授权,为 refund 时,订单准备退款
使用示例
$refund = Refund::generate('20171121WJNBX5NNBP', 100);
可选参数
- 即时交易
- 非即时交易
send()
发送退款/取消授权请求到智付通
返回
取消授权:详见智付通文件第五节:取消授权完成后系统响应信息
退款:详见智付通文件第五节:系统响应信息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $refund->send();
已约定信用卡付款
快速上手
// 產生付款必要資訊
$charge = Charge::generate(
100,
'email@email.com',
'itemDesc',
'xxxxxxxxxxxxxxxxxx',
'xxx',
[
'MerchantOrderNo' => '20171121WJNBX5NNBP'
]
);
// $transfer的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出扣款
$res = $charge->send();
可用方法
generate ($amount, $email, $itemDesc, $tokenValue, $tokenTerm, $params)
生成已约定的信用卡付款必要字段
参数
$amount (String)
: 金额$email (String)
: 购买人 Email$itemDesc (Integer)
: 商品描述$tokenValue (Integer)
: 约定信用卡授权码$tokenTerm ()
: 约定信用卡付款之付款人绑定资料$params ()
: 可选选项
可选参数
返回
(Class)
: Class实体,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单资料
使用示例
$charge = Charge::generate(
100,
'email@email.com',
'itemDesc',
'xxxxxxxxxxxxxxxxxx',
'xxx',
[
'MerchantOrderNo' => '20171121WJNBX5NNBP'
]
);
send()
将已约定的信用卡付款请求发送到智付通
返回
本文档未公开,请向合作的智付通业务人员索取
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $transfer->send();
平台费用扣款指示
快速上手
// 產生平台費用扣款指示必要資訊
$transfer = Transfer::generate('20171121WJNBX5NNBP', 100, 0, 0);
// $transfer的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出扣款指示申請,取得扣款指示回傳結果
$res = $transfer->send();
可用方法
generate ($merchantID, $amount, $feeType, $balanceType)
生成智付通扣款指示必要字段
参数
orderNo (String)
: 商店自定编号amount (String)
: 金额feeType (Integer)
: 费用类别balanceType (Integer)
: 交易正负值
返回
(Class)
: Class 实例,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单数据
使用示例
$transfer = Transfer::generate('20171121WJNBX5NNBP', 100);
send()
将扣款指示请求发送到智付通
返回
本文档未公开,请向合作的智付通业务人员索取
{
"Status": "..."
"Message": "..."
"Result": {...}
}
使用示例
$res = $transfer->send();
版本记录
1.1.0
- 非信用卡退款
- MPG交易串接增加支付宝字段(测试功能)
1.0.0
- MPG交易串接 / 查询
- 电子发票
- 退款 / 取消授权
- 平台扣款指示
许可
Laravel Spgateway 是一个开源软件,根据 MIT 许可证 许可