微信支付(APP)
折腾了一天,终于搞定了微信支付,总结一下。首先从服务器端获取prepareid,Andorid 端再根据这个prepareid二次签名。
服务器端:
从官网上下载DEMO,Demo中只有JsAPi,Micro,Native。没有APP的,那怎么办呢?模仿着jsAPi的自己写一个。
第一步:配置WxPay.Config.php
const APPID = 'wx004d72dd9aab9cc5';
const MCHID = '1293496801';
const KEY = 'zcvnoasdfasnvu93n320dvndsf98nlds';
第二步:替换cert
const SSLCERT_PATH = '../cert/apiclient_cert.pem';
const SSLKEY_PATH = '../cert/apiclient_key.pem';
第三步:统一下单
<?php
ini_set('date.timezone','Asia/Shanghai');
require_once "../lib/WxPay.Api.php"; //①、获取用户openid
//$tools = new JsApiPay();
//$openId = $tools->GetOpenid(); //②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("APP");
//$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input); $parameters = json_encode($order);
echo $parameters;
Android端
private void weixinPay() {
final IWXAPI msgApi = WXAPIFactory.createWXAPI(getActivity(), null);
msgApi.registerApp(Constants.APP_ID);
String url = "http://192.168.208.34/WxpayAPI/example/appapi.php";
Toast.makeText(getActivity(), "获取订单中...", Toast.LENGTH_SHORT).show();
HttpUtil.sendJsonRequest(HttpRequest.HttpMethod.GET, url, null, new HttpRequestCallBack<Object>() {
@Override
public void onSuccessed(ResponseInfo<Object> responseInfo) {
Log.e("Josen", responseInfo.result.toString());
prePayBean = new Gson().fromJson(responseInfo.result.toString(), PrePayBean.class);
PayReq req = new PayReq();
req.appId = prePayBean.getAppid();
req.partnerId = prePayBean.getMch_id();
req.prepayId = prePayBean.getPrepay_id();
req.nonceStr = RandomString.getRandomString(20);
req.timeStamp = String.valueOf(System.currentTimeMillis()/1000);
req.packageValue = "Sign=WXPay";
String string = "appid="+Constants.APP_ID+"&noncestr="
+req.nonceStr+"&package="+req.packageValue+"&partnerid="
+req.partnerId+"&prepayid="+req.prepayId+"×tamp="
+req.timeStamp+"&key="+Constants.APP_KEY;
String sign = MD5.getMessageDigest(string.getBytes());
req.sign = sign.toUpperCase();
msgApi.sendReq(req);
}
@Override
public void onFailed(HttpException exception, String reason) {
}
}, 0);
}
微信支付(APP)的更多相关文章
- 微信支付 APP 支付方式的服务器端处理程序
对于微信的APP的支付,客户服务说只能通过微信开放平台申请.后来在公众帐号确实发现了证据: 微信支付在申请的时候就比较严(麻烦),对服务类的一些支付,本来商品就是虚拟的,所以需要将商品描述的比较详细 ...
- 微信支付app的各种坑
android: 签名要一致,要导出singed包 要记得重启手机 如果别人的都可以支付,我的不可以,就要退出微信账号,重新登陆微信账号一下(不仅仅是退出微信应用). 上面还不行的话,就要重新换个微信 ...
- 微信支付(APP支付)-服务端开发(一)
微信支付,首先需要注册一个商户平台公众账号,(网址:https://pay.weixin.qq.com/index.php/home/d_login) 目前微信支付的接入方式有四种方式:公众号支付,A ...
- 微信支付-b
微信支付 APP端开发步骤(传送门):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 1.首先下载最新的微信支付的SDK包 ...
- iOS开发微信支付
现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流程 ...
- Android微信支付流程及返回码-1之坑
http://www.51testing.com/html/36/n-3724336.html 之前做微信支付的时候,直接是以库形式引入项目的,虽然一直觉得微信支付的开发文档不太理想,但是印象中也没有 ...
- iOS开发微信支付的介绍与实现
1.前期准备 1) 到微信开放平台注册账号 需要登录邮箱验证 填写您的商户信息 2) 进入管理中心 --- 移动应用 --- 创建移动应用 --- 根据页面完善应用资料 3) 审核过后,通过应用详情页 ...
- app使用微信支付成功后,点击返回到该app却跳到另外一个app去了
刚接手了公司iOS的两个APP, 现在碰到了这样一个问题: 有一台iPhone在一个APP中使用了微信支付,支付成功后,点击返回到该APP,结果却跳到了另外一个APP去了. 这两个APP都是公司开发的 ...
- app端微信支付(二) - 生成预付单
前一篇文章的时序图中说了,app端调用微信支付必须先由后台调用微信后台生成预付单,再构建参数给手机端,而数据的构建要以xml形式,那么看看代码具体实现吧,代码已经精简过了,自己的业务已经除去,精简的 ...
- app微信支付(一) - 微信支付基本业务流程解析
想必微信支付是现在很多朋友离不开的一个功能,不论是扫描支付还是公众号支付或者app端支付,基本的思路都是一样的,之前做过支付宝支付以及中国移动支付接口,这几天花时间讲讲微信支付吧 先看一下微信支付的时 ...
随机推荐
- C#中设置TextBox控件中仅可以输入数字且设置上限
首先设置只可以输入数字: 首先设置TextBox控件的KeyPress事件:当用户按下的键盘的键不在数字位的话,就禁止输入 private void textBox1_KeyPress(object ...
- 【AngularJS中的自定义服务service VS factory VS provider】---它们的区别,你知道么?
在介绍AngularJS自定义服务之前,我们先来了解一下AngularJS~ 学过HTML的人都知道,HTML是一门很好的伪静态文本展示设计的声明式语言,但是,要构建WEB应用的话它就显得乏力了. 而 ...
- 【JQuery基础知识/statusCode(状态码)】---初学者必备
今天,给大家分享一下JQuery的基础知识,简单介绍一下JQuery高级_Ajax,和我们常见的一些statusCode(状态码)~~~ 如果存在错误,请大家多多指正留言~小女子在此谢过! 一.JQu ...
- Unix Shortcuts
find . -name "*.java" -type f find all the files within a director and its sub-directory e ...
- java集合(1)- 类底层数据结构分析
Java 集合类图 参考:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html
- neutron flat和vxlan网络访问外网流量走向
OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.168.1 ...
- [认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)
0 目录 认证授权系列:http://www.cnblogs.com/linianhui/category/929878.html 1 什么是OIDC? 看一下官方的介绍(http://openid. ...
- DedeCMS数据负载性能优化方案简单几招让你提速N倍
前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利.今天,分享一下DedeCMS数据负载性能优化的方法. 接触织梦也有三年多时间了,对它可谓 ...
- javascript中break和continue的区别
1.break:跳出循环. 2.continue:跳过循环中的一个迭代.(迭代:重复反馈过程的滑动,其目的是为了逼近所需目标或结果.每一次对过程的重复称为一次"迭代",而每一次迭代 ...
- 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下