1. 程式人生 > >微信小程式支付(2) tp5

微信小程式支付(2) tp5

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資源不能刪除所以改不了 請諒解。
支付類地址
完成!
支付寶支付和微信支付非同步回撥一直呼叫的解決方案