微信小程式支付(2) tp5
阿新 • • 發佈:2019-02-15
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資源不能刪除所以改不了 請諒解。
支付類地址
完成!
支付寶支付和微信支付非同步回撥一直呼叫的解決方案