在這篇微信公眾平臺(tái)開(kāi)發(fā)教程中,我們將介紹如何開(kāi)發(fā)實(shí)現(xiàn)微信支付的全網(wǎng)發(fā)布功能。
全網(wǎng)發(fā)布是指微信支付后臺(tái)最后一步中的維權(quán)功能、告警接口、發(fā)貨接口的檢測(cè)發(fā)布。

本文分為以下三個(gè)部分:
微信支付目錄設(shè)置
發(fā)貨接口的調(diào)通
維權(quán)接口與告警接口的調(diào)通
一、微信支付目錄設(shè)置
微信支付URL的設(shè)置和調(diào)通微信支付休戚相關(guān)。這里我們使用的幾個(gè)URL設(shè)置如下:
支付測(cè)試URL:http://www.fangbei.org/wxpay/jsapi/index.php
交易通知URL:http://www.fangbei.org/wxpay/notify/index.php
維權(quán)通知URL:http://www.fangbei.org/wxpay/rights/index.php
告警通知URL:http://www.fangbei.org/wxpay/alarm/index.php
?
二、發(fā)貨接口的調(diào)通
調(diào)通發(fā)貨接口之前,需要用戶(hù)已經(jīng)有一次交易才能發(fā)送,所以先完成一次jsapi支付,其代碼如下,
<?php
include_once("WxPayHelper.php");
$commonUtil = new CommonUtil();
$wxPayHelper = new WxPayHelper();
$wxPayHelper->setParameter("bank_type", "WX");
$wxPayHelper->setParameter("body", "方倍微信支付測(cè)試");
$wxPayHelper->setParameter("partner", PARTNERID);
$wxPayHelper->setParameter("out_trade_no", $commonUtil->create_noncestr());
$wxPayHelper->setParameter("total_fee", "1");
$wxPayHelper->setParameter("fee_type", "1");
$wxPayHelper->setParameter("notify_url", "http://www.fangbei.org/wxpay/notify/index.php");
$wxPayHelper->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);
$wxPayHelper->setParameter("input_charset", "GBK");
$biz_package=$wxPayHelper->create_biz_package();
?>
<html>
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
<script language="javascript">
function callpay()
{
WeixinJSBridge.invoke('getBrandWCPayRequest',<?php echo $biz_package;?>,function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
});
}
</script>
<body>
<button type="button" onclick="callpay()">方倍微信支付測(cè)試</button>
</body>
</html>
當(dāng)上述交易完成之后,會(huì)向交易通知接口回調(diào)URL并帶上參數(shù),如下
http://www.fangbei.org/wxpay/notify/index.php?discount=0&fee_type=1&input_charset=GBK¬ify_id=aCi-cg4m1nr2bbg-De-MK6hQum8XVsw4mYfYnD5umAiEm_J6P_MalPvOisl2NJdurzTW-TJ9IPcnKmZm5TpKjrc8bXT6PEe0&out_trade_no=5DlIL2s5DGR8147c&partner=1219951701&product_fee=1&sign=A7AEF7AE3B70C54C3C0FF642DD2E2004&sign_type=MD5&time_end=20140808185647&total_fee=1&trade_mode=1&trade_state=0&transaction_id=1219951701201408083366666764&transport_fee=0
同時(shí)POST發(fā)送了以下XML數(shù)據(jù)
<xml>
<OpenId><![CDATA[ocIywt7h42MwHxXx23sJdBpBV7Q8]]></OpenId>
<AppId><![CDATA[wxa8826d0c0c0b6d6a]]></AppId>
<IsSubscribe>1</IsSubscribe>
<TimeStamp>1407495408</TimeStamp>
<NonceStr><![CDATA[D6iywdqlcdUj8nDQ]]></NonceStr>
<AppSignature><![CDATA[a99a3cb4f5377dc30cca3f7b362412d7e468e0f4]]></AppSignature>
<SignMethod><![CDATA[sha1]]></SignMethod>
</xml>
取出url中的
transaction_id=1219951701201408083366666764
out_trade_no=5DlIL2s5DGR8147c
及xml中的
<OpenId><![CDATA[ocIywt7h42MwHxXx23sJdBpBV7Q8]]></OpenId>
將上述3樣參數(shù)值填充到發(fā)貨接口中,代碼可參考 微信支付開(kāi)發(fā)發(fā)貨通知
運(yùn)行一次,就調(diào)通了發(fā)貨通知接口。
三、維權(quán)接口與告警接口的調(diào)通
維權(quán)接口與告警接口的調(diào)通非常簡(jiǎn)單,因?yàn)楣俜街恍枰邮盏接许憫?yīng)。所以都直接在相應(yīng)的index.php中返回success,代碼如下:
<?php
echo "success";
?>
四、效果圖
上述3個(gè)接口調(diào)通以后,就可以全網(wǎng)發(fā)布了。效果如下

更多微信支付開(kāi)發(fā)全網(wǎng)發(fā)布相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!