微信服务号+支付+php,在Thinkphp中微信公众号JsApi支付

由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧。直接进入正题

进入公众号(服务号)设置--->功能设置--->网页授权域名配置好需要进行支付的页面,支持配置根目录。这一步是为了获取用户的openid。

4d6c8f335a6f8af43ee083fcbc9698b5.png

进入微信商户平台(pay.weixin.qq.com)设置JSAPI支付支付目录,设置路径:商户平台-->产品中心-->开发配置。配置好之后便可以开始着手进行开发,当你看到官方文档的业务流程当中的业务流程时序图的时候,我相信你是一脸懵逼,腾讯的什么都好,就开发文档容易让人给看晕,不过已经算方便了。

由于之前写得一个功能,在用户点击进入页面的时候已经获取用户的信息,并存入到session中,因此下面的代码中的openid直接从session获取。

2a9ee2afa22d80f8bc5a70f9371f4e97.png

核心代码便是lib文件夹下的类库,example中有官方demo,可以直接进行改写。

文件已经引入,着手实现支付功能,在控制器写index方法

1 public functionindex()2 {3

4 if(IS_POST) {5

12 include(ROOT_PATH.'extend/Wxpay/lib/WxPay.Api.php');13 include(ROOT_PATH.'extend/Wxpay/example/WxPay.JsApiPay.php');14 //include(ROOT_PATH.'extend/Wxpay/example/WxPay.config.php');

15 include(ROOT_PATH.'extend/Wxpay/example/log.php');16

17 try{18 $tools = new\JsApiPay();19 $openId = session('openid');//这里是之前获取到的openid并存入session,直接从session获取,否则为以下两句

20

21 /*$tools = new JsApiPay();22 $openId = $tools->GetOpenid();*/

23 //②、统一下单

24 $input = new\WxPayUnifiedOrder();25 $input->SetBody("在线支付");26 $input->SetAttach("在线支付");27 $input->SetOut_trade_no($data["orderid"]);28 $input->SetTotal_fee($data["pricetotal"]*100);29 $input->SetTime_start(date("YmdHis"));30 $input->SetTime_expire(date("YmdHis", time() + 600));31 $input->SetGoods_tag("test");32 $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';33 //echo $http_type . $_SERVER['HTTP_HOST'];

34 $input->SetNotify_url($http_type . $_SERVER['HTTP_HOST']."/index.php/Payoff/Wxpay/notifyurl.html");//notify是接收异步通知的页面,可以进行业务逻辑处理35 $input->SetTrade_type("JSAPI");36 $input->SetOpenid($openId);37 $config = new\WxPayConfig();38 $order = \WxPayApi::unifiedOrder($config, $input);39 $jsApiParameters = $tools->GetJsApiParameters($order);40

41 //获取共享收货地址js函数参数

42 $editAddress = $tools->GetEditAddressParameters();43 } catch(Exception $e) {44 Log::ERROR(json_encode($e));45 }46 $this->assign('data', $data);47 $this->assign('jsApi', $jsApiParameters);48 $this->display();49 }50 else

51 {52 E("Access Denied");53 }54

55

56 }

在视图文件中根据自己需要,下面随便写的demo

订单号:{$data['orderid']}
金额:{$data['pricetotal']} 元

立即支付

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值