使用laravel-wechat包开发微信jssdk支付
1、在Laravel中如何安装EasyWeChat包在此不做介绍,请看官方文档即可
https://github.com/overtrue/laravel-wechat
2、更改配置文件 config/wechat.php 正确填写所需要的配置信息
/*
* 微信支付
*/
'payment' => [
'sandbox' => env('WECHAT_PAYMENT_SANDBOX', false),
'app_id' => env('WECHAT_PAYMENT_APPID', ''),
'mch_id' => env('WECHAT_PAYMENT_MCH_ID', ''),
'key' => env('WECHAT_PAYMENT_KEY', ''),
//'cert_path' => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'), // XXX: 绝对路径!!!!
//'key_path' => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'), // XXX: 绝对路径!!!!
'notify_url' => 'http://xxx.net/wechat2/pay_notify', // 默认支付结果通知地址
// ...
],
3、开始代码实现
use EasyWeChat\Factory;
$options = config('wechat.payment');
$app = Factory::payment($options);
$out_trade_no = 'T'.get_order_code();
$result = $app->order->unify([
'body' => '支付订单',
'out_trade_no' => $out_trade_no,
'total_fee' => 1, //单位 分
//'spbill_create_ip' => '123.12.12.123', // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
//'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI',
'openid' => 'o2xFAw7K6g1yHtZ-MvYFX2gYRzpI',
]);
if($result['result_code'] === 'SUCCESS')
{
$prepayId = $result['prepay_id'];
$jssdk = $app->jssdk;
$json = $jssdk->bridgeConfig($prepayId);
return view('wechat.index.pay',compact('json','out_trade_no'));
}
4、html中实现
WeixinJSBridge.invoke(
'getBrandWCPayRequest', <?= $json ?>,
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
// 使用以上方式判断前端返回,微信团队郑重提示:
// res.err_msg将在用户支付成功后返回
// ok,但并不保证它绝对可靠。
}
}
);