微信小程序 支付功能实现PHP实例详解

前端代码:

wx.request({

url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee',//改成你自己的链接

header: {

'Content-Type': 'application/x-www-form-urlencoded'

},

method:'POST',

success: function(res) {

console.log(res.data);

console.log('调起支付');

wx.requestPayment({

'timeStamp': res.data.timeStamp,

'nonceStr': res.data.nonceStr,

'package': res.data.package,

'signType': 'MD5',

'paySign': res.data.paySign,

'success':function(res){

console.log('success');

wx.showToast({

title: '支付成功',

icon: 'success',

duration: 3000

});

},

'fail':function(res){

console.log('fail');

},

'complete':function(res){

console.log('complete');

}

});

},

fail:function(res){

console.log(res.data)

}

});

后端代码:

//支付费用

public function payJoinfee(){

$appid='wx888888888';

$openid='oCQwY0Q_pzrQpu8888888';

$mch_id='141388888';

$key='9A0A86888888888';

import('Weixin.Lib.WeixinPay');

$weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);

$return=$weixinpay->pay();

$this->response($return,'json');

}

微信支付类

/*

* 小程序微信支付

*/

class WeixinPay{

protected $appid;

protected $mch_id;

protected $key;

protected $openid;

function __construct($appid,$openid,$mch_id,$key){

$this->appid=$appid;

$this->openid=$openid;

$this->mch_id=$mch_id;

$this->key=$key;

}

public function pay(){

//统一下单接口

$return=$this->weixinapp();

return $return;

}

//统一下单接口

private function unifiedorder(){

$url='https://api.mch.weixin.qq.com/pay/unifiedorder';

$parameters=array(

'appid'=>$this->appid,//小程序ID

'mch_id'=>$this->mch_id,//商户号

'nonce_str'=>$this->createNoncestr(),//随机字符串

'body'=>'测试',//商品描述

'out_trade_no'=>'2015450806125346',//商户订单号

'total_fee'=>floatval(0.01*100),//总金额 单位 分

'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'],//终端IP

'notify_url'=>'http://www.weixin.qq.com/wxpay/pay.php',//通知地址

'openid'=>$this->openid,//用户id

'trade_type'=>'JSAPI'//交易类型

);

//统一下单签名

$parameters['sign']=$this->getSign($parameters);

$xmlData=arrayToXml($parameters);

$return=xmlToArray(postXmlSSLCurl($xmlData,$url,60));

return $return;

}

//微信小程序接口

private function weixinapp(){

//统一下单接口

$unifiedorder=$this->unifiedorder();

$parameters=array(

'appId'=>$this->appid,//小程序ID

'timeStamp'=>''.time().'',//时间戳

'nonceStr'=>$this->createNoncestr(),//随机串

'package'=>'prepay_id='.$unifiedorder['prepay_id'],//数据包

'signType'=>'MD5'//签名方式

);

//签名

$parameters['paySign']=$this->getSign($parameters);

return $parameters;

}

//作用:产生随机字符串,不长于32位

private function createNoncestr($length = 32 ){

$chars = "abcdefghijklmnopqrstuvwxyz0123456789";

$str ="";

for ( $i = 0; $i < $length; $i++ ) {

$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);

}

return $str;

}

//作用:生成签名

private function getSign($Obj){

foreach ($Obj as $k => $v){

$Parameters[$k] = $v;

}

//签名步骤一:按字典序排序参数

ksort($Parameters);

$String = $this->formatBizQueryParaMap($Parameters, false);

//签名步骤二:在string后加入KEY

$String = $String."&key=".$this->key;

//签名步骤三:MD5加密

$String = md5($String);

//签名步骤四:所有字符转为大写

$result_ = strtoupper($String);

return $result_;

}

///作用:格式化参数,签名过程需要使用

private function formatBizQueryParaMap($paraMap, $urlencode){

$buff = "";

ksort($paraMap);

foreach ($paraMap as $k => $v){

if($urlencode)

{

$v = urlencode($v);

}

$buff .= $k . "=" . $v . "&";

}

$reqPar;

if (strlen($buff) > 0){

$reqPar = substr($buff, 0, strlen($buff)-1);

}

return $reqPar;

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解相关推荐

  1. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

  2. java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

    微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...

  3. 微信小程序php返回数组,微信小程序 数组(增,删,改,查)等操作实例详解...

    微信小程序 数组(增,删,改,查)等操作 最近在做一个小程序的demo.由于不向后台请求数据,所以就涉及到对本地数据的操作,也遇到了一些坑,本文就以数组的增删改查为例,给新手分享一些经验. 首先这是原 ...

  4. php微信小程序物流进度推送,微信小程序 消息推送php服务器验证实例详解

    微信小程序 消息推送php服务器验证实例详解 设置页面("设置">>"开发设置"): 1.设置服务器域名 注意http和https协议的不同. 2. ...

  5. 微信小程序开发登录界面mysql_微信小程序 欢迎界面开发的实例详解

    微信小程序 欢迎界面 市面上大多数的app都会有一个欢迎界面,下面将演示如何通过微信小程序实现一个欢迎界面. 下面将会按照以下的顺序介绍: 布局的实现 逻辑的实现 样式的实现 1.布局的实现 整个布局 ...

  6. imagepreview使用案例_微信小程序wx.previewImage预览图片实例详解

    一.小知识 二.例子 1.wxml 2.wxss .container { box-sizing:border-box; padding:20px; } .previewimg{ float:left ...

  7. wxss 点击样式_微信小程序点击控件修改样式实例详解

    微信小程序点击控件修改样式实例详解 现在要在微信小程序中实现点击控件修改样式,如下: 微信小程序中不支持直接操作dom,要实现这种效果,我们需要通过设置data,然后利用数据和界面的双向绑定来实现它. ...

  8. php小程序onload,微信小程序 loading 组件实例详解

    这篇文章主要介绍了微信小程序 loading 组件实例详解的相关资料,需要的朋友可以参考下 loading通常使用在请求网络数据时的一种方式,通过hidden属性设置显示与否 主要属性: wxml 显 ...

  9. 小程序怎么处理轮训ajax,微信小程序中使用Promise进行异步流程处理的实例详解...

    微信小程序中使用Promise进行异步流程处理的实例详解 我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理.比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间( ...

最新文章

  1. python123子字符串输出_Python--字符串函数方法全解
  2. 3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  3. 精解C++的switch语句
  4. 关于Unable to execute dex: Java heap space 解决办法
  5. Oracle的package(包)
  6. android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...
  7. TIOBE 2014年7月编程语言排行榜:仅发布1月,Swift进Top 20!
  8. HDU 4701 Game
  9. 带通滤波中零相位和最小相位_相位器在Perl 6中的工作方式
  10. nbu里oracle备份al开头的,认识NBU备份Oracle时Code 29错误
  11. 第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem C. icebound 的账单-题解
  12. 电脑网页如何截取全图(长图)
  13. Window平台Git-Bash的主题配置
  14. 有没有ai绘画教程?什么软件能实现ai绘画?
  15. 用好知晓云,从此不再「网抑云」
  16. 研究方向之智慧仓储与物流及相关算法
  17. 发生事故单位照常发工资可不可以索要误工费
  18. 计算机保研面试题——计算机网络
  19. 百度图片咋这么多不和谐的图片??
  20. Java学习: wait和notify方法、ThreadLocal

热门文章

  1. sql server 链接服务器 改访问接口_跨服务器链接数据库?其实很简单!(上)
  2. 最java大子矩阵和问题_最大子矩阵问题实例解析
  3. 微型计算机内存为8m,通常说一台微机的内存容量为8M,指的是_______。
  4. macbook服务器文件,使用MacBook生成服务器使用的p12证书文件
  5. python求不规则图形面积_python 微积分之---黎曼和
  6. 我的世界服务器被无限循环怎么办,我的世界怎么制作无限循环装置_我的世界无限循环装置制作方法_游戏堡...
  7. Java面对面向程序设计_语言与文化网课章节测试答案
  8. 四十一、完成scrapy爬取官方网站新房的数据
  9. 零样本性能超越GPT-3!谷歌提出1370亿参数自回归语言模型
  10. 今日直播 | 全国高校人工智能人才与科技莫干山论坛直播来袭!