A-A+

使用laravel-wechat包开发微信jssdk支付

2017年12月18日 Laravel 暂无评论 阅读 2,861 views 次

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,但并不保证它绝对可靠。
}
}
);

标签:

给我留言

Copyright © 严佳冬 保留所有权利.   Theme  Ality 百度地图 苏ICP备15015381号-1

用户登录

分享到: