我们通过 微信支付的文档知道 第一步 服务端需要调用统一下单接口生成预付单,其中主要的参数就是 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 服务端开发相关推荐

  1. 微信支付java服务端开发(APP)

    我这边是针对微信商户支付功能开发.其他的未涉及到. 当你所有的准备工作准备好后:微信支付申请成功,api_key 配置好,等等一系列. 那么让我们进入java开发吧. 微信支付demo下载: http ...

  2. 微信小程序服务端开发遇到的一些坑

    微信小程序服务端开发遇到的一些坑 开发环境 问题集合 小程序不支持基于进入客服事件推送消息 小程序不支持永久素材 RestTemplate无法解析上传图片素材的返回 tips 其他小问题 开发环境 基 ...

  3. 微信h5支付 php sdk_微信支付V3版,H5,APP微信支付PHP服务端使用方式

    使用步骤: 1.导入下载好的微信V3版本SDK public function __construct() { parent::__construct(); //引入微信支付 Vendor('Wxpa ...

  4. 微信支付服务器端php,APP微信支付php服务端函数方法

    namespace wxPay\Controller; use Think\Controller; class AjaxpayfunController extends Controller { fu ...

  5. iOS 微信支付(服务端下单)

    一.注册登录微信开放平台账号 注册登录微信开放平台账号 添加一个用于支付/分享的移动应用,等待审核通过 前往管理中心-移动应用,为通过审核的移动应用申请支付功能,并等待审核通过 详细步骤参照微信支付官 ...

  6. 微信怎么绑定消息服务器吗,fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...

    fastweixin 作者:peiyu 快速搭建微信公众平台服务器 简单封装了所有与微信服务器交互的消息:文本消息.图片消息.图文消息等等 提供了基于springmvc以及基于servlet框架的控制 ...

  7. 支付宝支付APP服务端PHP

    //生成支付订单信息public function orderInfo(){ $request = request();$data_get = $request->param();$uid = ...

  8. java监听微信_fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...

    fastweixin 作者:peiyu 快速搭建微信公众平台服务器 简单封装了所有与微信服务器交互的消息:文本消息.图片消息.图文消息等等 提供了基于springmvc以及基于servlet框架的控制 ...

  9. 微信app支付功能-服务端的实现-python3版

    微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...

最新文章

  1. C语言中连续调用rand函数,返回值不变
  2. 【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )
  3. Android远程桌面助手(B1391)
  4. RuntimeError: dictionary changed size during iteration
  5. 怎么把外部参照合并到图纸_做电气设计的,拿到建筑图,怎么下手呢?
  6. 2017西安交大ACM小学期数据结构 [树状数组,极大值]
  7. 远程Linux主机安装zsh插件zsh-syntax-highlighting
  8. android 系统(143)---Android实现App版本自动更新
  9. java byte json_关于java:当前推荐的将byte []转换为JsonNode并返回的方法
  10. Android分区查看方法
  11. Turbo C程序中点阵汉字库和曲线汉字库的显示
  12. 旋转Kubernetes中的秘密
  13. 测试面试题集锦| 软件测试常见必考问题与流程篇(附带答案)
  14. 科幻链接现实:加密艺术的诞生与发展
  15. Cumt2020九月校赛 by 水一水
  16. Linux嵌入式设备U盘挂载和拷贝文件
  17. 2019第二届中国天津国际智慧消防高峰论坛
  18. 西红柿炒鸡蛋教程(从入门到精通)
  19. 在Word中巧改厘米标尺(转)
  20. AI和区块链的融合会带来什么?

热门文章

  1. 头牌知产介绍防晒霜属于哪一类商标?
  2. matlab wsd,matlab-restplusgretna—MRI
  3. Linux下的5款主流高可用集群软件介绍
  4. css div 文字 内容 居中
  5. Web前后端交互技术诗词欣赏《满江红》
  6. html页面封装是什么,javascript封装是什么?
  7. 报错:TNS-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
  8. Java 虚拟机枚举 GC Roots 解析
  9. IDEA设置GIT忽略文件提交
  10. 利用交叉观察者这个小宝贝儿,轻松实现懒加载、吸顶、触底