TP5/5.1 小程序支付跨坑记录。

            //引用官方SDK,放置位置详见下面地址
            require_once '../extend/wxpay/lib/WxPay.Api.php';
            require_once '../extend/wxpay/example/WxPay.Config.php';//在里面配置好参数!!!
            $openId = db('users')->where('id', $userid)->value('openid');
            $order = $goods['order_number'];//这里我写的是订单号
            $money = $goods['total'] * 100;
            $config = new \WxPayConfig();
            //初始化值对象
            $input = new \WxPayUnifiedOrder();
            //文档提及的参数规范:商家名称-销售商品类目
            $input->SetBody("商家名称");
            //订单号应该是由小程序端传给服务端的,在用户下单时即生成,demo中取值是一个生成的时间戳
            $input->SetOut_trade_no("$order");
            $input->SetTime_start(date("YmdHis"));
            $input->SetTime_expire(date("YmdHis", time() + 600));
            //费用应该是由小程序端传给服务端的,在用户下单时告知服务端应付金额,
            $input->SetTotal_fee("$money");
            $input->SetNotify_url("回调地址自己写!!!");
            $input->SetTrade_type("JSAPI");
            //由小程序端传给服务端
            $input->SetOpenid($openId);//APPID小程序传过来 或者数据库读取。
            //向微信统一下单,并返回order,它是一个array数组
            $order = \WxPayApi::unifiedOrder($config, $input);

            if ($order['return_code'] == 'SUCCESS') {
                $info = array(
                    'appId' => $order['appid'],
                    'timeStamp' => "" . time() . "",
                    'nonceStr' => $order['nonce_str'],
                    'package' => 'prepay_id=' . $order['prepay_id'],
                    'signType' => 'MD5',
                );
                $info['paySign'] = $this->sign($info);//验签!!关键!!!!!!
                // json化返回给小程序端
                // header("Content-Type: application/json");
                return json($info);
            } else {
                return json(['msg' => 'fail']);
            }

关键!!!验签方法!! 

    public function sign($data, $key = '这里是支付APIKEY,必填!!!')
    {
        ksort($data);
        $buff = '';
        foreach ($data as $k => $v) {
            if ($k != "sign" && $v != "" && !is_array($v)) {
                $buff .= $k . "=" . $v . "&";
            }
        }
        $buff = trim($buff, "&");
        $string = $buff . "&key=" . $key;
        $string = md5($string);
        $sign = strtoupper($string);
        return $sign;
    }

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值