记住用户名密码
在easyswoole中,已经开发好了相关的支付组件,只需要引入即可:
composer require easyswoole
/pay
pay组件支持协程
支付宝支付目前支持 7 种支付方法,对应的支付 method 如下:
统一收单下单并支付页面接口
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
$aliConfig
->setAppId(
'2017082000295641'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
## 对象风格
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Web();
$order
->setSubject(
'测试'
);
$order
->setOutTradeNo(time().
'123456'
);
$order
->setTotalAmount(
'0.01'
);
// 本库只预置了常用的请求参数,没预置的参数使用:$order->addProperty('其他字段','其他字段值');
## 数组风格
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\App([
'subject'
=>
'测试'
,
'out_trade_no'
=>
'123456'
,
'total_amount'
=>
'0.01'
,
'额外的字段键值'
=>
'额外字段值'
],true);
$res
=
$pay
->aliPay(
$aliConfig
)->web(
$order
);
var_dump(
$res
->toArray());
$html
= buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL,
$res
->toArray());
file_put_contents
(
'test.html'
,
$html
);
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参数查询:https://docs.open.alipay.com/api_1/alipay.trade.page.pay
生成支付的跳转html示例
function
buildPayHtml(
$endpoint
,
$payload
)
{
$sHtml
=
"<form id='alipaysubmit' name='alipaysubmit' action='"
.
$endpoint
.
"' method='POST'>"
;
foreach
(
$payload
as
$key
=>
$val
) {
$val
=
str_replace
(
"'"
, ''',
$val
);
$sHtml
.=
"<input type='hidden' name='"
.
$key
.
"' value='"
.
$val
.
"'/>"
;
}
$sHtml
.=
"<input type='submit' value='ok' style='display:none;'></form>"
;
$sHtml
.=
"<script>document.forms['alipaysubmit'].submit();</script>"
;
return
$sHtml
;
}
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::NORMAL);
$aliConfig
->setAppId(
'2017082000295641'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Wap();
$order
->setSubject(
'测试'
);
$order
->setOutTradeNo(time().
'123456'
);
$order
->setTotalAmount(
'0.01'
);
$res
=
$pay
->aliPay(
$aliConfig
)->wap(
$order
);
var_dump(
$res
->toArray());
$html
= buildPayHtml(\EasySwoole\Pay\AliPay\GateWay::NORMAL,
$res
->toArray());
file_put_contents
(
'test.html'
,
$html
);
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参数查询:https://docs.open.alipay.com/api_1/alipay.trade.wap.pay
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\App();
$order
->setSubject(
'测试'
);
$order
->setOutTradeNo(time().
'123456'
);
$order
->setTotalAmount(
'0.01'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
var_dump(
$aliPay
->app(
$order
)->toArray());
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如, product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参数查询:https://docs.open.alipay.com/api_1/alipay.trade.app.pay
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Pos();
$order
->setSubject(
'测试'
);
$order
->setTotalAmount(
'0.01'
);
$order
->setOutTradeNo(time());
$order
->setAuthCode(
'289756915257123456'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->pos(
$order
)->toArray();
var_dump(
$data
);
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参数查询:https://docs.open.alipay.com/api_1/alipay.trade.page.pay
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Scan();
$order
->setSubject(
'测试'
);
$order
->setTotalAmount(
'0.01'
);
$order
->setOutTradeNo(time());
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->scan(
$order
)->toArray();
$response
=
$aliPay
->preQuest(
$data
);
var_dump(
$response
);
// qr_code 当前预下单请求生成的二维码码串,可以用二维码生成工具根据该码串值生成对应的二维码 https://qr.alipay.com/bavh4wjlxf12tper3a
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参考参数:https://docs.open.alipay.com/api_1/alipay.trade.precreate
<br>
$aliConfig = new \EasySwoole\Pay\AliPay\Config();
$aliConfig->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig->setAppId('2016091800538339');
$aliConfig->setPublicKey('阿里公钥');
$aliConfig->setPrivateKey('阿里私钥');
$pay = new \EasySwoole\Pay\Pay();
$order = new \EasySwoole\Pay\AliPay\RequestBean\Transfer();
$order->setSubject('测试');
$order->setTotalAmount('0.01');
$order->setPayeeType('ALIPAY_LOGONID');
$order->setPayeeAccount('hcihsn8174@sandbox.com');
$aliPay = $pay->aliPay($aliConfig);
$data = $aliPay->transfer($order)->toArray();
$aliPay->preQuest($data);
var_dump($data);
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
参数查询:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\MiniProgram();
$order
->setSubject(
'测试'
);
$order
->setOutTradeNo(time().
'123456'
);
$order
->setTotalAmount(
'0.01'
);
$order
->setBuyerId(
'hcihsn8174@sandbox.com'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->miniProgram(
$order
)->toArray();
var_dump(
$data
);
所有订单配置中,客观参数均不用配置,扩展包已经为大家自动处理了,比如,product_code
等参数。
所有订单配置参数和官方无任何差别,兼容所有功能,所有参数请参考这里,查看「请求参数」一栏。
小程序支付接入文档:https://docs.alipay.com/mini/introduce/pay。
参数查询:
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\OrderFind();
$order
->setOutTradeNo(time().
'123456'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
var_dump(
$aliPay
->orderFind(
$order
)->toArray());
官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\RefundFind();
$order
->setOutTradeNo(
'20150320010101001'
);
$order
->setOutRequestNo(time().
'2014112611001004680073956707'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->refundFind(
$order
)->toArray();
var_dump(
$aliPay
->preQuest(
$data
));
官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.refund
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\TransferFind();
$order
->setOutBizNo(
'3142321423432'
);
// 二选一
// $order->setOrderId('20160627110070001502260006780837');
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->transferFind(
$order
)->toArray();
var_dump(
$aliPay
->preQuest(
$data
));
官方参数查询:https://docs.open.alipay.com/api_28/alipay.fund.trans.order.query
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Cancel();
$order
->setOutTradeNo(
'20150320010101001'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->cancel(
$order
)->toArray();
var_dump(
$aliPay
->preQuest(
$data
));
官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.cancel
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Close();
$order
->setOutTradeNo(time().
'123456'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->close(
$order
)->toArray();
var_dump(
$aliPay
->preQuest(
$data
));
官方参数查询:https://docs.open.alipay.com/api_1/alipay.trade.close
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\Download();
$order
->setBillType(
'trade'
);
$order
->setBillDate(
'2016-04-05'
);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$data
=
$aliPay
->download(
$order
)->toArray();
var_dump(
$aliPay
->preQuest(
$data
));
官方参数查询:https://docs.open.alipay.com/api_15/alipay.data.dataservice.bill.downloadurl.query
$aliConfig
=
new
\EasySwoole\Pay\AliPay\Config();
$aliConfig
->setGateWay(\EasySwoole\Pay\AliPay\GateWay::SANDBOX);
$aliConfig
->setAppId(
'2016091800538339'
);
$aliConfig
->setPublicKey(
'阿里公钥'
);
$aliConfig
->setPrivateKey(
'阿里私钥'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$param
= [];
//伪代码,post数据
unset(
$param
[
'sign_type'
]);
//需要忽略sign_type组装
$order
=
new
\EasySwoole\Pay\AliPay\RequestBean\NotifyRequest(
$param
,true);
$aliPay
=
$pay
->aliPay(
$aliConfig
);
$result
=
$aliPay
->verify(
$order
);
var_dump(
$result
);
\EasySwoole\Pay\AliPay::success();
//成功响应
\EasySwoole\Pay\AliPay::fail();
//失败响应
bob主页支付目前支持 3 种支付方法,对应的支付 method 如下:
$wechatConfig
=
new
Config();
$wechatConfig
->setAppId(
'xxxxxx'
);
// 除了小程序以外使用该APPID
$wechatConfig
->setMiniAppId(
'xxxxxx'
);
// 小程序使用该APPID
$wechatConfig
->setMchId(
'xxxxxx'
);
$wechatConfig
->setKey(
'xxxxxx'
);
$wechatConfig
->setNotifyUrl(
'xxxxx'
);
$wechatConfig
->setApiClientCert(
'xxxxxxx'
);
//客户端证书
$wechatConfig
->setApiClientKey(
'xxxxxxx'
);
//客户端证书秘钥
由于小程序拥有独立的APPID,只需要在配置里同时配置上AppId和MiniAppId两个配置项,在支付的时候会自动选择对应的APPID来发起支付
$officialAccount
=
new
OfficialAccount();
$officialAccount
->setOpenid(
'xxxxxxx'
);
$officialAccount
->setOutTradeNo(
'CN'
.
date
(
'YmdHis'
) . rand(1000, 9999));
$officialAccount
->setBody(
'xxxxx-测试'
.
$outTradeNo
);
$officialAccount
->setTotalFee(1);
$officialAccount
->setSpbillCreateIp(
'xxxxx'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$params
=
$pay
->weChat(
$wechatConfig
)->officialAccount(
$officialAccount
);
可以参考demo/wechat/index.php
$wap
=
new
\EasySwoole\Pay\WeChat\RequestBean\Wap();
$wap
->setOutTradeNo(
'CN'
.
date
(
'YmdHis'
) . rand(1000, 9999));
$wap
->setBody(
'xxxxx-WAP测试'
.
$outTradeNo
);
$wap
->setTotalFee(1);
$wap
->setSpbillCreateIp(
'xxxxx'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$params
=
$pay
->weChat(
$wechatConfig
)->wap(
$wap
);
$bean
=
new
\EasySwoole\Pay\WeChat\RequestBean\MiniProgram();
$bean
->setOpenid(
'xxxxxxxxx'
);
$bean
->setOutTradeNo(
'CN'
.
date
(
'YmdHis'
) . rand(1000, 9999));
$bean
->setBody(
'xxxx-测试'
.
$outTradeNo
);
$bean
->setTotalFee(1);
$bean
->setSpbillCreateIp(
$this
->request()->getHeader(
'x-real-ip'
)[0]);
$pay
=
new
\EasySwoole\Pay\Pay();
$params
=
$pay
->weChat(
$this
->wechatConfig)->miniProgram(
$bean
);
生成扫码链接 然后生成二维码 具体请查看demo/wechat/index.php
$biz
=
new
Biz();
$biz
->setProductId(
'123456789'
);
$biz
->setTimeStamp(time());
$biz
->setAppId(
$wechatConfig
->getAppId());
$biz
->setMchId(
$wechatConfig
->getMchid());
$data
=
$biz
->toArray();
$u
=
new
Utility(
$wechatConfig
);
$sign
=
$u
->generateSign(
$data
);
$biz
->setSign(
$sign
);
$url1
=
"weixin://wxpay/bizpayurl?"
.
$this
->ToUrlParams(
$biz
->toArray());
扫码回调地址(ps:公众号平台设置)
$xml
=
$this
->request()->getBody()->__toString();
$pay
=
new
Pay();
$data
=
$pay
->weChat(
$this
->wechatConfig)->verify(
$xml
);
$bean
=
new
\EasySwoole\Pay\WeChat\RequestBean\Scan();
$bean
->setOutTradeNo(
'CN'
.
date
(
'YmdHis'
) . rand(1000, 9999));
$bean
->setOpenid(
'xxxxxx'
);
$bean
->setProductId(
$data
[
'product_id'
]);
$bean
->setBody(
'xxxxxx-SCAN测试'
.
$outTradeNo
);
$bean
->setTotalFee(1);
$bean
->setSpbillCreateIp(
$this
->request()->getHeader(
'x-real-ip'
)[0]);
$response
=
$pay
->weChat(
$this
->wechatConfig)->scan(
$bean
);
$nativeResponse
=
new
NativeResponse([
'appid'
=>
$this
->wechatConfig->getAppId(),
'mch_id'
=>
$this
->wechatConfig->getMchId(),
'prepay_id'
=>
$response
->getPrepayId(),
'nonce_str'
=>
$response
->getNonceStr()]);
$u
=
new
Utility(
$this
->wechatConfig);
$nativeResponse
->setSign(
$u
->generateSign(
$nativeResponse
->toArray()));
$xml
= (
new
SplArray(
$nativeResponse
->toArray()))->toXML();
$this
->response()->write(
$xml
);
$bean
=
new
\EasySwoole\Pay\WeChat\RequestBean\Scan();
$bean
->setOutTradeNo(
$outTradeNo
);
$bean
->setProductId(
'123456789'
);
$bean
->setBody(
'xxxx-SCAN2测试'
.
$outTradeNo
);
$bean
->setTotalFee(1);
$bean
->setSpbillCreateIp(
$this
->request()->getHeader(
'x-real-ip'
)[0]);
$pay
=
new
Pay();
$data
=
$pay
->weChat(
$this
->wechatConfig)->scan(
$bean
);
$url2
=
$data
->getCodeUrl();
go(
function
()
use
(
$wechatConfig
) {
$orderFind
=
new
\EasySwoole\Pay\WeChat\RequestBean\OrderFind();
$orderFind
->setOutTradeNo(
'CN201903181044383609'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$info
=
$pay
->weChat(
$wechatConfig
)->orderFind(
$orderFind
);
print_r((
array
)
$info
);
});
go(
function
()
use
(
$wechatConfig
) {
$refund
=
new
\EasySwoole\Pay\WeChat\RequestBean\Refund();
$refund
->setOutTradeNo(
'CN201903181111275823'
);
$refund
->setOutRefundNo(
'TK'
.
date
(
'YmdHis'
) . rand(1000, 9999));
$refund
->setTotalFee(1);
$refund
->setRefundFee(1);
$refund
->setNotifyUrl(
'xxxxx'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$info
=
$pay
->weChat(
$wechatConfig
)->refund(
$refund
);
print_r(
$info
);
});
go(
function
()
use
(
$wechatConfig
) {
$refundFind
=
new
\EasySwoole\Pay\WeChat\RequestBean\RefundFind();
$refundFind
->setOutTradeNo(
'CN201903181044383609'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$info
=
$pay
->weChat(
$wechatConfig
)->refundFind(
$refundFind
);
print_r((
array
)
$info
);
});
go(
function
()
use
(
$wechatConfig
) {
$close
=
new
\EasySwoole\Pay\WeChat\RequestBean\Close();
$close
->setOutTradeNo(
'CN201903151343107239'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$info
=
$pay
->weChat(
$wechatConfig
)->close(
$close
);
print_r((
array
)
$info
);
});
go(function () use ($wechatConfig) { $download = new \EasySwoole\Pay\WeChat\RequestBean\Download(); $download->setBillDate('20190312'); $download->setBillType('ALL');//这个参数必传 $pay = new \EasySwoole\Pay\Pay(); $info = $pay->weChat($wechatConfig)->download($download); echo htmlspecialchars($info, ENT_QUOTES);});
go(
function
()
use
(
$wechatConfig
) {
$download
=
new
\EasySwoole\Pay\WeChat\RequestBean\DownloadFundFlow();
$download
->setBillDate(
'20190312'
);
$download
->setAccountType(
'Basic'
);
$pay
=
new
\EasySwoole\Pay\Pay();
$info
=
$pay
->weChat(
$wechatConfig
)->downloadFundFlow(
$download
);
echo
htmlspecialchars(
$info
, ENT_QUOTES);
});
$pay
=
new
\EasySwoole\Pay\Pay();
$content
=
''
;
//content为xml原始数据,在easyswoole中可通过$this->request()->getBody()->__toString()取出
$data
=
$pay
->weChat(
$wechatConfig
)->verify(
$content
)
\EasySwoole\Pay\WeChat\WeChat::success();
//成功响应
\EasySwoole\Pay\WeChat\WeChat::fail();
//失败响应
本文转自 www.easyswoole.com 官方文档
目前有 0 条留言 其中:访客:0 条, 博主:0 条