100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > thinkphp整合系列之微信扫码支付

thinkphp整合系列之微信扫码支付

时间:2023-07-07 10:56:43

相关推荐

thinkphp整合系列之微信扫码支付

微信作为移动互联网的航空母舰;

在支付发力后;现在也是不容小觑的;

在线下的很多场景中比支付宝更甚;

君不见连路边的小贩都支持二维码扫一扫支付了;

此处是省略500字的微信支付开通过程;

示例项目:/baijunyao/thinkphp-bjyadmin

一:导入sdk

/ThinkPHP/Library/Vendor/Weixinpay

鹅厂的sdk那酸爽谁用谁知道;就不吐槽了;项目中的sdk是我根据官方文档重构精简打造而成的;

二:配置项

/Application/Common/Conf/config.php

"WEIXINPAY_CONFIG"=>array(

"APPID"=>"",//微信支付APPID

"MCHID"=>"",//微信支付MCHID商户收款账号

"KEY"=>"",//微信支付KEY

"APPSECRET"=>"",//公众帐号secert(公众号支付专用)

"NOTIFY_URL"=>"/Api/Weixinpay/notify",//接收支付状态的连接

),

开通微信支付后;会收到一封包含账号密码的邮件;登录微信支付凑齐上面这些参数;

三:支付函数

/Application/Common/Common/function.php

/**

*微信扫码支付

*@paramarray$order订单必须包含支付所需要的参数body(产品描述)、total_fee(订单金额)、out_trade_no(订单号)、product_id(产品id)

*/

functionweixinpay($order){

$order["trade_type"]="NATIVE";

Vendor("Weixinpay.Weixinpay");

$weixinpay=new\Weixinpay();

$weixinpay->pay($order);

}

调用函数会生成一个二维码;用微信扫码即可支付;

//虚拟的订单请根据实际业务更改

$time=time();

$order=array(

"body"=>"test",

"total_fee"=>1,

"out_trade_no"=>strval($time),

"product_id"=>1

);

weixinpay($order);

四:异步接收通知

/Application/Api/Controller/WeixinpayController.class.php

/**

*notify_url接收页面

*/

publicfunctionnotify(){

//导入微信支付sdk

Vendor("Weixinpay.Weixinpay");

$wxpay=new\Weixinpay();

$result=$wxpay->notify();

if($result){

//验证成功修改数据库的订单状态等$result["out_trade_no"]为订单id

}

}

和支付宝不同的是;微信支付并没有支付成功后跳转回来的过程;所以都是异步接收通知的;

//*************************收到反馈后补充的分割线*********************************

如果是整合到自己已有的项目中;则需要添加生成二维码的函数;

具体的可以参考thinkphp整合系列之phpqrcode生成二维码

//*************************关于签名错误的拍错*********************************

如果出现签名错误;

可以使用官方的微信公众平台支付接口调试工具

跟自己生产的签名对比;

然后对比配置;查找不一致的地方;

//*****************关于不知道怎么查看异步发过来的数据的补充*****************

.10.28:

好多童鞋在问支付后;不知道怎么查看接收到的支付状态通知;

这里做个补充;首先;我们的服务器必须是外网可以正常访问到的;

必须注意不能有 登录或者权限之类的拦截;

另外补充一个简单的查看收到的内容的方法用于测试;

四:异步接收通知

/Application/Api/Controller/WeixinpayController.class.php

/**

*notify_url接收页面

*/

publicfunctionnotify(){

//下面的file_put_contents是用来简单查看异步发过来的数据测试完可以删除;

file_put_contents("./notify.text",json_encode($_POST));

//导入微信支付sdk

Vendor("Weixinpay.Weixinpay");

$wxpay=new\Weixinpay();

$result=$wxpay->notify();

if($result){

//验证成功修改数据库的订单状态等$result["out_trade_no"]为订单id

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。