composer怎么配置微信支付配置教程

Laravel 微信开发组件-WeChat 微信支付_PHP教程_第七城市
Laravel 微信开发组件-WeChat 微信支付
一、介绍 本教程是LAMP开发环境下基于larvel5.1LTS版进行的开发实例。 由于现在国内有很多优秀且具备开源精神的php开发者,因此出于节约时间成本和维护成本的考虑,微信开发采用组件化开发,我们没必要重复造轮子。本教程采用overtrue团队的easywechat组件进行微信的支付功能开发和实现。
由于这个组件功能过多 本篇博客主要介绍“扫码支付”的主要流程和思路。
二、composer安装 默认大家已经在自己的开发环境上已经安装了composer,并会一些简单的操作,安装命令: composer require "overtrue/laravel-wechat:~3.0"* 如果你用了laravel-debugbar,请禁用或者关掉,否则这模块别想正常使用!!! *(但是composer提示是否可以关闭x-debug,会影响安装之类的提示,可以不去管它) 三、在laravel中进行配置 1.注册ServiceProvider(找到config/app.php配置文件中,key为providers的数组,在数组中添加服务提供者): Overtrue/LaravelWechat/ServiceProvider::class,2.(可选)添加* 外观 *在app/config/app.php的aliases数组里,添加* 别名 *:
'wechat' =>Overtrue/LaravelWechat/ServiceProvider::class,3.创建配置文件(在项目根目录中运行artisan命令,发布配置文件到你的项目中): php artisan vendor:publish此时在/config目录下会生成配置文件wechat.php,在里面输入你的微信商家信息,这里请注意保护隐私。 四、 微信支付飞起 1.配置微信商家信息,laravel根目录下的.ENV文件支持以下配置: WECHAT_APPIDWECHAT_SECRETWECHAT_TOKENWECHAT_AES_KEYWECHAT_LOG_LEVELWECHAT_LOG_FILEWECHAT_OAUTH_SCOPESWECHAT_OAUTH_CALLBACKWECHAT_PAYMENT_MERCHANT_IDWECHAT_PAYMENT_KEYWECHAT_PAYMENT_CERT_PATHWECHAT_PAYMENT_KEY_PATHWECHAT_PAYMENT_DEVICE_INFOWECHAT_PAYMENT_SUB_APP_IDWECHAT_PAYMENT_SUB_MERCHANT_IDWECHAT_ENABLE_MOCK你可以在/config/wechat.php中进行相关参数配置,也可以写在.ENV文件中,然后,wechat.php具体读取方法: 'notify_url' => env('NOTIFY_URL', '/notify_url'),// 回调地址env()默认读取.env文件中常量的值,如果.env中没有定义该常量,则返回env()的第二个参数的值。 2.wechat.php文件中需要注意的地方 (1).'log'数组内是日志配置。 (2).'payment'数组是主要配置的数组,主要配置商户的信息和证书。 3.(重点)创建订单 (1).引入命名空间 use EasyWeChat/Foundation/Ause EasyWeChat/Payment/O(2).填写订单信息 $attributes = [ 'trade_type'=> 'JSAPI', // JSAPI,NATIVE,APP... 'body'=> 'iPad mini 16G 白色', 'detail'=> 'iPad mini 16G 白色', 'out_trade_no' => '8018', 'total_fee' => 5388, 'notify_url'=> '/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址,我就没有在这里配,因为在.env内已经配置了。 // ...];// 创建订单 $order = new Order($attributes); $result = $payment->prepare($order); if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {//生产那个订单后的逻辑/Log::info('生成订单号..'.$data->order_guid);//这一块是以ajax形式返回到页面上。 //用户的体验就是点击【确认支付】,验证码以弹层页面出来了(没错,还需要一个好用的弹层js)。$ajax_data=['html'=> json_encode(/QrCode::size(250)->generate($result['code_url'])),'out_trade_no' =>$data->order_guid,'price' =>$data->price];return $ajax_ }else{return back()->withErrors('生成订单错误!'); }四、渲染页面 这里创建了订单,需要生成二维码图片,可以参考一下这个二维码图片组件。 Composer 设置 首先,添加 QrCode 包添加到你的composer.json文件的require里: composer require "simplesoftwareio/simple-qrcode" 添加 Service Provider 注册SimpleSoftwareIO/QrCode/QrCodeServiceProvider::class至config/app.php的providers数组里. 添加 Aliases 最后,注册'QrCode' => SimpleSoftwareIO/QrCode/Facades/QrCode::class至config/app.php的aliases数组里. pay.blade.php内容
{!-- 这个页面需要有一些js代码,才能使支付功能更加美观可用无bug,比如ajax轮询,点击支付后的btn失效,放弃支付时关闭弹层等等 --}js内容 $('.wechat_btn').click(function() {$('.my_order_guid').val('');$('#code').val('');//ajax生成二维码data={ '_token':$(".token").val(),//令牌 'money':$(".money").val(),//商品价格}sendAjax(data, "/order", function (data) { //发送二维码过来(此处使用优美的layer弹层库) layer.open({ type: 1, title:'微信支付', skin: 'layui-layer-rim', //加上边框 area: ['270px', '340px'], //宽高 content: "支付金额:"+data['price'] +"元 <input type='hidden' class='my_order_guid' value='"+data['out_trade_no'] +"'/>"+JSON.parse(data['html'])+ "请使用微信扫码支付" //这里我把弹层库有关的一点点js写到content里面去了。 });getInfo(); //这里写一个轮询,可以异步查询订单是否支付完成的信息,从而进行逻辑处理(比如轮询支付状态,成功了跳转页面),仅仅提点一下我的想法,轮询的代码不用找,没有贴。});});五、回调函数 先放上主要代码再说: public function notifyUrl(Request $request){ $app = new Application(config('wechat')); $response = $app->payment->handleNotify(function($notify, $successful){ if ($successful) {$order_arr=json_decode($notify,true);$order_guid=$order_arr['out_trade_no'];//订单号//回调成功的逻辑} });}注意 (1).wechat发送回调是通过post方式,在路由处定义了之后,还需要在laravel项目中排除token验证,我建议在中间件中VerifyCsrfToken.php进行排除路由。 protected $except = [//'/pay_success_notify','/To_rule_out_route'];(2).* 重点!重点!重点! *回调这里的处理可以说是重中之重,这里出岔子,可能会造成 用户支付成功后,微信的* 回调没有进来 *,后台回调的逻辑就没有执行,导致用户钱花了,东西没买上(即你的服务器上没有执行给付费用户修改支付状态等数据库操作)。另一种后果,如果没有正确返回微信参数,微信会多次发送回调信息来提醒你支付成功了,导致你的服务器* 接受回调函数多遍 *。而此时你也马马虎虎,没有在支付成功的逻辑上对用户的支付状态进行判断,导致逻辑用户充一次钱,在数据库却重复执行了好几次相关数据库操作。前者坑了付费用户,后者坑了你的公司,这里如果不注意的话,后果只会很严重,涉及到钱的地方要倍加小心。 (2).在回调路由指向的方法内,如果你的支付成功的逻辑成功运行了,需要return true;如果没有成功进行数据库操作,需要返回false;或不返回,微信会再一次发送回调信息(post方式)。 六、一些easywechat官方的建议: 这里需要注意的有几个点: 1.handleNotify 只接收一个 callable 参数,通常用一个匿名函数即可。 2.该匿名函数接收两个参数,这两个参数分别为: $notify 为封装了通知信息的 EasyWeChat/Support/Collection 对象,前面已经讲过这里就不赘述了,你可以以对象或者数组形式来读取通知内容,比如:$notify->totalfee 或者 $notify['totalfee']。 $successful 这个参数其实就是判断 用户是否付款成功了(result_code == ‘SUCCESS’) 3.该函数返回值就是告诉微信 “我是否处理完成”,如果你返回一个 false 或者一个具体的错误消息,那么微信会在稍后再次继续通知你,直到你明确的告诉它:“我已经处理完成了”,在函数里 代表处理完成。 4.handleNotify 返回值 $response 是一个 Response 对象,如果你要直接输出,使用 $response->send(), 在一些框架里不是输出而是返回:return $response。 5.注意:请把 “支付成功与否” 与 “是否处理完成” 分开,它俩没有必然关系。 比如:微信通知你用户支付完成,但是支付失败了(result_code 为 ‘FAIL’),你应该更新你的订单为支付失败,但是要告诉微信处理完成。 七、附录(微信官方API的关键参数解析) 通知参数
返回状态码
return_code
String(16)
SUCCESS SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
return_msg
String(128)
签名失败 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 以下字段在return_code为SUCCESS的时候有返回
公众账号ID
String(32)
微信分配的公众账号ID(企业号corpid即为此appId)
String(32)
微信支付分配的商户号
device_info
String(32)
微信支付分配的终端设备号,
随机字符串
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,不长于32位
String(32)
C380BEC2BFD727A4BF3AD6
签名,详见签名算法
result_code
String(16)
SUCCESS/FAIL
String(32)
SYSTEMERROR
错误返回的信息描述
错误代码描述
err_code_des
String(128)
错误返回的信息描述
String(128)
wxd930ea5d5a258f4f
用户在商户appid下的唯一标识
是否关注公众账号
is_subscribe
用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
trade_type
String(16)
JSAPI、NATIVE、APP
String(16)
银行类型,采用字符串类型的银行标识,银行类型见银行列表
订单总金额,单位为分
应结订单金额
settlement_total_fee
应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
现金支付金额
现金支付金额订单现金支付金额,详见支付金额
现金支付货币类型
cash_fee_type
String(16)
货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
代金券金额
coupon_fee
代金券金额<=订单金额,订单金额-代金券金额=现金支付金额,详见支付金额
代金券使用数量
coupon_count
代金券使用数量
代金券类型
coupon_type_$n
CASH CASH--充值代金券 NO_CASH---非充值代金券 订单使用代金券时有返回(取值:CASH、NO_CASH)。$n为下标,从0开始编号,举例:coupon_type_0
coupon_id_$n
String(20)
代金券ID,$n为下标,从0开始编号
单个代金券支付金额
coupon_fee_$n
单个代金券支付金额,$n为下标,从0开始编号
微信支付订单号
transaction_id
String(32)
微信支付订单号
商户订单号
out_trade_no
String(32)
商户系统的订单号,与请求一致。
商家数据包
String(128)
商家数据包,原样返回
支付完成时间
String(14)
支付完成时间,格式为yyyyMMddHHmmss,如日9点10分10秒表示为10。其他详见时间规则
后记 1.在微信开发中,大量用到了laravel自带的Log查错的方法,当var_dump(),echo(),dd()等方法不能查看错误信息是,使用日志查错就可以解决了。怎样使用laravel的log服务,这个以后会讲。 2.本项目开发可以说是组件化开发,有开发速度快,代码质量高,维护成本低等优点,本例的微信开发是一个缩影。
最新教程周点击榜
微信扫一扫1366人阅读
Laravel(25)
微信支付(1)
一.准备工作
1.下载微信官方PHP的SDK,里面有个rootca.pem要用到,在php.ini里配置curl.cainfo=你存放rootca.pem的绝对路径,重启PHP
<poser集成easywechat的laravel版本,具体怎么使用点
composer require &overtrue/laravel-wechat:~3.0&
二.创建控制器WechatController.php
namespace App\Http\C
use Illuminate\Http\R
use App\Http\R
use App\Http\Controllers\C
use Illuminate\Support\Facades\I
use Auth,R
use App\Models\ExampleO //这是我的模型
use EasyWeChat\Foundation\A
use EasyWeChat\Payment\O
class WechatController extends Controller
protected function options(){ //选项设置
// 前面的appid什么的也得保留哦
'app_id' =& 'xxxxxxxxx', //你的APPID
=& 'xxxxxxxxx',
// AppSecret
// 'token'
=& 'your-token',
// 'aes_key' =& '',
// EncodingAESKey,安全模式下请一定要填写!!!
// payment
'payment' =& [
'merchant_id'
=& '你的商户ID,MCH_ID',
=& '你的KEY',
// 'cert_path'
=& 'path/to/your/cert.pem', // XXX: 绝对路径!!!!
// 'key_path'
=& 'path/to/your/key',
// XXX: 绝对路径!!!!
'notify_url'
=& '你的回调地址',
// 你也可以在下单时单独设置来想覆盖它
// 'device_info'
// 'sub_app_id'
// 'sub_merchant_id' =& '',
//传入订单ID即可,我这里是通过订单,来查询该订单的金额,当然你也可以自定义金额
public function pay(){
$id = Input::get('order_id');//传入订单ID
$order_find = ExampleOrder::find($id); //找到该订单
$mch_id =//你的MCH_ID
$options = $this-&options();
$app = new Application($options);
$payment = $app-&
$out_trade_no = $mch_id.date(&YmdHis&); //拼一下订单号
$attributes = [
'trade_type'
=& 'APP', // JSAPI,NATIVE,APP...
=& '购买CSDN产品',
=& $order_find-&info, //我这里是通过订单找到商品详情,你也可以自定义
'out_trade_no'
=& $out_trade_no,
'total_fee'
=& $order_find-&money*100, //因为是以分为单位,所以订单里面的金额乘以100
// 'notify_url'
=& '/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
// 'openid'
=& '当前用户的 openid', // trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识,
$order = new Order($attributes);
$result = $payment-&prepare($order);
if ($result-&return_code == 'SUCCESS' && $result-&result_code == 'SUCCESS'){
$order_find-&out_trade_no = $out_trade_ //在这里更新订单的支付ID
$order_find-&save();
// return response()-&json(['result'=&$result]);
$prepayId = $result-&prepay_
$config = $payment-&configForAppPayment($prepayId);
return response()-&json($config);
//下面是回调函数
public function paySuccess(){
$options = $this-&options();
$app = new Application($options);
$response = $app-&payment-&handleNotify(function($notify, $successful){
// 使用通知里的 &微信支付订单号& 或者 &商户订单号& 去自己的数据库找到订单
$order = ExampleOrder::where('out_trade_no',$notify-&out_trade_no)-&first();
if (count($order) == 0) { // 如果订单不存在
return 'Order not exist.'; // 告诉微信,我已经处理完了,订单没找到,别再通知我了
// 如果订单存在
// 检查订单是否已经更新过支付状态
if ($order-&pay_time) { // 假设订单字段“支付时间”不为空代表已经支付
// 已经支付成功了就不再更新了
// 用户是否支付成功
if ($successful) {
// 不是已经支付状态则修改为已经支付状态
$order-&pay_time = time(); // 更新支付时间为当前时间
$order-&status = 6; //支付成功,
} else { // 用户支付失败
$order-&status = 2; //待付款
$order-&save(); // 保存订单
// 返回处理完成
大功告成,是不是很EASY呀~
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40646次
排名:千里之外
原创:33篇
评论:22条
(3)(2)(3)(2)(1)(1)(2)(1)(7)(11)前两节我们陆续讲了在Laravel中如何使用支付宝和银联支付进行支付,这一节我们来探讨另一种时下热门的支付方式——微信支付。说来也是,微信那么多用户,微信推出来的支付工具用的人自然不少,尤其是微信红包对微信支付的推广更是起到至关重要的作用。正因如此许多网站和App都添加了对微信支付的支持。
Laravel作为全世界最流行的PHP框架,在国内也是拥有许多拥趸,也就自然不乏对微信支付的支持,当然和支付宝、银联支付一样也是通过第三方的扩展包来实现,不过这一次,不是基于OmniPay,因为OmniPay中貌似并没有对微信支付提供网关接口,但是没关系,轮子总是有人造的,目前GitHub上在Laravel中封装微信SDK的项目不在少数,其中最流行的当属 overture 开发的 laravel-wechat 和 huanghua581 开发的 laravel-wechat-sdk 。当然overture还开发了独立于框架的 Wechat ,laravel-wechat正是基于该项目进行开发。
本节我们就使用laravel-wechat包对微信支付做一简单使用示例。
1、安装依赖包
在项目根目录下运行如下命令安装依赖:
composer require overtrue/laravel-wechat 2.1.*
安装完成后在 config/app.php 中注册服务提供者:
Overtrue/LaravelWechat/ServiceProvider::class
如果你想在代码中通过WeChat门面,可以将其添加到 config/app.php 的 aliases 数组中:
'Wechat' =& Overtrue/LaravelWechat/Facade::class
2、配置微信公众号设置
完成上述操作后,运行如下命令发布配置文件到config目录:
php artisan vendor:publish
运行成功后编辑 config/wechat.php 文件:
&?phpreturn ['use_alias' =& env('WECHAT_USE_ALIAS', false),'app_id' =& env('WECHAT_APPID', 'Your AppId'), // 必填'secret' =& env('WECHAT_SECRET', 'Your Secret'), // 必填'token' =& env('WECHAT_TOKEN', 'Your Token'), // 必填'encoding_key' =& env('WECHAT_ENCODING_KEY', 'Your Encoding AES Key') // 只有加密模式需要];
将你的微信公众号的相关信息填写到对应配置,需要注意的是如果要使用微信支付功能,需要经过认证的公众号,且目前微信公众平台测试账号不支持支付接口。
使用微信支付前,需要先到微信公众平台配置好授权目录、测试账号等信息。 微信支付开发文档可参考: https://pay./wiki/doc/api/index.html
3、使用示例
注:Laravel 5 默认启用了CSRF 中间件,因为微信的消息是 POST 过来,所以会触发 CSRF 检查导致无法正确响应消息,所以可以在CSRF验证中排除指定URL。具体可参考: Laravel中如何从CSRF中排除指定URL 。
&?phpuse Overtrue/Wechat/Puse Overtrue/Wechat/Payment/Ouse Overtrue/Wechat/Payment/Buse Overtrue/Wechat/Payment/UnifiedO/** * 第 1 步:定义商户 */$business = new Business(
MCH_KEY);/** * 第 2 步:定义订单 */$order = new Order();$order-&body = 'test body';$order-&out_trade_no = md5(uniqid().microtime());$order-&total_fee = '1'; // 单位为 “分”, 字符串类型$order-&openid = OPEN_ID;$order-&notify_url = '/wechat/payment/notify';/** * 第 3 步:统一下单 */$unifiedOrder = new UnifiedOrder($business, $order);/** * 第 4 步:生成支付配置文件 */$payment = new Payment($unifiedOrder);
Javascript
var WXPayment = function() {if( typeof WeixinJSBridge === 'undefined' ) {alert('请在微信在打开页面!');}WeixinJSBridge.invoke('getBrandWCPayRequest', &?php echo $payment-&getConfig(); ?&, function(res) {switch(res.err_msg) {case 'get_brand_wcpay_request:cancel':alert('用户取消支付!');case 'get_brand_wcpay_request:fail':alert('支付失败!('+res.err_desc+')');case 'get_brand_wcpay_request:ok':alert('支付成功!');default:alert(JSON.stringify(res));}});}
&button type=&button& onclick=&WXPayment()&&
支付 ¥&?php echo ($order-&total_fee / 100); ?& 元&/button&
&?phpuse Overtrue/Wechat/Payment/N$notify = new Notify(APP_ID,APP_KEY,MCH_ID,MCH_KEY);$transaction = $notify-&verify();if (!$transaction) {$notify-&reply('FAIL', 'verify transaction error');}// var_dump($transaction);echo $notify-&reply();
4、在Lumen中使用
此外,laravel-wechat还支持Lumen。使用Composer安装完laravel-wechat后需要在 bootstrap/app.php 中82行左右添加这一行代码:
$app-&register(Overtrue/LaravelWechat/ServiceProvider::class);
同时在ENV中配置以下选项:
WECHAT_USE_ALIAS=falseWECHAT_APPID=xxxWECHAT_SECRET=xxxWECHAT_TOKEN=xxxWECHAT_ENCODING_KEY=xxx
如果你习惯使用 config/wechat.php 来配置的话,请记得在 bootstrap/app.php 中19行以后添加:
$app-&configure('wechat');
当然,除此之外,laravel-wechat还提供了更多微信SDK支持,具体请参考: /overtrue/wechat/wiki 。
最新教程周点击榜
微信扫一扫开发PHP Web微信支付所遇到的配置问题 - 博客频道 - CSDN.NET
让编程改变世界
让编程改变世界、改变生活、改变自己
分类:Alipay_Wxpay
& & & & 最近又做了一次PC Web端、移动Web端的微信支付开发,由于以前做的都没有记录过,再次进行开发的时候又要在百度中进行搜索,故而写下本博文来记录这次开发中所遇到的一些配置问题。
1、PC端扫码支付配置
& & & & 在PC端进行微信扫码支付是我们一共需要三个微信配置参数:
& & & & & & & & Ⅰ 商户公众号APPID
& & & & & & & & Ⅱ 商户号
& & & & & & & &Ⅲ 密钥(商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置))
& & & & Ⅰ和Ⅱ我,我们都可以在开户邮件中看到,Ⅲ就需要我们自行配置。之歌支付密钥是32位的字符串,不能自己随意填写(有可能会生成不了支付二维码),我们可以通过网上的一些在线密钥生成器进行随机生成。
图1 证书安装
& & & & 如图1,我们登录商户平台之后进入账户中心-&API安全首先进行API证书的安装,安装完成之后即可进行API支付密钥的设置。
图2 API密钥设置
& & & & 如图2,证书安装完成之后即可进行密钥的设置,将你随机生成的32位密钥填入进去保存即可。
2、移动端Web公众号支付配置
& & & & 在移动端进行公众号支付的时候需要在微信浏览器中进行,我们除了需要上述的三个参数之外,还需要一个Appsecret。
图3 获取appsecret
图4 支付授权目录配置
图5 授权设置
& & & & & & & & & & & 这样我们就完成了设置,下面就可以进行支付开发了。
排名:千里之外
(29)(7)(24)(5)(1)(2)(4)(1)(2)(3)1024人阅读
代码片段(3)
我们来探讨另一种时下热门的支付方式——微信支付。说来也是,微信那么多用户,微信推出来的支付工具用的人自然不少,尤其是微信红包对微信支付的推广更是起到至关重要的作用。正因如此许多网站和App都添加了对微信支付的支持。
我们就使用laravel-wechat包对微信支付做一简单使用示例:
1、安装依赖包
在项目根目录下运行如下命令安装依赖:
composer require overtrue/laravel-wechat 2.1.*
安装完成后在config/app.php中注册服务提供者:
Overtrue\LaravelWechat\ServiceProvider::class
如果你想在代码中通过WeChat门面,可以将其添加到config/app.php的aliases数组中:
'Wechat' =& Overtrue\LaravelWechat\Facade::class
2、配置微信公众号设置
完成上述操作后,运行如下命令发布配置文件到config目录:
php artisan vendor:publish
运行成功后编辑config/wechat.php文件:
'use_alias' =& env('WECHAT_USE_ALIAS', false),
'app_id' =& env('WECHAT_APPID', 'Your AppId'),
'secret' =& env('WECHAT_SECRET', 'Your Secret'),
'token' =& env('WECHAT_TOKEN', 'Your Token'),
'encoding_key' =& env('WECHAT_ENCODING_KEY', 'Your Encoding AES Key')
将你的微信公众号的相关信息填写到对应配置,需要注意的是如果要使用微信支付功能,需要经过认证的公众号,且目前微信公众平台测试账号不支持支付接口。
使用微信支付前,需要先到微信公众平台配置好授权目录、测试账号等信息。 微信支付开发文档可参考:
3、使用示例
注:Laravel 5 默认启用了 CSRF 中间件,因为微信的消息是 POST 过来,所以会触发 CSRF 检查导致无法正确响应消息,所以可以在CSRF验证中排除指定URL。具体可参考:Laravel中如何从CSRF中排除指定URL。
use Overtrue\Wechat\P
use Overtrue\Wechat\Payment\O
use Overtrue\Wechat\Payment\B
use Overtrue\Wechat\Payment\UnifiedO
* 第 1 步:定义商户
$business = new Business(
* 第 2 步:定义订单
$order = new Order();
$order-&body = 'test body';
$order-&out_trade_no = md5(uniqid().microtime());
$order-&total_fee = '1';
$order-&openid = OPEN_ID;
$order-&notify_url = '/wechat/payment/notify';
* 第 3 步:统一下单
$unifiedOrder = new UnifiedOrder($business, $order);
* 第 4 步:生成支付配置文件
$payment = new Payment($unifiedOrder);
Javascript
var WXPayment = function() {
if( typeof WeixinJSBridge === 'undefined' ) {
alert('请在微信在打开页面!');
return false;
WeixinJSBridge.invoke(
'getBrandWCPayRequest', &?php echo $payment-&getConfig(); ?&, function(res) {
switch(res.err_msg) {
case 'get_brand_wcpay_request:cancel':
alert('用户取消支付!');
case 'get_brand_wcpay_request:fail':
alert('支付失败!('+res.err_desc+')');
case 'get_brand_wcpay_request:ok':
alert('支付成功!');
alert(JSON.stringify(res));
type="button" onclick="WXPayment()"&
支付 ¥ echo ($order-&total_fee / 100); ?& 元
use Overtrue\Wechat\Payment\Notify;
$notify = new Notify(
$transaction = $notify-&verify();
if (!$transaction) {
$notify-&reply('FAIL', 'verify transaction error');
echo $notify-&reply();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1097次
排名:千里之外

我要回帖

更多关于 微信支付怎么配置 的文章

 

随机推荐