当前位置: 首页 > news >正文

湖南长沙做网站宣武上海网站建设

湖南长沙做网站,宣武上海网站建设,营销型网站策划建设,动画视频制作下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip #xff1b;解压后放在extend 文件夹下#xff0c;命名为wepay下载你的商户证书#xff0c;放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.p…下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip 解压后放在extend 文件夹下命名为wepay下载你的商户证书放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.php 的appId , mch_id, key(商户支付秘钥)appsecret 证书路径 设置好。 创建新的验证控制器WechatPayNotify.php复制下面代码进去在最后的TODO3 那里可以插入你在订单支付后的相关代码。比如数据库订单状态更新use thinkfacadeCache; require_once ../extend/wepay/lib/WxPay.Api.php; require_once ../extend/wepay/lib/WxPay.Exception.php; require_once ../extend/wepay/lib/WxPay.Config.Interface.php; require_once ../extend/wepay/lib/WxPay.Data.php; require_once ../extend/wepay/example/WxPay.JsApiPay.php; require_once ../extend/wepay/example/WxPay.NativePay.php; require_once ../extend/wepay/lib/WxPay.Notify.php; require_once ../extend/wepay/example/WxPay.Config.php;class WechatPayNotify extends WxPayNotify {public function index(){$config new WxPayConfig();$this-Handle($config, false);}//查询订单public function Queryorder($transaction_id,$data[]){$input new WxPayOrderQuery();$input-SetTransaction_id($transaction_id);$config new WxPayConfig();$result WxPayApi::orderQuery($config, $input,$data);if(array_key_exists(return_code, $result) array_key_exists(result_code, $result) $result[return_code] SUCCESS $result[result_code] SUCCESS){return true;}return false;}/**** 回包前的回调方法* 业务可以继承该方法打印日志方便定位* param string $xmlData 返回的xml参数***/public function LogAfterProcess($xmlData){ // Log::DEBUG(call back return xml: . $xmlData);return;}//重写回调处理函数/*** param WxPayNotifyResults $data 回调解释出的参数* param WxPayConfigInterface $config* param string $msg 如果回调处理失败可以将错误信息输出到该方法* return true回调出来完成不需要继续回调false回调处理未完成需要继续回调*/public function NotifyProcess($objData, $config, $msg){$data $objData-GetValues();//TODO 1、进行参数校验if(!array_key_exists(return_code, $data)||(array_key_exists(return_code, $data) $data[return_code] ! SUCCESS)) {//TODO失败,不是支付成功的通知//如果有需要可以做失败时候的一些清理处理并且做一些监控$msg 异常异常;Cache::set(wx_pay_error_msg,$msg,3600);return false;}if(!array_key_exists(transaction_id, $data)){$msg 输入参数不正确;Cache::set(wx_pay_error_msg,$msg,3600);return false;}//TODO 2、进行签名验证try {$checkResult $objData-CheckSign($config);if($checkResult false){Cache::set(wx_pay_error_msg,签名错误,3600);//签名错误 // Log::ERROR(签名错误...);return false;}} catch(Exception $e) { // Log::ERROR(json_encode($e));}//查询订单判断订单真实性if(!$this-Queryorder($data[transaction_id],$data)){$msg 订单查询失败;Cache::set(wx_pay_error_msg,订单错误,3600);return false;}//TODO 3、处理业务逻辑//这里是支付后的操作处理return true;}}后台获取小程序几个支付参数的具体代码public function get_data(){//获取支付参数require_once ../extend/wepay/lib/WxPay.Api.php;require_once ../extend/wepay/lib/WxPay.Exception.php;require_once ../extend/wepay/lib/WxPay.Config.Interface.php;require_once ../extend/wepay/lib/WxPay.Data.php;require_once ../extend/wepay/example/WxPay.JsApiPay.php;require_once ../extend/wepay/example/WxPay.NativePay.php;require_once ../extend/wepay/lib/WxPay.Notify.php;require_once ../extend/wepay/example/WxPay.Config.php;$nodify_url url(WechatPayNotify/index,,,true);//跳转到你的验证地址//①、获取用户openid$tools new JsApiPay();$openId input(open_id);//小程序的用户openId$out_trade_no input(oid);//你的订单号$price 0.01;$account $price*100;//订单价格*100 单位分try{//②、统一下单$input new WxPayUnifiedOrder();$input-SetBody(testbox);//商品描述$input-SetAttach(testdev);//附加数据参数$input-SetSignType(MD5);//设置签名加密方式$input-SetOut_trade_no($out_trade_no);$input-SetTotal_fee($account);//订单金额单位分$input-SetTime_start(date(YmdHis));$input-SetTime_expire(date(YmdHis, time() 600)); // $input-SetGoods_tag(test);$input-SetNotify_url($nodify_url);$input-SetTrade_type(JSAPI);$input-SetOpenid($openId);$config new WxPayConfig();$order WxPayApi::unifiedOrder($config, $input);$temp $order; // print_r($temp);$key $config-GetKey();//商户支付秘钥不是AppSecret$app_id $config-GetAppId();} catch(Exception $e) { // print_r($e);$this-error(出错);}//小程序二次签名获取MD5加密方式$timeStamp .time().;$nonceStr $temp[nonce_str];// 随机字符串32位以内随意$package prepay_id.$temp[prepay_id];//统一下单的prepay_id格式是prepay_id ....$string appId.$app_id.nonceStr.$nonceStr.package.$package.signTypeMD5timeStamp.$timeStamp.key.$key;// 参数排序就是字典序严格注意大小写$paySign strtoupper(md5($string));$assign [error 0,openid $openId,appId $app_id,timeStamp $timeStamp,nonceStr $nonceStr,package $temp[prepay_id],paySign (string)$paySign,];return json_encode($assign);}至此微信小程序支付参数获取完成。只需要在前端调用参数接口即可。易出错的几个地方1. 统一下单 和 小程序二次签名使用的appId 都是小程序的appId2. 签名方式统一下单和 小程序二次签名使用的签名方式保持一致。这里我用的是MD53.请确保商户支付秘钥的正确性这里的key 是商户支付秘钥不是appsecret4.签名验证格式请注意参数大小写严格按照上方例子的格式来$string appId.$app_id.nonceStr.$nonceStr.package.$package.signTypeMD5timeStamp.$timeStamp.key.$key;可以使用签名验证工具验证https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter20_15.如果上方步骤全部正确但仍报“支付验证签名失败”请检查你的前端格式先把参数接口获取到的数据用var 定义再放到支付请求接口。这个巨坑6.若提示“缺乏total_fee”请检查你的参数接口。
http://www.sadfv.cn/news/33017/

相关文章:

  • 永州企业网站建设价格转换成wordpress
  • 大良网站设计架设销售网站
  • 学校网站功能描述被墙网站怎么做301跳转
  • 做同城网站还有机会吗广州网站优化价格
  • 网站的导航栏设计文本怎么做网页作业
  • 个人备案的公司网站域名交易网站建设
  • 文案撰写网站北京网络公司哪家最好
  • 口腔网站模板网站技术方案说明
  • 长裕建设有限公司网站网站重定向
  • 与通信工程专业做项目的网站rails开发的网站开发
  • 专业做网站方案赣州优化公司
  • 嘉兴备案网站建设做网站按钮
  • 陇南网站建设移动网站开发视频怎样嵌入
  • 查公司的网站有哪些英文网站建设方案 ppt模板
  • 漳州模板网站建设宿迁哪里做网站
  • 电商网站开发多少钱弄美团网站的一般一个做赚多少钱
  • 免费网站安全检测搜索引擎营销方法
  • 网站开发工资有多少开源cms建站
  • 网站改进建议贵阳市做网站公司
  • 网站建设是什么职位seo分析报告
  • 网站如何做才容易被搜索到网业协同心得体会运营商
  • 备案 网站名字美工模板网站
  • 网站建设需要的服务器虚拟主机怎么发布网站
  • 建设公司网站都需要什么软件开发培训思摩特
  • 甘井子区城市建设管理局网站制作个人网站要多少钱
  • 北京中交建设工程咨询有限公司网站用服务器建立网站教程
  • 营销型网站建设细节精选网页设计
  • 如何做明星的个人网站网易企业邮箱手机端设置
  • 云奇网站建设海外网站的建设
  • 河北先进网站建设风格投标网站建设