PHP对接APP微信支付


微信开放平台手机APP支付总结

1. 微信开放平台手机APP支付总结

支付功能链接: https://pay.weixin.qq.com/wiki/doc/api/index.html

APP支付功能文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

Demo下载地址: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

首先了解微信手机APP开放平台文档支付流程, 虽然个人感觉微信给出的文档没有支付宝官方给出的文档详细, 但是认真研究还是可以克服困难的, 有的问题在网上也是可以找到解决方案的. 微信开放平台和微信公众平台的所使用的demo使用的都是同一个JsApi的demo,业务流程是一样的, 只要服务端做好处理将业务参数传给客户端即可. 还有一个要注意的问题, 是在退款时需要用到商户的证书.

2.  传递商户交易号和价格去微信进行生成预支付订单

利用微信统一下单方法生成预申请id

1
2
3
4
5
6
7
8
9
10
11
$input new WxPayUnifiedOrder();
$input->SetBody($body);  
$input->SetAttach(''test”);    
$input->SetOut_trade_no($order_sn);  
$input->SetTotal_fee($price); 
$input->SetTime_start(date("YmdHis"));  
$input->SetTime_expire(date("YmdHis", time() + 60*10));    //订单失效时间,报错可不写
$input->SetGoods_tag("tag");       //设置商品标记,说明详见代金券或立减优惠
$input->SetNotify_url($notify_url);   //设置接收微信支付异步通知回调地址
$input->SetTrade_type("APP");      //设置类型如下:JSAPI,NATIVE,APP
$order_data = WxPayApi::unifiedOrder($input);  //统一下单

注释:$order_data 为微信返回的订单生成结果。如下所示
appid    mch_id    nonce_str    prepay_id   result_code   return_code    return_msg
sign (签名,此时返回的签名不能给APP端调用,需要重新生成签名) 
trade_type      prepay_id (数据最重要。)

3.  将微信返回的prepay_id数据再次签名,再返回给APP端。

获取到 prepay_id 后,将参数 appid、noncestr、package(注意:Sign=WXPay)、partnerid、prepayid、timestamp 签名后返回给 APP。

1
2
3
4
$order_data['timestamp'] = time();
$str 'appid='.$order_data['appid'].'&noncestr='.$order_data['nonce_str'].'&package=Sign=WXPay&partnerid='.WxPayConfig::MCHID.'&prepayid='.$order_data['prepay_id'].'&timestamp='.$order_data['timestamp'];
$order_data['sign'] = strtoupper(md5($str.'&key='.WxPayConfig::KEY));
echo json_encode($order_data);

4.  支付完成回调处理

可参考demo回调处理方法notify.php进行业务逻辑处理即可.

支付完成!  可根据自己的业务流程修改业务逻辑 .

参考链接: http://blog.csdn.net/shihunzhe/article/details/53535838

本文转自噼里啪啦啦 51CTO博客,原文链接:http://blog.51cto.com/pilipala/1917634,如需转载请自行联系原作者

微信开放平台手机APP支付相关推荐

  1. 新版支付宝开放平台 手机网页支付 整个流程

    新版支付宝开放平台  手机网页支付 整个流程 在支付宝签约如下产品 然后,使用支付宝最新的签名工具生成商户的私钥和公钥 值得注意的是,如果是.net c# 请选择PKCS1,我只采用1024密钥长度. ...

  2. uniApp APP端 支付/分享 微信开放平台的Android 包名签名的坑

    在开放平台配置好包名和签名后是会"立即生效" 网上看2种解决方法能立即生效 1.微信重新登录 2.卸载微信重新安装 原因:当你在你的APP上使用微信登录/分享/支付等,微信客户端会 ...

  3. 第三方App接入微信登录 解读 (微信开放平台)

    http://www.cnblogs.com/linjunjie/p/6249989.html 微信开放平台  和  微信公众平台  概念不同. 1.首先需要注册微信开放平台,然后获取开发者认证.审批 ...

  4. 微信开放平台unionID 的利用(app推广转化率的解决方案)

    打开微信公众号开发文档,开幕就是这段话.微信开放平台提供了unionID 一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID ...

  5. 微信开放平台申请移动应用时如何获取已经安装的第三方app的应用签名

    一.问题描述 当我们在微信开放平台申请移动应用时,进行到了如下步骤,需要获取应用签名,下面给出解决方案 二.问题解决 先来到微信提供的获取应用签名网页下载获取应用签名的app,网址如下: https: ...

  6. 微信开放平台商户申请步骤(APP支付方式)

    第一步:注册开放平台账号 登录开放平台(open.weixin.qq.com),注册成为微信开放平台开发者. 第二步:认证开放平台并创建APP 开放平台需进行开发者资质认证后才可申请微信支付,认证费: ...

  7. 微信开放平台分享功能的app签名怎么获取

    微信开放平台需要的签名如果直接使用eclipse打包生成的MD5签名是不行的. 需要把这个eclipse打包生成MD5签名做一些处理: (1)冒号:去掉 (2)大写字母换成小写字母 (做以上处理的时候 ...

  8. 微信开发 - 第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

    问题描述 网上的教程都非常乱且无效,本文将站在新手的角度,超级详细的讲解. 本文提供 在微信开放平台,接入微信登录和微信支付时,本文无法调试 redirect_uri 回调错误 的解决方案, 仅需几个 ...

  9. ios App支付宝开放平台申请支付宝支付具体步骤

    本文章主要介绍支付宝开放平台接入支付宝支付的过程,不涉及支付宝支付sdk代码的导入 1.支付宝支付平台注册账号 2.资料登记 3.企业认证 选择法定代表人支付宝验证(通知法人支付宝登录认证)

最新文章

  1. 翼方健数曹华:构建数据和计算互联网的必由之路
  2. 10个不太为人所知的,但实用的PHP函数
  3. Linux查看utmp文件,linuxc操作utmp和wtmp文件接口
  4. 软件工程进度条-第十五周
  5. MapReduce算法–了解数据联接第1部分
  6. 【热烈祝贺】我刊主编郑纬民教授荣获中国存储终身成就奖!
  7. CSAPP-C1-计算机系统漫游
  8. JDBC操作数据库的基本步骤:
  9. Python题库(100例)第一天
  10. excle表格导出到本地
  11. python中自定义标识符_python标识符
  12. 一文读懂矩估计、极大似然估计和贝叶斯估计
  13. 什么样的人适合参加IT编程培训?
  14. 入职程序员从选电脑开始
  15. 《Python深度学习从零开始学》简介
  16. 华为鸿蒙系统到底能否使用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  17. JDK1.8源码分析:阻塞队列LinkedBlockingQueue与BlockingDeque(双端)的设计与实现
  18. 127.0.0.1、0.0.0.0和本机IP地址的区别和使用
  19. 论文的总体结构及质量控制
  20. py学习9——linux常见指令

热门文章

  1. 利用MySQL触发器实现check和assertion
  2. Oracle Exadata 简介
  3. iOS支付宝(Alipay)接入详细流程,比微信支付更简单,项目实战中的问题分析
  4. Swift2.x编写NavigationController动态缩放titleView
  5. jQuery 加法计算 使用+号即强转类型
  6. 堆和栈的主要区别由以下几点:
  7. jQuery的选择器(一)
  8. 使用Intellj Idea打开选中文件/文件夹
  9. Linux基础网络服务概述
  10. jPA自动创建数据库表的一些配置