该系列接口,支持微信v2
、v3
版本切换。
$obj = new \wechat\Wechat();
$_this = $obj->pay()->v2()->payment();
除了在配置文件中设置默认回调地址外,SDK还支持挑起一键下单时,调用notify_url()
方法进行设置。
$obj = new \wechat\Wechat();
// 手动设置回调地址
$_this = $obj->pay()->v2()->payment()->notify_url('回调地址');
方法名:jsapi()
参数:
string $openid
float $money
string $order_sn
string $body
订单支付
array $more
array_merge()
到一起提交[]
使用示例:
$obj = new \wechat\Wechat();
// 一键下单,同时设置回调地址
$array = $obj->pay()->v2()->payment()->notify_url('https://www.baidu.com')->jsapi('orUXq0MrtQR8UUKU6WsSjJiTA718', 0.01, 'ts000000001');
返回值示例:
array(7) {
["appId"] => string(18) "wxa425*****"
["timeStamp"] => string(10) "1645616782"
["nonceStr"] => string(15) "323011645616782"
["signType"] => string(3) "MD5"
["package"] => string(46) "prepay_id=wx23194622354633907*****ec0480000"
["paySign"] => string(32) "1120ADA580119D7A0*****5B921EF6D9B"
["prepay_id"] => string(36) "wx231946223546339*****3474bec0480000"
}
方法名:web()
参数:
float $money
string $order_sn
string $body
订单支付
array $more
array_merge()
到一起提交[]
使用示例:
$obj = new \wechat\Wechat();
// 一键下单,同时设置回调地址
$array = $obj->pay()->v2()->payment()->notify_url('https://www.baidu.com')->web(0.01, 'ts000000002');
返回值示例:
array(2) {
["prepay_id"] => string(36) "wx231947380449***37cff7b0000"
["h5_pay_url"] => string(117) "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx23194738044905cd0dbad9637cff7b0000&package=326350533"
}
方法名:app()
参数:
float $money
string $order_sn
string $body
订单支付
array $more
array_merge()
到一起提交[]
使用示例:
$obj = new \wechat\Wechat();
// 一键下单,同时设置回调地址
$array = $obj->pay()->v2()->payment()->notify_url('https://www.baidu.com')->app(0.01, 'ts000000003');
返回值示例:
array(7) {
["prepayid"] => string(36) "wx231953517649***4ce33fca6d70000"
["appid"] => string(18) "wxa42***e07fe815"
["partnerid"] => string(10) "1519979761"
["package"] => string(10) "Sign=WXPay"
["noncestr"] => string(15) "109741645617231"
["timestamp"] => string(10) "1645617231"
["sign"] => string(32) "403CAE63F7A204***131645E3FBAF"
}
方法名:qrcode()
参数:
float $money
string $order_sn
string $product_id
array $more
array_merge()
到一起提交[]
使用示例:
$obj = new \wechat\Wechat();
// 一键下单,同时设置回调地址
$array = $obj->pay()->v2()->payment()->notify_url('https://www.baidu.com')->qrcode(0.01, 'ts000000004', 1001);
返回值示例:
array(1) {
["code_url"] => string(169) "weixin://wxpay/bizpayurl?appid=wxa425*****815&mch_id=15**********61&nonce_str=4825*****17343&product_id=1001&time_stamp=1645617343&sign=4F2ED3B7*****5A09FEBDC"
}
方法名:qrcode2()
参数:
float $money
string $order_sn
string $body
订单支付
array $more
array_merge()
到一起提交[]
使用示例:
$obj = new \wechat\Wechat();
// 一键下单,同时设置回调地址
$array = $obj->pay()->v2()->payment()->notify_url('https://www.baidu.com')->qrcode2(0.01, 'ts000000005');
返回值示例:
array(2) {
["prepay_id"] => string(36) "wx23195740475******d0b7bf03931b90000"
["code_url"] => string(37) "weixin://wxpay/bizpayurl?pr=bm18Vwrzz"
}
用于把付款码模式一的支付地址,转换成短链接,减少二维码的数据量。
方法名:shorturl()
参数:
str $url
使用示例:
$Wechat = new \wechat\Wechat();
// 获得SDK实例
$obj = $obj->pay()->v2()->payment();
// 付款码,模式一
$res = $obj->qrcode(0.01, 'ts000000006', 1001);
if (\x\common\Type::array($res) == false) {
echo $res;
} else {
// 短链接转换
$res = $obj->shorturl($res['code_url']);
if (\x\common\Type::array($res) == false) {
echo $res;
} else {
var_dump($res);
}
}
返回值示例:
array(1) {
["short_url"] => string(37) "weixin://wxpay/bizpayurl?pr=MA*****W00"
}
一键下单的所有相关方法,当返回值都为array
类型时,表示订单创建成功,失败时返回值为微信MSG内容。
例如,下面的判断方式:
$obj = new \wechat\Wechat();
$res = $obj->pay()->v2()->payment()->jsapi('orUXq0MrtQR8UUKU6WsSjJiTA718', 0.01, 'ts000000001');
// 判断成功
if (\x\common\Type::array($res)) {
var_dump($res);
} else {
// 失败
echo $res;
}
方法名:verify()
参数:
xml|array $param
xml
或array
格式使用示例:
$xml = '<xml><appid><![CDATA[wxa4251****e07fe815]]></appid>
<bank_type><![CDATA[OTHERS]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[15****1]]></mch_id>
<nonce_str><![CDATA[509561594105736]]></nonce_str>
<openid><![CDATA[orUXq0JX7VWs7Dqi-gGE0x1TfPtg]]></openid>
<out_trade_no><![CDATA[1988********85681]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[C14288D0****767137707757D]]></sign>
<time_end><![CDATA[20200707150905]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[4200000613******226615]]></transaction_id>
</xml>';
$obj = new \wechat\Wechat();
$str = $obj->pay()->v2()->payment()->verify($xml);
返回值示例:
// 校验失败
<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[ERROR]]></return_msg></xml>
// 校验通过
true
提示:当校验不通过时,该方法是直接返回了微信需要抛出的FAIL
XML字符串,校验通过则返回true
。
方法名:success()
参数:无
使用示例:
$obj = new \wechat\Wechat();
$str = $obj->pay()->v2()->payment()->success();
返回值示例:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>
$Wechat = new \wechat\Wechat();
// 获得SDK实例
$obj = $obj->pay()->v2()->payment();
// 获得微信回调内容
$param = \x\Request::raw();
// 验签
$vif = $obj->verify($param);
if ($vif === true) {
// 验签成功,抛出SUCCESS-XML给微信
return $this->fetch($obj->success());
} else {
// 验签失败,抛出XML给微信
return $this->fetch($vif);
}