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×tamp=$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是一个非常强大的工具,可以协助开发者更快速的开发和集成各种支付功能。同时,它也提供了很多自定义功能和扩展,使得开发者可以自由创造满足业务需求的支付方案。