微信小程序支付 后端PHP(二)
来源:互联网 发布:农业网络信息杂志地址 编辑:程序博客网 时间:2024/06/06 06:38
近期改了下PHP代码:
<?php/** * Created by PhpStorm. * User: UFO * Date: 17/8/21 * Time: 下午3:16 * 参考链接:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1&index=1 */require_once "WxPay.ConfigPro.php";class WxmPayPro { function wx_getPayRequest( $mid, $openid, $orderid, $rmb, $title, $body, $type='1' ) { $tradeid = $mid.$type;//订单号,这个根据自己需求自定义, mid是支付订单里第三方也就是商户我自己的业务逻辑,不写也可以 $nonce = $orderid.mt_rand(10000,99999); $notify = 'http://'.Plat_Const::getApiHost().'/pay/miniwxpage.php';//回调地址,自己写,支付成功回调,在回调页面进行更改与用户金钱相关的代码 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; // post data $now = time().'';//时间 $appid = Plat_PayFunc::getMiniWxSecret( $millid, 'appid' );//小程序ID 写到一个类里面了 方便后期修改 当然也可以在这里直接写 $mchid = Plat_PayFunc::getMiniWxSecret( $millid, 'mchid' );//商户号 $data = array( 'appid' => $appid, 'mch_id' => $mchid, 'spbill_create_ip' => CBase_Ip::getLocalIp(),//终端ip Y 'nonce_str' => $nonce, //随机字符串Y 'openid' => $openid, //用户标识 N 'body' => $title, //商品描述 Y // 'detail' => $body, //商品详情 N 'attach' => $tradeid, //附加数据 N 'out_trade_no' => $tradeid, //商户订单号 Y 'total_fee' => $rmb, //总金额 单位分 int Y 'notify_url' => $notify, //通知地址 Y 'trade_type' => 'JSAPI', ); $data[ 'sign' ] = self::wx_getPkgSign($millid, $data); $ret = Plat_Net::post( $url, self::wx_toXml($data) );//自己写的网络请求类,这里也可以用其他网络请求 $json = self::wx_parseXML( $ret ); if( !$json || !isset($json[ 'prepay_id' ]) ) { return array( 'ret' => 'fail', 'tip' => $json[ 'return_msg' ] ); } // prepare for client $prepayid = $json[ 'prepay_id' ]; $req = array( 'appId' => $appid, 'timeStamp' => $now, 'nonceStr' => $nonce, 'package' => 'prepay_id='.$prepayid, 'signType' => 'MD5', ); $req[ 'paySign' ] = self::wx_getPkgSign( $millid, $req ); return json_encode($req); } public function wx_getPkgSign( $millid, $req ) { $pars = ''; ksort( $req ); foreach( $req as $k => $v ) { if( 'sign' != $k && $v !== '' ) { $pars .= $k . '=' . $v . '&'; } } $mkey = Plat_PayFunc::getMiniWxSecret( $millid, 'key' ); $pars .= 'key='. $mkey; return strtoupper( md5($pars) ); } public function wx_toXML( $data ) { $xml = '<xml>'; foreach( $data as $key => $val ) { $xml .= '<' . $key . '><![CDATA[' . $val . ']]></' . $key . '>'; } $xml .= '</xml>'; return $xml; } public function wx_parseXML( $str ) { $rsp = array(); $xml = @simplexml_load_string( $str ); if( $xml && $xml->children() ) { foreach( $xml->children() as $node ) { if( $node->children() ) { $k = $node->getName(); $nodeXml = $node->asXML(); $v = substr( $nodeXml, strlen($k)+2, strlen($nodeXml)-2*strlen($k)-5 ); } else { $k = $node->getName(); $v = (string)$node; } $rsp[ $k ] = $v; } } return $rsp; }}?>
然后调用:$data = WxmPayPro::wx_getPayRequest( $mid, $openid, $orderid, $prmb, $title, $body, '1' );data即为小程序前端支付所需数据
阅读全文
0 0
- 微信小程序支付 后端PHP(二)
- 微信小程序支付 后端PHP
- 微信小程序支付(java后端)
- 微信小程序支付(java后端)
- 微信小程序支付(java后端)
- 微信小程序支付PHP实例
- Erlang聊天程序后端(二)
- php 微信小程序支付流程(注意事项),小程序支付回调
- 小程序支付demo,微信小程序支付php代码
- APP微信支付php后端处理
- 小程序支付php
- 微信小程序本地开发环境配置-php后端
- 小程序实现微信支付java后端
- PHP后端android项目(二)登录界面
- 微信小程序支付demo, php开发小程序支付接口实例
- php示例程序(二)
- 基于PHP的APP微信支付开发(二)
- [支付宝小程序PHP全栈开发]二、前端样式的设计.acss样式详解
- poj2993 2996(模拟)
- 新手关于python2.7.11 与 IDE pycharm的安装与使用
- 使用sed将结构化数据拼接成sql
- 9-22
- MINIST Project
- 微信小程序支付 后端PHP(二)
- 博客搭建 vultr+LNMP+wordpress
- Python3 标准库概览
- 技术人员通往财务自由之路
- Titanic Project Kaggle Competition
- Session的创建
- 创建哈夫曼树并进行哈夫曼编码与哈夫曼译码
- linux默认权限:umask
- python中去掉字符串中的\xa0、\t、\n