小程序微信支付 + thinkPHP5.X(从0开始)

php服务端+小程序支付

第一步:先下载微信支付SDK与DEMO。下载链接:http://thinkphp.cn//code/download/id/3259.html    下载 Wxpay.rar

第二步:将下载的支付SDK与DEMO进行解压,然后打开这个解压后的文件夹。放到根目录 extend/ 下

小程序微信支付 + thinkPHP5.X(从0开始)_第1张图片

第三步,从商家中心下载证书到本地放到  extend/cert 文件夹里面。

商家中心路径:(注意需要下载安全插件,且只能在IE模式登录!)

具体路径为:登录进去到商家中心后,登录微信支付商户平台,点击【账户中心】->【账户设置】->【API安全】->【下载证书】中

小程序微信支付 + thinkPHP5.X(从0开始)_第2张图片

下载证书完成后,记得顺便设置密钥!!密钥要求:需要字母+数字一起32位数!!为的是认真和安全。

这个密钥等下需要在WxPay.Config.php里面配置支付。

第四步:配置支付信息    打开WxPay.Config.php

小程序微信支付 + thinkPHP5.X(从0开始)_第3张图片

第五步:  小程序发起支付请求

  1 , 小程序端代码

/** * 发起支付 */

formSubmit: function(e) {

        var that = this;

        const objData = e.detail.value;//表单传来的值

        wx.login({

            //获取code   并传到服务器获取 openid  发起支付

            success: function (res) {

                var code = res.code //返回code

                wx.request({

                        url: 'https://xxxxx.com/Wxpay',

                        data: {

                                code: code,

                                cost: 2, //传给服务器的支付金额

                            },

            header: { 'content-type': 'application/x-www-form-urlencoded' // 默认值 }, method: 'POST', success: function (res) { console.log(res.data); var test = res.data; var orderid = test.prepay_id; var timeStamp = (Date.parse(new Date()) / 1000).toString(); var nonceStr = test.nonce_str; var pkg = 'prepay_id=' + test.prepay_id; var paySign = md5.hexMD5('appId=' + test.appid + '&nonceStr=' + nonceStr + '&package=' + pkg + '&signType=MD5&timeStamp=' + timeStamp + "&key=6418f2d518xxxxa25d20xxxxxxb3c").toUpperCase(); wx.requestPayment({ 'timeStamp': timeStamp, 'nonceStr': nonceStr, 'package': pkg, 'signType': 'MD5', 'paySign': paySign, 'success': function (res) { console.log('付款成功'); }, 'fail': function (res) { console.log('付款失败); } }) } }); } }) },


注  :  不支持格式; 大家全部粘贴到小程序就会自动格式化了,谅解一下,为了节省地方

    2.php服务端代码 (不支持格式,复制到编辑器即可)

namespace app\miniApps\controller;

use think\Controller;

use think\Db;

use think\Loader;

Loader::import('WxPay.WxPay', EXTEND_PATH, '.Api.php');//将附件放入根目录下的/extend

class Wxpay extends Controller {

        function index() {

                $res = $_POST; $cost = $res['cost']; //订单金额

                $code = $res['code']; //用户code

                $total_fee = $res['cost'];

                $appid = 'wxbadxxxxx40f06';

                $secret = '6418xxxxxxxxxxxxd36580b3c';

                $url='https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='. $secret.'&js_code='.$code.'&grant_type=authorization_code';

                $openid1 = file_get_contents($url);

                $openid = json_decode($openid1,true)['openid'];

            //订单号

                $order=rand(10000,99999).time();

                $money=$cost*100;

                // 初始化值对象

                 $input = new \WxPayUnifiedOrder(); 

                $input->SetBody("测试");   // 文档提及的参数规范:商家名称-销售商品类目

                $input->SetOut_trade_no("$order");    // 订单号应该是由小程序端传给服务端的,在用户下单时即生成

               $input->SetTotal_fee("$money");    // 费用应该是由小程序端传给服务端的,1,即1分钱 

                $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");

                $input->SetTrade_type("JSAPI"); 

                 $input->SetOpenid("$openid");    //上边已经手动获取到了

                   $order = \WxPayApi::unifiedOrder($input); 

                    header("Content-Type: application/json");   // json化返回给小程序端

                    echo json_encode($order);  // 向微信统一下单,并返回order,它是一个array数组

        }

}

第六步:完成上面的步骤,微信支付调用即可完成!!!

祝大家技术进步!!!

你可能感兴趣的:(小程序微信支付 + thinkPHP5.X(从0开始))