支付宝支付

来源:互联网 发布:ch341a编程器 v1.29 编辑:程序博客网 时间:2024/04/28 01:45

之前在没有接触支付宝支付的时候,听别人说有点复杂,然后就没有做下去的冲动了,但是公司需求必须用支付宝,就做了一下,确实比银联支付要复杂一些,但是银联开发文档很烂,支付宝相对复杂,但是文档很不错,照着文档做还是可以的

因为是直接提取项目中做的,所以有些部分的详细步骤忘了,就说个大概吧,支付宝支付的时候,最主要的是一个密钥和流水号。也就是支付宝那边所识别的,密钥的获取和上传我就不说了,文档上边有,因为现在比较着急,所以也不是很方便扒文档,直接说支付宝的步骤吧。


其实第一步就是获取表单信息,但是这个信息主要是在后台进行的,所以需要跟后台配合,具体后台怎么做我也说不太清,哈哈,我们这边调一个获取表单的信息的接口

/** * create the order info. 创建订单信息 *  */public void getOrderInfo(String subject, String body, String price) {// 签约合作者身份IDAjaxParams params=new AjaxParams();FinalHttp http=new FinalHttp();http.post(LYURL.CHARGE, params, new AjaxCallBack<String>() {@Overridepublic void onSuccess(String t) {// TODO Auto-generated method stubsuper.onSuccess(t);Log.e("swtcharge", t);try {JSONObject object=new JSONObject(t);orderInfo = "partner=" + "\"" + object.getString("partner") + "\"";// 签约卖家支付宝账号orderInfo += "&seller_id=" + "\"" + object.getString("seller_email") + "\"";// 商户网站唯一订单号orderInfo += "&out_trade_no=" + "\"" + object.getString("out_trade_no")+ "\"";// 商品名称orderInfo += "&subject=" + "\"" + object.getString("subject") + "\"";// 商品详情orderInfo += "&body=" + "\"" + object.getString("body") + "\"";// 商品金额orderInfo += "&total_fee=" + "\"" + object.getString("total_fee") + "\"";// 服务器异步通知页面路径orderInfo += "¬ify_url=" + "\"" + object.getString("notify_url")+ "\"";// 服务接口名称, 固定值orderInfo += "&service=\"mobile.securitypay.pay\"";// 支付类型, 固定值orderInfo += "&payment_type=\"1\"";// 参数编码, 固定值orderInfo += "&_input_charset=\"utf-8\"";// 设置未付款交易的超时时间// 默认30分钟,一旦超时,该笔交易就会自动被关闭。// 取值范围:1m~15d。// m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。// 该参数数值不接受小数点,如1.5h,可转换为90m。orderInfo += "&it_b_pay=\"30m\"";// extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付// orderInfo += "&extern_token=" + "\"" + extern_token + "\"";// 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空orderInfo += "&return_url="+"\""+ object.getString("return_url")    +"\"";// 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)// orderInfo += "&paymethod=\"expressGateway\"";Log.e("swtchargewin",orderInfo);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void onFailure(Throwable t, String strMsg) {// TODO Auto-generated method stubsuper.onFailure(t, strMsg);//Log.e("swtcharge", strMsg);}});return ;}


这里边主要是通过获取的表单信息,然后构建一个

orderInfo ,这个表单里边有好多内容,partner也就是自己公司的商户号,seller_id这个是自己公司的支付宝账号,也就是人家给你打钱的地方,里边还有前端通知异步通知什么的,上边都写的有,然后第二部就是签名,对自己刚才的orderinfo签名,通过密钥进行签名  <pre name="code" class="java">// 对订单做RSA 签名String sign = sign(orderInfo);

签名成功之后会通过流水号获取信息,其实需要你做的就是第一步,剩下的都不是你需要做的,只要把demo里边支付的那个文件复制过来就行了,都不需要改变,好吧,我承认有点乱(还是只留给自己看吧,方便以后自己使用),

0 0
原创粉丝点击