微信小程序支付 tp5

小程序+5.0.X微信支付
1.获取openid
由于小程序只能授权一个域名,所以获取openid接口写在后端

服务器端:

            $url="https://api.weixin.qq.com/sns/jscode2session?appid=".你的appid."&secret=".你的公众号密钥."&js_code=".调登陆接口返回的code."&grant_type=authorization_code";
            $html = file_get_contents($url);//或者curl
            echo $html;//将获取到的数据传给小程序

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=1*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");//url回调地址
                $input->SetTrade_type("JSAPI");
                //     由小程序端传给服务端
                $input->SetOpenid(openid);//openid
                //     向微信统一下单,并返回order,它是一个array数组
                $order = \WxPayApi::unifiedOrder($input);
                //     json化返回给小程序端
                header("Content-Type: application/json");
                echo json_encode($order);
            }
}

小程序端

wx.request({
      
        url:后台地址 ,
        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) {
               //支付成功之后的操作
           
              }
            });
         }
})

附件地址:https://download.csdn.net/download/php12345679/10328991

将5个.php文件放入extend文件   把WxPay.Config.php里的配置信息改成自己的

把md5.js放到小程序utils文件夹下 并在调用支付的js文件开头用如下方式引入

var md5 = require('../../utils/md5.js')  

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值