php 版本 微信支付 APP 服务端开发
我们通过 微信支付的文档知道 第一步 服务端需要调用统一下单接口生成预付单,其中主要的参数就是 prepay_id 这样 app 通过 prepay_id 就可以发起支付请求了。
我们可以参考 微信支付的 官方SDK(就是个坑)
统一下单接口就是 调用函数
WxPayApi::unifiedOrder($input);
其中的一个参数 设置为:
$input->SetTrade_type("APP");
没有服务端demo 可以参考 JSAPI的修改上面的参数就可以了
统一下单接口定义在 WxPay.Api.php中其中有代码
$response = self::postXmlCurl($xml, $url, false, $timeOut);
即向微信接口发送所需要的数据 ,这里面就会出现坑爹的地方。
记得以前版本的 sdk 单词CURLOPT 少些个T
这次是需要把代码
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
改为
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
在 WxPay.Data.php中有函数 FromXml($xml)
其中有代码
libxml_disable_entity_loader(true);
这个函数可能引起很大的问题
他的初衷本来是为安全考虑,禁止引用外部xml 网上的一个bug 解释是:
The function 'libxml_disable_entity_loader' is not thread safe so, if a thread configure it to 'true' all the others threads are true too. And it should be at 'false' by default when a new request come. That is why the problem disappears when we restart php-fpm daemon.
If you write this at the beginning of app.php we can see that all is working again:
<?php// app.php
libxml_disable_entity_loader(false);The problem is caused by some third-party bundle or library, because it must be changing to true and is not restoring to false again.
一些PHP框架使用了这个函数 就会出现问题,我使用magento框架 测试微信支付,添加了这个函数 结果这个服务器上的其它web测试环境都不能够正常访问了。应该就是破坏了整个服务器的load xml 逻辑。
重启服务器后正常,所以我干脆就注释掉了这个函数。
再之后就是得到 prepay_id 后 依照客户端需要的参数给相应参数
但是给客户端的时候需要二次加密
就是在走一遍 加密流程
大致 函数是:
if($order['result_code'] == 'SUCCESS' && $order['return_code'] == 'SUCCESS'){$data['appid'] = $order['appid'];$data['noncestr'] = WxPayApi::getNonceStr();$data['package'] = 'Sign=WXPay';$data['partnerid'] = WxPayConfig::MCHID;$data['prepayid'] = $order['prepay_id'];$data['timestamp'] = time();$s = $this->MakeSign($data);$data['sign'] = $s;$resJson = json_encode($data);echo $resJson;
这样客户端就能够正常像微信发送支付请求了。
最后 就是 写好 服务端的 notify函数
根据业务流程 和 notify demo 修改即可
php 版本 微信支付 APP 服务端开发相关推荐
- 微信支付java服务端开发(APP)
我这边是针对微信商户支付功能开发.其他的未涉及到. 当你所有的准备工作准备好后:微信支付申请成功,api_key 配置好,等等一系列. 那么让我们进入java开发吧. 微信支付demo下载: http ...
- 微信小程序服务端开发遇到的一些坑
微信小程序服务端开发遇到的一些坑 开发环境 问题集合 小程序不支持基于进入客服事件推送消息 小程序不支持永久素材 RestTemplate无法解析上传图片素材的返回 tips 其他小问题 开发环境 基 ...
- 微信h5支付 php sdk_微信支付V3版,H5,APP微信支付PHP服务端使用方式
使用步骤: 1.导入下载好的微信V3版本SDK public function __construct() { parent::__construct(); //引入微信支付 Vendor('Wxpa ...
- 微信支付服务器端php,APP微信支付php服务端函数方法
namespace wxPay\Controller; use Think\Controller; class AjaxpayfunController extends Controller { fu ...
- iOS 微信支付(服务端下单)
一.注册登录微信开放平台账号 注册登录微信开放平台账号 添加一个用于支付/分享的移动应用,等待审核通过 前往管理中心-移动应用,为通过审核的移动应用申请支付功能,并等待审核通过 详细步骤参照微信支付官 ...
- 微信怎么绑定消息服务器吗,fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...
fastweixin 作者:peiyu 快速搭建微信公众平台服务器 简单封装了所有与微信服务器交互的消息:文本消息.图片消息.图文消息等等 提供了基于springmvc以及基于servlet框架的控制 ...
- 支付宝支付APP服务端PHP
//生成支付订单信息public function orderInfo(){ $request = request();$data_get = $request->param();$uid = ...
- java监听微信_fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...
fastweixin 作者:peiyu 快速搭建微信公众平台服务器 简单封装了所有与微信服务器交互的消息:文本消息.图片消息.图文消息等等 提供了基于springmvc以及基于servlet框架的控制 ...
- 微信app支付功能-服务端的实现-python3版
微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...
最新文章
- C语言中连续调用rand函数,返回值不变
- 【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )
- Android远程桌面助手(B1391)
- RuntimeError: dictionary changed size during iteration
- 怎么把外部参照合并到图纸_做电气设计的,拿到建筑图,怎么下手呢?
- 2017西安交大ACM小学期数据结构 [树状数组,极大值]
- 远程Linux主机安装zsh插件zsh-syntax-highlighting
- android 系统(143)---Android实现App版本自动更新
- java byte json_关于java:当前推荐的将byte []转换为JsonNode并返回的方法
- Android分区查看方法
- Turbo C程序中点阵汉字库和曲线汉字库的显示
- 旋转Kubernetes中的秘密
- 测试面试题集锦| 软件测试常见必考问题与流程篇(附带答案)
- 科幻链接现实:加密艺术的诞生与发展
- Cumt2020九月校赛 by 水一水
- Linux嵌入式设备U盘挂载和拷贝文件
- 2019第二届中国天津国际智慧消防高峰论坛
- 西红柿炒鸡蛋教程(从入门到精通)
- 在Word中巧改厘米标尺(转)
- AI和区块链的融合会带来什么?