一、获得支付权限
二、配置授权页面
三、配置支付授权页面
四、详细流程
点击《确认下单》去生成订单,然后跳到确认支付页面。
《确认下单》访问的控制器:
<?php namespace App\Http\Controllers\home;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Overtrue\Wechat\Payment;
use Overtrue\Wechat\Payment\Business;
use \Overtrue\Wechat\Payment\Order as WxOrder;
use Overtrue\Wechat\Payment\UnifiedOrder;
class ShopController extends Controller {
/**
* @生成订单方法。
*/
public function create(){
//先订单入库处理
//.......
//然后渲染支付页面
return view('done',['payconfig'=>$this->pay()]);
}
public function pay(){
//1、做一个交易对象
$business=new Business('APP_ID','APP_SECRET','商户id','商户支付key');
//2、做一个订单对象
$order=new WxOrder();
$order->body='test body';
$order->out_trade_no='订单号';
//单位为"分",字符串类型
$order->total_fee='金额';
$order->openid='客户端的openid';
//此 url 做修改订单状态操作,记得要关闭 csrf
$order->notify_url='支付成功的回调 url';
//3、统一下单
$unifiedOrder=new UnifiedOrder($business,$order);
//4、生成支付配置文件
$payment= new Payment($unifiedOrder);
//5、生成支付的 js 对象
return $payment->getConfig();
}
}
《支付按钮》是在 done.blade.php 页面,代码如下:
<input type='button' value='立即支付' onclick='WXPayment();' />
<script>
function WXPayment() {
if( typeof WeixinJSBridge === 'undefined' ) {
alert('请在微信在打开页面!');
return false;
}
WeixinJSBridge.invoke('getBrandWCPayRequest', {!!$payconfig!!},function(res){
switch(res.err_msg) {
case 'get_brand_wcpay_request:cancel':
alert('用户取消支付!');
break;
case 'get_brand_wcpay_request:fail':
alert('支付失败!('+res.err_desc+')');
break;
case 'get_brand_wcpay_request:ok':
alert('支付成功!');
break;
default:
alert(JSON.stringify(res));
break;
}
}
);
}
</script>
支付成功后会跳转到回调页面,回调页面可以作修改订单状态等处理。