php微信小程序支付讲解(JSAPI)

在早起的某篇文章中我们已经简单介绍了小程序支付,
这里我们在这篇文章中详细的介绍一个微信小程序支付,
顺便附带小程序端的部分支付代码。

微信小程序支付文档地址(微信小程序支付
微信完整支付类下载地址(不定期修改完善 GiteeGitHub):
支付类介绍文章 76、php微信支付类传参直接使用(扫码、H5、小程序)
冯奎博客 一、在微信小程序支付之前我们先要获取相关配置

$config = array(
    'appid'         => '', // 微信支付appid
    'xcxappid'      => '', // 微信小程序appid(填写)
    'mch_id'        => '', // 微信支付 mch_id 商户收款账号(填写)
    'key'           => '', // 微信支付key(填写)
    'appsecret'     => '', // 公众帐号secert(公众号支付专用)
    'notify_url'    => '', // 接收支付状态的连接  改成自己的回调地址(填写)
    'redirect_uri'  => '', // 公众号支付时,没有code,获取openid使用
);

二、如何使用对接支付

<?php
include './WeixinPay.php';
$get = $_GET;

$weixinpay = new \feng\WeixinPay($config);
$order_sn = time().rand(1000,9999);
$order = array(
    'body'          => '测试商品', // 产品描述
    'total_fee'     => '1', // 订单金额(分)
    'out_trade_no'  => $order_sn, // 订单编号
    'product_id'    => $order_sn, // 产品id(可用订单编号)
    'openid'        => $get['openid'], // 用户openid
);

$re = $weixinpay->xcxPay($order);
die(json_encode($re)); // JSON化直接返回小程序客户端

微信用户openid获取见(微信小程序获取Openid

三、支付回调

<?php
include './WeixinPay.php';
$weixinpay = new \feng\WeixinPay($config);

$re = $weixinpay->notify();
if ($re) {
    // 以验证返回支付成功后的信息,可直接对订单进行操作,已通知微信支付成功
} else {
    // 支付失败
}

四、小程序端相关代码 index.wxml文件支付按钮:

<view class="f_button">
  <button open-type="getUserInfo" bindtap="pay"> 支付0.01元 </button>
</view>

index.js支付函数:

pay: function () {
  wx.request({
    url: "http://ceshi.test/xcxpay.php", // 地址根据自己的修改
    method: "GET",
    data: { openid: '用户openid' },
    complete: function (res) {
      console.log(res.data.data);
      var wdata = res.data.data;
      if (res.data.data) {
        wx.showModal({
          title: '支付',
          content: '是否支付0.01进行测试',
          success(res) {
            if (res.confirm) {
              var timeStamp = wdata.timeStamp + "";
              var nonceStr = wdata.nonceStr + "";
              var package1 = wdata.package;
              var sign = wdata.paySign;
              wx.requestPayment({
                'nonceStr': nonceStr,
                'package': package1,
                'signType': 'MD5',
                'timeStamp': timeStamp,
                'paySign': sign,
                'success': function (res) {
                  wx.showToast({
                    title: '支付成功',
                    icon: 'success',
                    duration: 2000,
                  });
                },
                'fail': function (res) {
                  wx.showToast({
                    title: '支付失败',
                    icon: 'none',
                    duration: 2000
                  })
                }
              })
            } else if (res.cancel) {
              console.log('用户点击取消')
            }
          }
        })
      }
    }
  })
},

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论