微信小程序支付(2) tp5

本文介绍了如何在ThinkPHP5(TP5)框架中处理微信小程序的支付回调。首先,将支付类放入extend文件夹,然后在控制器添加支付回调方法,此方法会在支付成功后由微信自动调用。接着,讲解了写入common.php文件的方法来接收和处理回调参数。最后,提到了小程序端的相应代码,并提到作者已测试通过。

1.将类放到tp5的extend文件夹下
2.在控制器里加以下代码

namespace app\api\controller;
use think\Controller;
use think\Session;
use think\Cache;
use think\Request;
use think\Db;

class Pay extends Controller
{
    public function pay_api()
    {
        import('wxpay', EXTEND_PATH);
        $PaynArr = new \WeixinPay('你的小程序appid','你的openid','商户号','商户平台操作Api密钥','下单时生成的订单号','支付标题(例如:拼团)',金额);
         $pay =  $PaynArr->pay();
          return json_encode($pay);
    }
}

支付回调方法
(注意,注意,注意)这个方法不用自己在小程序调用,支付成功后微信会自动异步去返回你这个接口参数,你只要在这个接口里写好接参和后续对数据库的操作就好

<?php
/**
 * 支付回调(注意回调信息是打印不出来的,只能写入文件来判断是否回调信息返回成功)就是微信小程序支付参数通知地址就写这个方法的地址
 */
namespace app\api\controller;
use think\Controller;
use think\Session;
use think\Cache;
use think\Request;
use think\Db;
class Notify extends Controller
{
     public function notify_api()
     {
        $postXml = file_get_contents("php://input"); //接收微信返回的xml数据
        $attr = xml_to_array($postXml);//获取到返回的信息(将微信返回的xml数据转成数组)
       foreach((array)$attr as $k=>$v){
        file_put_contents('minaNotify.txt',"$k:$v----",FILE_APPEND);
            }
       后续是操作数据库的动作
       操作数据库成功返回
       echo exit('<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>');
       防止微信一直回调这个方法

     }
}

写入common.php 文件的方法

/**
     * 将xml转为array
     *
     * return array
     */
    function xml_to_array($xml){
        //将XML转为array
        //禁止引用外部xml实体
       libxml_disable_entity_loader(true);
       $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);   
       $val = json_decode(json_encode($xmlstring), true);
       return $val;
    }

3.小程序代码

group:function()
  {
    wx.request({
      url: '后台地址',
      data: '',
      header: { 'content-type': 'application/json'},
      method: 'GET',
      dataType: 'json',

      success: function(res) {
        console.log(res.data);
        wx.requestPayment({
          timeStamp: res.data.timeStamp,
          nonceStr:res.data.nonceStr,
          package: res.data.package,
          signType: res.data.signType,
          paySign: res.data.paySign,
        })
      },
      fail: function(res) {},
      complete: function(res) {},
    })
  }

后续自己处理。。。
虽然我的资源写的没有实际测试过,但请各位放心下载,我已经测试过了,CSDN资源不能删除所以改不了 请谅解。
支付类地址
完成!
支付宝支付和微信支付异步回调一直调用的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值