easyswoole - 基于swoole扩展实现的一款高性能php框架

協(xié)程支付網(wǎng)關(guān)(微信支付)

組件安裝方法和說(shuō)明

注意:請(qǐng)務(wù)必檢查你的 php 環(huán)境有沒有安裝 php-bcmath 擴(kuò)展,沒有安裝 php-bcmath 擴(kuò)展時(shí)安裝的 pay 組件的版本是 1.2.17 之前的版本(不是最新)。想要使用最新穩(wěn)定版 pay 組件的功能,請(qǐng)先安裝 php-bcmath 擴(kuò)展,php 安裝此擴(kuò)展的方法請(qǐng)自行查詢。

composer require easyswoole/pay

微信支付方法

微信支付目前支持 6 種支付方法,對(duì)應(yīng)的支付 method 如下:

method 說(shuō)明 參數(shù) 返回值
wap 手機(jī)網(wǎng)站支付 Request Response
officialAccount 公眾號(hào)支付 Request Response
scan 掃碼支付 Request Response
miniProgram 小程序支付 Request Response
barCode 條碼當(dāng)面支付 Request Response
App App支付 Request Response

微信參數(shù)配置

$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'); //客戶端證書秘鑰

由于小程序擁有獨(dú)立的APPID,只需要在配置里同時(shí)配置上AppId和MiniAppId兩個(gè)配置項(xiàng),在支付的時(shí)候會(huì)自動(dòng)選擇對(duì)應(yīng)的APPID來(lái)發(fā)起支付

公眾號(hào)支付

$officialAccount = new OfficialAccount();
$officialAccount->setOpenid('xxxxxxx');
$officialAccount->setOutTradeNo('CN' . date('YmdHis') . rand(1000, 9999));
$officialAccount->setBody('xxxxx-測(cè)試' . $outTradeNo);
$officialAccount->setTotalFee(1);
$officialAccount->setSpbillCreateIp('xxxxx');
$pay = new \EasySwoole\Pay\Pay();
$params = $pay->weChat($wechatConfig)->officialAccount($officialAccount);

可以參考demo/wechat/index.php

在使用微信支付時(shí),商品名稱中如果出現(xiàn)特殊字符,如 & 請(qǐng)自行使用urlencode在生成簽名傳參時(shí)進(jìn)行編碼

H5支付

$wap = new \EasySwoole\Pay\WeChat\RequestBean\Wap();
$wap->setOutTradeNo('CN' . date('YmdHis') . rand(1000, 9999));
$wap->setBody('xxxxx-WAP測(cè)試' . $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-測(cè)試' . $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);

App支付

$app = new App();
$app->setNonceStr('xxxxx');
$app->setSign('xxxxx');
$app->setBody('app支付測(cè)試');
$app->setOutTradeNo(date(YmdHis).rand(1000,999));
$app->setTotalFee(1);
$app->setSpbillCreateIp('xxxx');

$pay = new \EasySwoole\Pay\Pay();
$result = $pay->weChat($wechatConfig)->app($app);

掃碼支付

模式一

生成掃碼鏈接 然后生成二維碼 具體請(qǐng)查看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());

掃碼回調(diào)地址(ps:公眾號(hào)平臺(tái)設(shè)置)

 $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測(cè)試' . $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測(cè)試' . $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);
});

申請(qǐng)退款

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);
});

關(guān)閉訂單

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);
});

下載對(duì)賬單

go(function () use ($wechatConfig) {
    $download = new \EasySwoole\Pay\WeChat\RequestBean\Download();
    $download->setBillDate('20190312');
    $download->setBillType('ALL');//這個(gè)參數(shù)必傳
    $pay = new \EasySwoole\Pay\Pay();
    $info = $pay->weChat($wechatConfig)->download($download);
    echo htmlspecialchars($info, ENT_QUOTES);
});

下載資金對(duì)賬單

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);
});

驗(yàn)證簽名

$pay = new \EasySwoole\Pay\Pay();
$content = '';//content為xml原始數(shù)據(jù),在easyswoole中可通過$this->request()->getBody()->__toString()取出
$data = $pay->weChat($wechatConfig)->verify($content);

服務(wù)器確認(rèn)收到異步通知字符串獲取

\EasySwoole\Pay\WeChat\WeChat::success();//成功響應(yīng)
\EasySwoole\Pay\WeChat\WeChat::fail();//失敗響應(yīng)
主站蜘蛛池模板: 深圳专利申请-深圳商标注册-深圳国高认定 - 深弘知识产权 | 饲料车_散装饲料车_畜禽运输车_散装饲料运输车_饲料车厂家_铝合金运猪车-程力专用汽车股份有限公司 | 柱塞泥浆泵|压滤机专用泵|陶瓷泥浆泵_咸阳华星泵业有限公司 | 专业制造泥浆泵阀箱、锻造零件、曲轴、台阶轴等各种机械部件 - 四川中宇重工科技有限公司 | 洒水车厂家、消防车、污水处理车厂家-程力专用汽车股份有限公司 洒水车|冷藏车|LED广告车|油罐车|道路救援车|垃圾车|程力专用汽车股份有限公司销售九分公司 | 三坐标测量机_海克斯康三坐标_蔡司三坐标_常州三坐标测量服务中心_苏州长南精密技术有限公司 | 上海中泉泵业制造有限公司-柴油机泵,一体化泵站,柴油机消防泵,泵站,预制一体化泵站 | 转轮除湿机,转轮除湿机,恒温恒湿机厂家_合肥铂克环境设备有限公司 | 青砖_仿古砖_仿古小青瓦-「肥西晓军仿古建材」 | 蜀山人才网_蜀山招聘网_求职找工作平台| 戏曲下载网,唱戏机戏曲下载,戏曲视频下载,戏曲MP3下载 - 梨园风 | 长春市龙飞数码印务有限公司,龙飞印务,长春商务印刷,长春精品包装,长春数码快印 | 微机继电保护测试仪,单相继电保护测试仪,三相继电保护测试仪,六相继电保护测试仪,介质损耗测试仪,氧化锌避雷器测试仪,无线核相仪-扬州豪泰电力科技有限公司 | 全网营销_网络推广外包_全网营销代运营公司-湖南微望互动 | 聚四氟乙烯板,聚乙烯四氟板,防火布,廊坊王氏防火材料有限公司官网 | 幼儿园设计公司/南昌酒店装修/办公室/餐厅/民宿/店面/展厅/装修设计公司-益昌装饰集团 | 三轴伺服机械手_五轴伺服机械手_注塑机械手_东莞市浩能自动化机械有限公司 | 上海离婚律师|婚姻律师离婚纠纷咨询解答-金牌上海离婚律师团队 | 水性漆_水性漆厂家_水性涂料加盟代理_两只璧琥全漆定制官网 | 煤粉喷枪_高炉喷煤枪_陶瓷喷煤枪-北京耐默公司 | 连接器-连接线-连接器厂家-鑫鹏博20年高品质连接器生产厂家 | 制砂机_制沙一体机_青石制沙机-华盛铭设备厂家 | 太阳能路灯-庭院灯-太阳能灯生产厂家-北京日月升太阳能科技公司 太阳能路灯生产厂家-郑州太阳能高杆灯价格-道路照明智能路灯-河南坤德照明 | 深圳办公室装修_高端写字楼设计费用_企业装修报价公司-深圳长红装饰 | 思行科技-珠海小程序开发-珠海网站建设-珠海APP开发-江门小程序开发-江门网站建设-江门APP开发 | 联智通达_工控一体机_工业触摸一体机_工业一体机_工业触控一体机_POS机主板_工控主板_国产化主板_RK3588主板厂商-联智通达 | 山东德曼医疗设备集团有限公司| 新房_二手房_别墅_全包装修-天美艺装饰【官网】-深圳装修公司 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 罗湖人才网_罗湖招聘网_求职找工作平台| 热泵烘干机_食品烘干机_水果烘干机_蔬菜烘干机_河南蓝天机械制造有限公司 | 全球无人机网(81uav.cn)_无人机买卖、租赁服务、培训的最大门户网站 | 合金锤头_破碎机锤头_耐磨锤头_巩义市东辰铸造 高耐磨合金锤头厂家 | 张家港起重搬运吊装,工厂设备搬运服务-张家港易源起重搬运有限公司 | 泊头市天一泵业有限公司_齿轮泵,高粘度齿轮泵,螺杆泵,三螺杆泵 | 爬架网@建筑爬架网@冲孔建筑爬架网片@工地冲孔建筑爬架网片@工地冲孔建筑爬架网片厂家@工地冲孔建筑爬架网片生产厂家-安平县诺德金属制品有限公司 | 男装加盟,男装加盟店,男装代理,男装品牌加盟,品牌男装加盟-虎豹男装品牌加盟 | 锯骨机-砍排机-全自动锯骨机-商用砍排机-切丁机 - 广州市九盈机械设备有限公司 | 廊坊纳科新材料技术有限公司--纳科新材料技术有限公司|廊坊纳科新材料|纳科新材料技术 | 漫画大全免费看_漫画终身版_羞羞漫画网| 葫芦岛市鹏翔农药化工科技有限公司-苦参碱可溶液剂-氯氰菊酯乳油-阿维菌素乳油 |