yoshocon/yoshocon-spgateway

laravel 的 spgateway 库

1.1.2 2018-03-15 07:45 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:27:41 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

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

该套件参考于 LeoChien

目录

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

要求

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

安装

$ composer require Yoshocon/yoshocon-spgateway

配置

Laravel 应用

  1. config/app.php 中注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)
'providers' => [
    // ...
    Yoshocon\Spgateway\SpgatewayServiceProvider::class,
],
'aliases' => [
    // ...
    'MPG' => Yoshocon\Spgateway\Facades\MPG::class,
    'Receipt' => Yoshocon\Spgateway\Facades\Receipt::class,
    'Refund' => Yoshocon\Spgateway\Facades\Refund::class,
    'Transfer' => Yoshocon\Spgateway\Facades\Transfer::class,
],
  1. 创建配置文件:
php artisan vendor:publish --provider="Yoshocon\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. receiptNumber (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();

平台费用扣款指示

快速上手

// 產生平台費用扣款指示必要資訊
$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 许可证