淘先锋技术网

首页 1 2 3 4 5 6 7

PHP Unifiedorder作为一个强大的工具,可以帮助开发者简化支付流程并提供便利性。该工具不仅可以让开发者快速进行付款,还可以实现各种自定义功能和扩展。

//PHP中使用Unifiedorder
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$xml = '<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id>10000100</mch_id>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content = curl_exec($ch);
curl_close($ch);

开发者使用Unifiedorder可以轻松地向用户请求支付,无需复杂的支付流程。例如,如果开发者想要自定义微信支付界面,只需要将调用系统默认支付界面的代码注释掉即可,同时添加一个自定义页面,实现自己的支付方案。

//自定义支付界面
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$xml = '<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id>10000100</mch_id>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content = curl_exec($ch);
curl_close($ch);
$result = simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);
if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {
$prepay_id = $result->prepay_id;
$timeStamp = time();
$nonceStr = sha1($timeStamp);
$appId = 'wx05231447835fa8c9';
$signature = sha1("jsapi_ticket=789afgkasdfg$&noncestr=$nonceStr&timestamp=$timeStamp\
&url=" . $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
?>
<script type="text/javascript">
wx.config({
debug: false,
appId: '<?php echo $appId; ?>',
timestamp: <?php echo $timeStamp; ?>,
nonceStr: '<?php echo $nonceStr; ?>',
signature: '<?php echo $signature; ?>',
jsApiList: ['chooseWXPay']
});
wx.chooseWXPay({
appId: '<?php echo $appId; ?>',
timestamp: <?php echo $timeStamp; ?>,
nonceStr: '<?php echo $nonceStr; ?>',
package: 'prepay_id=<?php echo $prepay_id; ?>',
signType: 'MD5',
paySign: '<?php echo $paySign2; ?>',
success:function(){
alert('支付成功');
}
});
</script>
<?php
}

此外,开发者可以在实际项目中通过调用Unifiedorder'后,运用回调函数实现自己的业务需求。例如,当某个用户完成支付后,系统会通过回调函数通知开发者,此时开发者可以在回调函数中进行对用户信息的修改操作。这种方式完美的完成了支付业务与更新用户信的联动操作,提升用户体验。

//回调函数
public function notifyUrl(Request $request) 
{
//获取微信支付返回的xml格式数据
$data = file_get_contents('php://input');
//将xml数据转换为对象
$obj = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
//获取订单号
$out_trade_no = $obj->out_trade_no;
//根据订单号修改用户信息以及订单状态等操作
//TODO:可根据自己的业务需求进行扩展
}

总的来说,PHP Unifiedorder是一个非常强大的工具,可以协助开发者更快速的开发和集成各种支付功能。同时,它也提供了很多自定义功能和扩展,使得开发者可以自由创造满足业务需求的支付方案。