simon80119/laravel-spgateway

laravel 的 spgateway 库

2.0.1 2023-08-25 07:07 UTC

This package is auto-updated.

Last update: 2024-09-25 09:40:16 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Laravel Spgateway 是一个开源的 智付通 非官方套件

目录

  1. 环境要求
  2. 安装
  3. 配置
  4. 使用
    1. 多功能收款MPG
    2. 电子发票
    3. 退款/取消授权
    4. 平台费用扣款指示
  5. 版本记录
  6. 许可

要求

  1. PHP >= 7.2.5
  2. Laravel >= 7
  3. Composer

安装

$ composer require leochien/laravel-spgateway

配置

Laravel 应用

  1. 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,
],
  1. 创建配置文件:
php artisan vendor:publish --provider="LeoChien\Spgateway\SpgatewayServiceProvider"
  1. 修改 config/spgateway.php 中的对应参数。

  2. .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 ])

生成智付通建立订单必要字段

参数
  1. amount (Integer): 订单金额
  2. email (String): 购买人Email
  3. itemDesc (String): 商品描述
  4. [ params (Array) ]: 其他可选参数,详见下方参数表
返回
  1. (Class): MPG Class 实例,其中 getPostData() 及 getPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$order = MPG::generate(
    100,
    'leo@hourmasters.com',
    '測試商品'
);
参数表
备注
  • 支付方式若无选择,默认开启智付通后台设置方式
  • 若无发送订单编号默认会建立年月日时分秒+6位随机字符串的订单编号,例如:20180110151950mTHuUY

send ()

前台发送智付通订单建立表单

使用示例
$order->send();

parse ($tradeInfo)

解析智付通交易结果返回参数,也适用于取号完成

参数
  1. tradeInfo (String): 智付通返回,经AES加密之交易数据
返回

详见智付通文件第六节:交易支付系统返回参数说明 / 第七节:取号完成系统返回参数说明

{
    "Status": "..."
    "Message": "..."
    "Result": {...}
}
使用示例
$tradeInfo = MPG::parse(request()->TradeInfo);

search ($orderNo, $amount)

生成智付通查询订单必要字段

参数
  1. orderNo (String): 订单编号
  2. 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)

生成智付通开立电子发票必要字段

参数
  1. params (Array): 详见下方可选参数
返回
  1. (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)

生成智付通触发开立电子发票必要信息

参数
  1. invoiceTransNo (String): 智付宝开立序号
  2. orderNo (String): 商店自定编号
  3. amount (Integer): 发票金额
返回
  1. (Class): Class 实例,其中 getTriggerPostData() 及 getTriggerPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$receipt = Receipt::generateTrigger('17122817285242624', '20171121WJNBX5NNBP', 100);

sendTrigger()

送出触发开立电子发票请求到智付通

返回

详见智付通文件第四节之四:触发开立发票系统响应信息

{
    "Status": "..."
    "Message": "..."
    "Result": {...}
}
使用示例
$res = $receipt->sendTrigger();

generateInvalid ($receiptNumber, $invalidReason)

生成智付通触发开立电子发票必要信息

参数
  1. receiptNumber (String): 发票号码
  2. invalidReason (String): 作废原因
返回
  1. (Class): Class 实例,其中 getInvalidPostData() 及 getInvalidPostDataEncrypted() 会回传即将送到智付通的表单数据
使用示例
$receipt = Receipt::generateInvalid('17122817285242624', '作廢原因');

sendInvalid()

送出触发开立电子发票请求到智付通

返回

详见智付通文件第五节之二:作废发票系统响应信息

{
    "Status": "..."
    "Message": "..."
    "Result": {...}
}
使用示例
$res = $receipt->sendInvalid();

search($orderNo, $amount)

查询发票

参数
  1. orderNo (String): 商店自定编号
  2. 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 = []])

生成智付通退款/取消授权必要字段

参数
  1. orderNo (String): 商店自定编号
  2. amount (String): 订单金额,若不想全额退款请于可选参数中发送Amt字段
  3. [ notifyUrl (String) ]: 接受取消授权结果地址,于取消授权或非即时交易时才需填写
  4. [ delayed (Boolean) ]: 是否为非即时交易
  5. [ params (Array) ]: 详见下方参数表
返回
  1. (Class): Class 实例,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单数据;getPostType() 为 cancel 时,订单准备取消授权,为 refund 时,订单准备退款
使用示例
$refund = Refund::generate('20171121WJNBX5NNBP', 100);
可选参数
  1. 即时交易
  1. 非即时交易

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)

生成已约定的信用卡付款必要字段

参数
  1. $amount (String): 金额
  2. $email (String): 购买人 Email
  3. $itemDesc (Integer): 商品描述
  4. $tokenValue (Integer): 约定信用卡授权码
  5. $tokenTerm (): 约定信用卡付款之付款人绑定资料
  6. $params (): 可选选项
可选参数
返回
  1. (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)

生成智付通扣款指示必要字段

参数
  1. orderNo (String): 商店自定编号
  2. amount (String): 金额
  3. feeType (Integer): 费用类别
  4. balanceType (Integer): 交易正负值
返回
  1. (Class): Class 实例,其中 getPostData() 及 getPostDataEncrypted() 包含即将送到智付通的表单数据
使用示例
$transfer = Transfer::generate('20171121WJNBX5NNBP', 100);

send()

将扣款指示请求发送到智付通

返回

本文档未公开,请向合作的智付通业务人员索取

{
    "Status": "..."
    "Message": "..."
    "Result": {...}
}
使用示例
$res = $transfer->send();

版本记录

1.1.0

  1. 非信用卡退款
  2. MPG交易串接增加支付宝字段(测试功能)

1.0.0

  1. MPG交易串接 / 查询
  2. 电子发票
  3. 退款 / 取消授权
  4. 平台扣款指示

许可

Laravel Spgateway 是一个开源软件,根据 MIT 许可证 许可