您好,欢迎来到源码搜藏!分享精神,快乐你我!提示:担心找不到本站?在百度搜索“源码搜藏”,网址永远不丢失!
  • 首 页
  • 在线工具
  • 当前位置:首页 > 安卓源码 > 技术博客 >

    安卓App接入支付宝详解

    时间:2017-02-03 15:33 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

    闲得蛋疼接了一个坑死人的项目,,其中有一块涉及到支付宝即时到账服务,本来想使用第三方提供的服务,然而为了安全考虑,使用阿里提供的sdk自己开发接口首先申请支付宝账号,顺便入驻开放平台,申请账号完毕后,直接找到沙箱环境 在这个地方,用到的就是APP

    闲得蛋疼接了一个坑死人的项目,,其中有一块涉及到支付宝即时到账服务,本来想使用第三方提供的服务,然而为了安全考虑,使用阿里提供的sdk自己开发接口首先申请支付宝账号,顺便入驻开放平台,申请账号完毕后,直接找到沙箱环境

     

    安卓App接入支付宝详解
    在这个地方,用到的就是APP ID和支付宝的RSA2公钥,看到这个地方,接下来我们需要的就是支付宝的密钥了,,为了方便,直接下载支付宝提供的工具https://os.alipayobjects.com/...

    安卓App接入支付宝详解
    直接这样生成就好了,然后将公钥提交到沙箱的公钥里,然后就搞定了,,私钥自己保留好,,这样就配置的差不多了

    然后,下载php的sdk https://openhome.alipay.com/d...
    下载完成后放到服务器上,由于阿里给的文档不够完善,,我看源码找了好久,而且此前没有接触此类开发,,遇到了不少麻烦,这里直接记录下

    <?php  
    require_once './aop/AopClient.php';
    require_once './aop/request/AlipayTradeAppPayRequest.php';
    $c = new AopClient;
    $c->gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
    $c->appId = "2016080100138126";
    $c->rsaPrivateKey = '私钥';
    $c->format = "json";
    $c->charset= "utf-8";
    $c->signType= "RSA2";
    $c->alipayrsaPublicKey = '支付宝公钥';
    $request = new AlipayTradeAppPayRequest ();
    $request->setBizContent("{\"timeout_express\":\"30m\",\"product_code\":\"QUICK_MSECURITY_PAY\",\"total_amount\":\"0.01\",\"subject\":\"1\",\"body\":\"我是测试数据\",\"out_trade_no\":\"012114575097325\"}");
    echo $c->sdkExecute($request);
    ?>

    注意的是上面的是支付宝公钥,,不是应用公钥,网关不用配置,这个只是提供一个思路,具体实现就不放出来了服务器端大体就这样,返回值如下

    安卓App接入支付宝详解

    服务器到这里就差不多了,安卓端的搭建就直接使用官方的demo修改,

    安卓App接入支付宝详解

    所需要的目录结构就是这样了,然后直接调用接口就可以了,代码如下:

    public void payV2(View v) {
            final String[] res = {""};
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    try {
                        URL url = new URL("http://192.168.137.149/api/");
                        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                        urlConnection.setRequestMethod("GET");
                        urlConnection.setConnectTimeout(6*1000);
                        if(urlConnection.getResponseCode()==200){
                            BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                            String line = "";
                            while ((line = reader.readLine())!=null ){
                                res[0] +=line;
                            }
                            Log.i("订单获取", res[0]);
    
                            Runnable payRunnable = new Runnable() {
    
                                @Override
                                public void run() {
                                    PayTask alipay = new PayTask(PayDemoActivity.this);
                                    Map<String, String> result = alipay.payV2(res[0], true);
                                    Log.i("msp", result.toString());
    
                                    Message msg = new Message();
                                    msg.what = SDK_PAY_FLAG;
                                    msg.obj = result;
                                    mHandler.sendMessage(msg);
                                }
                            };
    
                            Thread payThread = new Thread(payRunnable);
                            EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
                            payThread.start();
                        }
    
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }

    当然,这只是最简单的使用,到这个地方就基本完成了,不过这个是使用的服务器预设的订单信息,实际应用中,应该用客户端传递数据过去,服务器返回加签的订单信息,然后客户端调用sdk支付,最后支付宝服务器,通知app服务器,最后修改订单状态

    安卓App接入支付宝详解转载http://www.codesocang.com/anzhuoyuanma/boke/34590.html
    标签:网站源码