In this issue, we recommend a PHP payment SDK extension package that integrates Alipay and WeChat – Pay.
Pay integrates the latest APIs of Alipay and WeChat, complies with the latest PSR standards, and can be integrated into other frameworks with a small amount of code, without fear of constraints.
HyperF Expansion Pack:
https://github.com/yansongda/hyperf-pay
Laravel Expansion Pack:
https://github.com/yansongda/laravel-pay
Yii Expansion Pack:
https://github.com/guanguans/yii-pay
hyperf Expansion package:
https://github.com/yansongda/hyperf-pay
laravel Expansion package
https://github.com/yansongda/laravel-pay
yii Expansion package
https://github.com/guanguans/yii-pay
Featuresfunctional performance
- Multi-tenancy support
- Swoole support
- Flexible plug-in mechanism
- Rich event system
- The naming is less messy
- Hide details that developers don’t need to focus on
- It is developed according to the latest API of Alipay and WeChat
- Highly abstract classes, free from the pain of spelling JSON and XML
- The file structure is clear and easy to understand, and you can add payment gateways that are not available in this project as you like
- Methods are more elegant, and you don’t have to look at what those weird method names or class names are for
- The built-in method of automatically obtaining the WeChat public certificate no longer has to worry about the problem of obtaining the certificate for the first time
- Compliant with PSR2, PSR3, PSR4, PSR7, PSR11, PSR14, and more, you can easily integrate with your framework
Quick installation
Operating environment
- PHP 7.3+
- composer
Installation:
composer require yansongda/pay:~3.0.0 -vvv
initialize
Method 1:
Call the config method directly to initialize
Pay::config($config);
If you need to force initialization, overwrite the configuration information
Pay::config(array_merge($config, ['_force' => true]));
Method 2:
Initialized in passing on each actual call
Pay::alipay($config)->web($order);
If you need to force initialization, overwrite the configuration information
Pay::alipay(array_merge($config, ['_force' => true]))->web($order);
Example of use
- Alipay
Web payment
Pay::config($this->config);
return Pay::alipay()->web([
'out_trade_no' => ''.time(),
'total_amount' => '0.01',
'subject' => 'yansongda Test - 1',
]);
H5 payment
Pay::config($this->config);
return Pay::alipay()->wap([
'out_trade_no' => time(),
'total_amount' => '0.01',
'subject' => 'yansongda Test - 01',
'quit_url' => 'https://yansongda.cn',
]);
APP PAYMENT
Pay::config($this->config);
return Pay::alipay()->app([
'out_trade_no' => time(),
'total_amount' => '0.01',
'subject' => 'yansongda Test - 01',
]);
Mini Program payment
Pay::config($this->config);
$result = Pay::alipay()->mini([
'out_trade_no' => time().'',
'total_amount' => '0.01',
'subject' => 'yansongda Test - 01',
'buyer_id' => '2088622190161234',
]);
return $result->get('trade_no'); // Alipay transaction number
// return $result->trade_no;
Official account payment
Pay::config($config);
$order = [
'out_trade_no' => time().'',
'description' => 'subject-Test',
'amount' => [
'total' => 1,
],
'payer' => [
'openid' => 'onkVf1FjWS5SBxxxxxxxx',
],
];
$result = Pay::wechat()->mp($order);
// Return to the Collection instance. It contains all the parameters of calling JSAPI, such as appId, timeStamp, nonceStr, package, signType, paySign, etc.;
// The values can be obtained directly from $result->appId, $result->timeStamp.
// Subsequent calls are not within the scope of this document, please refer to the official documentation.
Mobile website payment
Pay::config($config);
$order = [
'out_trade_no' => time().'',
'description' => 'subject-Test',
'amount' => [
'total' => 1,
],
'scene_info' => [
'payer_client_ip' => '1.2.4.8',
'h5_info' => [
'type' => 'Wap',
]
],
];
return Pay::wechat()->wap($order);
Scan the QR code to pay
Pay::config($config);
$order = [
'out_trade_no' => time().'',
'description' => 'subject-Test',
'amount' => [
'total' => 1,
],
];
$result = Pay::wechat()->scan($order);
// QR code content: $qr = $result->code_url;
Mini programs
Pay::config($config);
$order = [
'out_trade_no' => time().'',
'description' => 'subject-Test',
'amount' => [
'total' => 1,
'currency' => 'CNY',
],
'payer' => [
'openid' => '123fsdf234',
]
];
$result = Pay::wechat()->mini($order);
// Return to the Collection instance. It contains all the parameters of calling JSAPI, such as appId, timeStamp, nonceStr, package, signType, paySign, etc.;
// The values can be obtained directly from $result->appId, $result->timeStamp.
// Subsequent calls are not within the scope of this document, please refer to the official documentation.
This project uses the MIT open source license, and you can read more about it by yourself.