Download the PHP package ibrand/pay without Composer
On this page you can find all versions of the php package ibrand/pay. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package pay
做成 Laravel 中最傻瓜式的微信、支付宝支付扩展包
Feature
- 实现多渠道支付方式,如:原生支付,pingxx支付,银商支付等。
- 实现多业务统一支付。
- 实现异步通知统一封装。
TODO:
- 实现退款
安装
使用
创建支付请求
发起一次支付请求时需要创建一个新的 charge 对象,获取一个可用的支付凭据用于客户端向第三方渠道发起支付请求。
创建 charge 方法定义如下:
- $data 参数为支付参数,请见 支付参数一节。
- $type 为业务类型,如果只有一种支付业务,不传即可。如果存在多种业务支付类型,比如商城中存在支付订单,余额充值订单。
- $app 具体的应用名称,比如商城APP和活动APP,可能使用不同的支付配置
支付参数
请求参数 | 类型 | 必填 | 描述 |
---|---|---|---|
order_no | string | 是 | 商户订单号,适配每个渠道对此参数的要求,必须在商户的系统内唯一。(支付宝全渠道: 1-64 位的数字和字母组合;wx : 2-32 位;wx_pub_scan、cb_wx、cb_wx_pub、cb_wx_pub_qr、cb_wx_pub_scan :1-32 位的数字和字母组合;bfb : 1-20 位;银联全渠道: 8-40 位的数字和字母组合; yeepay_wap : 1-50 位;jdpay_wap : 1-30 位;qpay :1-30 位;isv_qr、isv_scan、isv_wap : 8-32 位,不重复,建议时间戳+随机数(或交易顺序号);paypal :1-32 位的数字和字母组合;ccb_pay、ccb_qr :1-30 位数字和字母组合;cmb_wallet : 6-32 位的数字和字母组合,一天内不能重复,订单日期+订单号唯一定位一笔订单,示例: 20170808test01)。注:推荐使用 8-20 位的数字和字母组合,不允许特殊字符。 |
channel | string | 是 | 已经支持值: |
amount | int | 是 | 订单总金额,必须大于0,单位为分 |
client_ip | string | 是 | 发起支付的客户端IP地址,Laravel 中 request()->getClientIp() |
subject | string | 是 | 商品标题,该参数最长为 32 个 Unicode 字符。银联全渠道限制在 32 个字节;支付宝部分渠道不支持特殊字符。 |
body | string | 是 | 商品描述信息,该参数最长为 128 个 Unicode 字符。yeepay_wap 对于该参数长度限制为 100 个 Unicode 字符;支付宝部分渠道不支持特殊字符。 |
extra | array | 是 | 在微信公众号支付,小程序支付,需要传递openid。如:'extra' => ['openid' => \request('openid')] |
time_expire | timestamp | 否 | 订单失效时间。时间范围在订单创建后的 1 分钟到 15 天,默认为 1 天,创建时间以 Ping++ 服务器时间为准。微信对该参数的时间范围在订单创建后的 1 分钟到 7 天,默认为 2 小时;upacp、upacp_pc、upacp_wap、cp_b2b、applepay_upacp 渠道对该参数的有效值限制为 1 小时内;upacp_b2b 对该参数的有效值限制为 1 天内;upacp_qr 渠道对该参数的有效期默认为 1 天,最大为 30 天。 |
metadata | array | 否 | 附属参数,会传递给微信和支付宝 |
description | string | 否 | 订单附件说明 |
返回值
发起支付请求后,微信通道会返回 charge 值,如下:
异步通知
本包会统一处理支付异步通知,可以通过配置文件来修改异步通知的 url。本报收到异步通知后,会执行 PayNotify::success($charge->type, $charge);
来通知业务方已经完成支付。
业务方在自己的代码中只需要做以下事情即可:
- 实现
iBrand\Component\Pay\Contracts\PayNotifyContract
接口,在success(Charge $charge)
方法中完成业务订单的状态变更。 - 在 ServiceProvider 中绑定
PayNotifyContract
实现。$this->app->bind('ibrand.pay.notify.default',StorePayNotify::class);
其中default
为业务类型值,需要保持和创建 charge 对象时传递的$type
值一致。
同步查询
通常的业务流程中支付完成后,会跳转到支付成功页面,此时需要去主动同步查询订单状态,防止异步通信异常导致订单状态未正确变更的问题。
配置项
执行 php artisan vendor:publish
后会发布配置文件 config/ibrand/pay.php
Resources
果酱云社区
-
全网真正免费的IT课程平台
-
专注于综合IT技术的在线课程,致力于打造优质、高效的IT在线教育平台
-
课程方向包含Python、Java、前端、大数据、数据分析、人工智能等热门IT课程
- 300+免费课程任你选择
All versions of pay with dependencies
PHP Build Version
Package Version
The package ibrand/pay contains the following files
Loading the files please wait ....