微信支付(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';
第三步:统一下单
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