微信支付(APP)
2016-01-05 16:34
232 查看
折腾了一天,终于搞定了微信支付,总结一下。首先从服务器端获取prepareid,Andorid 端再根据这个prepareid二次签名。
服务器端:
从官网上下载DEMO,Demo中只有JsAPi,Micro,Native。没有APP的,那怎么办呢?模仿着jsAPi的自己写一个。
第一步:配置WxPay.Config.php
第二步:替换cert
第三步:统一下单
Android端
服务器端:
从官网上下载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); }
相关文章推荐
- android ProgressDialog 不显示的提示信息的问题
- android三种方式实现自由移动的view
- Unity Shader 学习笔记(十二) 创建程序纹理贴图
- iOS分享【OC】—— Masonry布局
- iOS声明变量用大括号和@property的区别
- iOS数据缓存及YYCache的实现分析
- nagios邮件报警
- iOS开发之记录用户登陆代码实现
- iOS 几种初始化的分析比较
- iOS图片上传
- nagios介绍
- 开源HYBUnicodeReadable日志显示Unicode中文
- Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02
- iOS压缩图片
- Android 下拉刷新 左右滑动 事件冲突
- iOS core Data 详解-<2>多线程
- Android AppWidget系统框架
- android setOnKeyListener事件两次执行解决办法
- unity 绘制三角形
- Android中Activity四种启动模式和taskAffinity属性详解