代码拉取完成,页面将自动刷新
gitee | composer | lastest version 1.0.0
php代理支付
场景:
针对以上的场景在实际开发中,多个项目需要维护,需要花费大量的时间一个一个去维护,如新增收款平台、新增收款账户等等问题
使用代理模式解决:
后续开放将支持更多平台
composer require magein/pay:^1.0 -vvv -o
composer require magein/think-pay
thinkphp6 使用composer的extra参数进行加载服务,安装即用
更多think-pay用法
composer require magein/laravel-pay
laravel8 使用composer的extra参数进行加载服务,安装即用
更多laravel-pay用法
// 配置使用单列模式进行设置、获取
PayConfig::instance()->setConfig(config('pay'));
// 获取notify配置
PayConfig::notify();
// 获取渠道的配置
PayConfig::channel();
// 获取平台配置文件
PayConfig::platforms();
// 省略其他配置....
需要在配置文件中实现基础类
return [
// 省略其他配置项....
/**
* 扩展类
*/
'extension' => [
// 创建、获取订单类 需要继承 magein\pay\extension\PayOrderInterface
'pay_order' => \magein\pay\PayOrder::class,
// 支付结果通知 需要继承 magein\pay\PayNotice
'pay_notice' => \magein\pay\PayNotice::class,
// 日志类 需要继承 magein\pay\PayLog
'pay_log' => \magein\pay\PayLog::class,
// 签名类 需要继承 magein\pay\PaySigner
'pay_singer' => \magein\pay\PaySigner::class,
// 扫码支付使用的二维码类 需要继承 magein\pay\extension\PayQrcodeOrderInterface
'pay_qrcode' => \magein\pay\PayQrcode::class,
// 微信授权类 需要继承 magein\pay\extension\WxOauthInterface
'wx_oauth' => \magein\pay\PayWxOauth::class
],
]
可以通过工厂类获取支付业务中使用的扩展类
// 获取平台
PayFactory::platform();
// 获取订单类
PayFactory::order();
// 获取通知类
PayFactory::notice();
// 获取日志类类
PayFactory::log();
// 获取签名类
PayFactory::singer();
// 扫码下单处理类
PayFactory::qrcode();
// 获取微信授权相关信息
PayFactory::wxOauth();
参数键 | 参数值 | 是否必填 | 参数说明 |
---|---|---|---|
channel_id | 999 | true | 渠道编号 自定义的值,需要再配置文件中添加 |
platform_id | wx | true | 支付平台 如wx、ali等约定的值 |
trade_type | h5 | true | 交易类型 如wx的jsapi,navite等 |
total_amount | 100 | true | 支付金额,单位分 |
subject | 支付标题 | true | 下单、充值等自定义 |
order_no | 订单编号 | true | 202401010101000 |
scene | 支付场景 | true | 1 |
account | 使用的收款账号 | false | wx123 |
open_id | 125112 | false | 微信支付必填 |
notify_url | https:// | true | 异步通知地址 |
return_url | https:// | false | 同步通知地址 |
coupon_amount | 100 | false | 优惠的金额 |
coupon_info | false | 优惠说明 | |
user_id | 123 | false | 用户信息 |
sign | 20a6f426ff2e5851073ea828808130a1 | true | 参数签名 |
// 不同渠道约定的秘钥
$secret ='20a6f426ff2e5851073ea828808130a1';
foreach ($params as $key => $val) {
if (is_object($val) || is_array($val) || strlen($val) > 10000) {
unset($params[$key]);
}
}
ksort($params);
$plain_text = '';
foreach ($params as $key => $val) {
$plain_text .= $key . $val;
}
$signature= md5(strtolower($secret . $plain_text));
$payment=new \magein\pay\Payment();
$payment->unify($data);
依赖
composer require endroid/qr-code:^3.8
$payment=new \magein\pay\Payment();
// 获取支付二维码
$payment->qrcode($data);
// 扫码支付逻辑
$payment->scan($data);
$payment=new \magein\pay\Payment();
// 根据支付编号查询订单支付结果 $type可选值 0=从系统和支付平台查询、 1=从系统查询、2=从支付平台查询
$payment->query($pay_no,$type);
执行的异常信息可以通过捕获PayException获取错误信息
4001开始为各个配置文件等错误
4002开始为验证支付参数错误
4003开始为微信签名、授权等错误
4005开始为各种结果错误,如支付二维码超时、订单不存在等
return [
'codes' => [
\magein\pay\PayCode::CONFIG_NULL => '配置文件错误',
\magein\pay\PayCode::CHANNEL_NULL => '订单渠道配置错误',
\magein\pay\PayCode::PLATFORM_NULL => '支付平台配置错误',
\magein\pay\PayCode::PLATFORM_CLASS_NULL => '支付平台实例化错误',
\magein\pay\PayCode::PLATFORM_ACCOUNT_NULL => '支付平台收款账号错误',
// 支付参数验证错误代码
400201=>'支付参数为空',
400203=>'签名错误',
400205=>'渠道错误',
400207=>'支付平台错误',
400209=>'支付平台交易类型错误',
400211=>'支付金额错误',
400213=>'订单编号错误',
400215=>'支付回调地址错误',
// 微信支付错误代码
400301 => '微信签名错误',
400303 => '微信支付参数错误',
400305 => '微信支付参数错误',
400307 => '微信授权通知地址错误',
400503 => '支付订单不存在',
400505 => '二维码已经失效',
],
]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。