从0开始TP5+小程序微信支付

浏览:624 发布日期:2017/06/19 分类:功能实现 关键字: 小程序 微信支付 TP5支付
小程序+5.0.X微信支付
1.获取openid
由于小程序只能授权一个域名,所以获取openid接口写在后端
服务器端:        $url="https://api.weixin.qq.com/sns/jscode2session?appid=".$_GET['appid']."&secret=".$_GET['secret']."&js_code=".$_GET['code']."&grant_type=authorization_code";
        $html = file_get_contents($url);
        echo $html;//将获取到的数据传给小程序
小程序端:  //调用登录接口
    wx.login({
      success: function (res) {
        //该方法获取到code
        //将code及小程序appId、secret发送给服后端
        wx.request({
          url: 'URL?appid=' + appId + "&secret=" + secret + "&code=" + res.code,
          success: function (r) {
            //r.data取到openid
            //openid获取到了存储起来
          }
        })
      }
    })
2.发起支付
服务器端:
此代码参考慕课网七月讲师的代码<?php 
namespace app\api\controller;
use think\Controller;
use think\Loader;
Loader::import('WxPay.WxPay', EXTEND_PATH, '.Api.php');//将附件放入根目录下的/extend
class Wxpay extends Controller
{
        function index() {
            //订单号
             $order=订单号;
             $money=$_GET['money']*100;
            //     初始化值对象
            $input = new \WxPayUnifiedOrder();
            //     文档提及的参数规范:商家名称-销售商品类目
            $input->SetBody("点餐");
            //     订单号应该是由小程序端传给服务端的,在用户下单时即生成,demo中取值是一个生成的时间戳
            $input->SetOut_trade_no("$order");
            //     费用应该是由小程序端传给服务端的,在用户下单时告知服务端应付金额,demo中取值是1,即1分钱
            $input->SetTotal_fee("$money");
            $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
            $input->SetTrade_type("JSAPI");
            //     由小程序端传给服务端
            $input->SetOpenid(input('openid'));
            //     向微信统一下单,并返回order,它是一个array数组
            $order = \WxPayApi::unifiedOrder($input);
            //     json化返回给小程序端
            header("Content-Type: application/json");
            echo json_encode($order);
        }
小程序端 wx.request({
      
        url: app.config.url + "wxpay?openid=" + this.data.openid + "&bus=" + app.config.bus + "&user=" + this.data.user +"&money="+this.data.money,
        success: function (response){
            var timeStamp = (Date.parse(new Date()) / 1000).toString();
            var pkg = 'prepay_id=' + response.data.prepay_id;
            var nonceStr = response.data.nonce_str;
            var paySign = md5.hexMD5('appId=' + 小程序appId + '&nonceStr=' + nonceStr + '&package=' + pkg + '&signType=MD5&timeStamp=' + timeStamp + "&key=微信支付key").toUpperCase();//此处用到hexMD5插件
            //发起支付
wx.requestPayment({
              'timeStamp': timeStamp,
              'nonceStr': nonceStr,
              'package': pkg,
              'signType': 'MD5',
              'paySign': paySign,
              'success': function (res) {
               //支付成功之后的操作
           
              }
            });

         }
})
支付完毕

由于程序商用性,无法开放源代码,有疑问可联系QQ:767777453

附件 Wxpay.rar ( 13.04 KB 下载:10 次 )

评论( 相关
后面还有条评论,点击查看>>