下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——php微信支付之APP支付方法php微信支付之APP支付方法
本文实例陈述了微信开放平台移动应用集成微信支付功能。共享给大家供大家参考。概括分析如下,更多消息请关注应届毕业生网!WechatAppPay文件代码如下:??spacecommon\services\WechatPay;classWechatAppPayextendsWechatPayBase//package参数public$package=[];//异步通知参数public$notify=[];//推送预支付订单参数protected$config=[];//存储accesstoken和获取时间的文件protected$file;//accesstected$accessToken;//取accesstoken的urlconstACCESS_TOKEN_URL=/cgi-bin/token?grant_type=client_credentialappid=%ssecret=%s;//生成预支付订单提交地址constPOST_ORDER_URL=/pay/genprepay?access_token=%s;publicfunction__construct$this-file=__DIR__./payAccessToken.txt;/***创造APP支付最终返回参数*@throws\Exception*@returnmultitype:stringNULL*/publicfunctioncreateAppPayData$this-generateConfig;$prepayid=$this-getPrepayid;try$array=[appid=$this-appid,appkey=$this-paySignkey,noncestr=$this-getRandomStr,package=Sign=WXPay,partnerid=$this-partnerId,prepayid=$prepayid,timestamp=stringtime,];$array[sign]=$this-sha1Sign$array;unset$array[appkey];catch\Exception$ethrownew\Exception$e-getMessage;return$array;/***验证支付告成后的.通知参数**@throws\Exception*@returnboolean*/publicfunctionverifyNotifytry$staySignStr=$this-notify;unset$staySignStr[sign];$sign=$this-signData$staySignStr;return$this-notify[sign]===$sign;catch\Exception$ethrownew\Exception$e-getMessage;/***魔术方法,给添加支付参数进来**@paramstring$name参数名*@paramstring$value参数值*/publicfunction__set$name,$value$this-$name=$value;/***设置accesstoken*@paramstring$token*@throws\Exception*@returnboolean*/publicfunctionsetAccessTokentryif!file_exists$this-file||!is_file$this-file$f=fopen$this-file,a;fclose$f;$content=file_get_contents$this-file;if!empty$content$info=json_decode$content,true;iftime-$info[getTime]7150$this-accessToken=$info[accessToken];returntrue;//文件内容为空或accesstoken已失效,重新获取$this-outputAccessTokenToFile;catch\Exception$ethrownew\Exception$e-getMessage;returntrue;/***写入accesstoken到文件*@throws\Exception*@returnboolean*/protectedfunctionoutputAccessTokenToFiletry$f=fopen$this-file,wb;$token=[accessToken=$this-getAccessToken,getTime=time,];flock$f,LOCK_EX;fwrite$f,json_encode$token;flock$f,LOCK_UN;fclose$f;$this-accessToken=$token[accessToken];catch\Exception$ethrownew\Exception$e-getMessage;returntrue;/***取accesstoken**@throws\Exception*@returnstring*/protectedfunctiongetAccessToken$url=sprintfself::ACCESS_TOKEN_URL,$this-appid,$this-appSecret;$result=json_decode$this-getUrl$url,true;ifisset$result[errcode]thrownew\Exceptiongetaccesstokenfailed:$result[errmsg];return$result[access_token];/***取预支付会话标识**@throws\Exception*@returnstring*/protectedfunctiongetPrepayid$data=json_encode$this-config;$url=sprintfself::POST_ORDER_URL,$this-accessToken;$result=json_decode$this-postUrl$url,$data,true;ifisset$result[errcode]$result[errcode]!=0thrownew\Exception$result[errmsg];if!isset$result[prepayid]thrownew\Exceptiongetprepayidfailed,urlrequesterror.;return$result[prepayid];/***组装预支付参数**@throws\Exception*/protectedfunctiongenerateConfigtry$this-config=[appid=$this-appid,traceid=$this-traceid,noncestr=$this-getRandomStr,timestamp=time,package=$this-generatePackage,sign_method=$this-sign_method,];$this-config[app_signature]=$this-generateSign;catch\Exception$ethrownew\Exception$e-getMessage;/***生成package字段**生成规矩:*1、生成sign的值signValue*2、对package参数再次拼接成查询字符串,值需要举行urlencode*3、将sign=signValue拼接到2生成的字符串后面得到最终的package字符串**第2步urlencode空格需要编码成%20而不是+**RFC1738会把空格编码成+*RFC3986会把空格编码成%20**@returnstring*/protectedfunctiongeneratePackage$this-package[sign]=$this-signData$this-package;returnhttp_build_query$this-package,,,PHP_QUERY_RFC3986;/***生成签名**@returnstring*/protectedfunctiongenerateSign$signArray=[appid=$this-appid,appkey=$this-paySignkey,noncestr=$this-config[noncestr],package=$this-config[package],timestamp=$this-config[timestamp],traceid=$this-traceid,];return$this-sha1Sign$signArray;/***签名数据**生成规矩:*1、字典排序,拼接成查询字符串格式,不需要urlencode*2、上一步得到的字符串结果拼接上key=paternerKey*3、MD5哈希字符串并转换成大写得到sign的值signValue**@paramarray$data待签名数据*@returnstring最终签名结果*/protectedfunctionsignData$dataksort$data;$str=$this-arrayToString$data;$str.=key=$this-partnerKey;return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服装 借 合同范本
- 货运租车合同范本
- 矿山勘查合同范本
- 厂房使用权再出租协议2024年样式
- 工程机械连接合同范本
- 中介代理协议合同范本
- 2024届甘肃省庆阳市第二中学高三高考模拟最后一卷数学试题
- 花卉出口合同范本
- 2024年春节节后收心会开学第一课春节收心主题班会
- 师范生社会实践报告
- 混料机的安全操作规程有哪些(8篇)
- 期中 (试题) -2024-2025学年译林版(三起)英语六年级上册
- 2024秋期国家开放大学《财务报表分析》一平台在线形考(作业一至五)试题及答案
- 国家基本医疗保险、工伤保险和生育保险药品目录(2023年)
- 城市公益公墓区建设方案
- 第七单元测试卷-2024-2025学年语文三年级上册统编版
- 智能网联汽车电子电气架构产业技术路线图
- 1输变电工程施工质量验收统一表式(线路工程)-2024年版
- 护理观察瞳孔
- 期末 (试题) -2024-2025学年人教PEP版英语六年级上册
- 第五单元 倍的认识(单元测试)-2024-2025学年三年级上册数学人教版
评论
0/150
提交评论