android启调支付宝

网上找了一个可以起吊支付宝的appdemo  ,它集成了服务器端,我先将其分离为app和服务器端,保证app在接收参数后可以启调支付宝
(保证app这边是正确的 不然出错都不知道是服务器出错还是app出错),在
找网上资料修改服务器端,做好app请求接口,和支付宝的服务器回调接口package com.zjyouths.alipaycopy;import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Toast;import com.alipay.sdk.app.EnvUtils;
import com.alipay.sdk.app.PayTask;
import com.google.gson.Gson;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;import java.util.Map;import okhttp3.Call;/***  重要说明:**  这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;*  真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;*  防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;*/
public class MainActivity extends FragmentActivity {//    /** 支付宝支付业务:入参app_id */
//    public static final String APPID = "2016091300504612";/
///** 支付宝账户登录授权业务:入参pid值 *///public static final String PID = "2088102175501574";//** 支付宝账户登录授权业务:入参target_id值 */public static final String TARGET_ID = "";//public static final String TARGET_ID = "urcvnx2393@sandbox.com";
//
//    /** 商户私钥,pkcs8格式 */
//    /** 如下私钥,RSA2_PRIVATE 或者 RSA_PRIVATE 只需要填入一个 */
//    /** 如果商户两个都设置了,优先使用 RSA2_PRIVATE */
//    /** RSA2_PRIVATE 可以保证商户交易在更加安全的环境下进行,建议使用 RSA2_PRIVATE */
//    /** 获取 RSA2_PRIVATE,建议使用支付宝提供的公私钥生成工具生成, */
//    /** 工具地址:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1 */
//    /
//    public static final String RSA2_PRIVATE = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCFimJbsiCByNybhEdIqpen/kQTw/+q4DVeC9xxOwW07RQ0gGNe/Dc85/cm7Dnntnui+xjAsVyWX2tqHz5tAkmqpCe6ukZvodSg4PkIk2wzRi/0zXdP4ZszQ8ei5ZeK8E7ju7K62HkD1M6TUXTuBrfMWypyy0VOhjGeQsH8mOIm2CBZt0nY5RxHTmePWR+w4x6SXYA0jL3n5JF8+KQfGE/nXsZj4uIMHN94ERQySYec/A8FVSWYvzcbIWkQ3s2hVHFPUAj1littZG83qDLnCMtWKT5XYz7gRsXDk49AsOYw7vKlkAYcBdijDAH7nm6WMrI61vmSQ5XVXy0RGNJoiVvZAgMBAAECggEBAILjNzKe7aOnpyq6xU+g/RJIcptY8T+fkE9EmuVUr2w9Lx+ic0OHO/Dzf1hkEwFc5+O/7uv3K0Or9NFIHFyl8GRTjylDKISD/q9MsmpIbLX45kowFPBztTXTClpMZHNmxDwMHctrH3m03GCiZ1Rhu0aOWJW5TI4Bk6KF1jLp+keM/bvnSXooccByBNyg3Dt6sjDj0iNei4JSC0xHmQkCnwLwLsR+0EwlwV92KPA90Fnzi1F1ek83J2+fB/nZOQr6K9Dezkaylnu3CtlfK63103qMq11FySTxh9ND10hqYptrCSdhBl+wHpAGw9SYlQZ/bEIEoYmJesh4Oefnf0gJb7ECgYEA5MqCcAi3WRkQIjqfxE9J/MhFoI0lSiodZpdCJ/JNWW/OSEbyEgkUxDAW6w9COW0YFgev5FjgV3Vps9SWnwUqujKoC+JmKDSVKwT7/VcqCdWXy3ZtrCS0tyWbYbvbXp/0WkH9nGvbnTA5Lm5SIivtL1ay7z9WNG9Y7vU+76AuekUCgYEAlWv+4zBhv3Z1gLbdY6M3ruGKA7FdY7mD86/Oo5yaiFI9njyDsKe2+nb8h8ea79zDoFYY+ZLreAE6TE0fklXEwTwO9DOW0HumbRUIj9mV36yGslJwICFuCMeBml7DYlPtsT54sDPOwEnF4OS9Q+TjM4VWW3s0DDYm8e2RRIys3oUCgYAi6s0xcAMbc/nEX5IWkctG6wHFWQVB5l+KUrdkBVTMu4WN/lXfbsdekcBNq4x92yp74jxz6ySB9IdnTKCYMF+u/yAqgCj7JdtGL4KNzYm66oA6Kx7d0NRLx0+JgPQf4uWWCNA92TAxMzTm4ythz7ZpLSAt50quwfeesIskYxv0yQKBgHm5kdpolqjQCudBkVdTJtCbwcBCZE8SWVFSvmcA887sGHBo4esupdyixBSk4i5XTTK4EP531sVbUq/IAFlI79FvaMs9n7XVlX21rdTqL7MYrF5m1BsIwMf8JzOn0UmwD6ndt5nripmRP9d24EyIESLuk6xQ0NTF5LIfk8EhTM61AoGAVAtkqBA7JEiV9gioLxXafzp4jtuFZPljqwEMtTLm0kcS914mcwm60VfMomM0l2G84UWf74seGhY8dubndJuEa9bKr9pjy1aqvo9T2oDm9ln7q1VUgwwnot23cgW6su0pHDYRi6/wPNu0zwocmTzMUu+3AlHGFEY6zIF6RjoC+XM=";
//    public static final String RSA_PRIVATE = "";private static final int SDK_PAY_FLAG = 1;
//    private static final int SDK_AUTH_FLAG = 2;@SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {@SuppressWarnings("unused")public void handleMessage(Message msg) {switch (msg.what) {case SDK_PAY_FLAG: {@SuppressWarnings("unchecked")PayResult payResult = new PayResult((Map<String, String>) msg.obj);/**对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。*/String resultInfo = payResult.getResult();// 同步返回需要验证的信息String resultStatus = payResult.getResultStatus();// 判断resultStatus 为9000则代表支付成功if (TextUtils.equals(resultStatus, "9000")) {// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();} else {// 该笔订单真实的支付结果,需要依赖服务端的异步通知。Toast.makeText(MainActivity.this, "支付失败", Toast.LENGTH_SHORT).show();}break;}default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);super.onCreate(savedInstanceState);setContentView(R.layout.pay_main);}/*** 支付宝支付业务** @param v*/public void payV2(View v) {//
//        /**
//         * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;
//         * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
//         * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险;
//         *
//         * orderInfo的获取必须来自服务端;
//         */
//        boolean rsa2 = (RSA2_PRIVATE.length() > 0);
//        Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2);
//        String orderParam = OrderInfoUtil2_0.buildOrderParam(params);
//
//        String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;
//        String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2);
//        final String orderInfo = orderParam + "&" + sign;
//        for(int i = 0 ; i < 100 ; i++){
//            System.out.println("orderInfo  "+ orderInfo);
//        }//  todo      orderInfo   服务器返回String url = "http://192.168.8.110:8089/app/order/pay2.do";String money = "0.01";OkHttpUtils.post().url(url).addParams("money",money).build().execute(new StringCallback() {@Overridepublic void onError(Call call, Exception e, int id) {}@Overridepublic void onResponse(String response, int id) {// todo  response.getOrderString()final String orderString ="";System.out.println(response);Gson gson = new Gson();OrderInfo res = gson.fromJson(response, OrderInfo.class);callAliPay(res.getOrderString());}});//        callAliPay(orderInfo);}private void callAliPay(final String orderInfo) {Runnable payRunnable = new Runnable() {@Overridepublic void run() {PayTask alipay = new PayTask(MainActivity.this);Map<String, String> result = alipay.payV2(orderInfo, 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);payThread.start();}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.zjyouths.alipaycopy;import android.text.TextUtils;import java.util.Map;public class PayResult {private String resultStatus;private String result;private String memo;public PayResult(Map<String, String> rawResult) {if (rawResult == null) {return;}for (String key : rawResult.keySet()) {if (TextUtils.equals(key, "resultStatus")) {resultStatus = rawResult.get(key);} else if (TextUtils.equals(key, "result")) {result = rawResult.get(key);} else if (TextUtils.equals(key, "memo")) {memo = rawResult.get(key);}}}@Overridepublic String toString() {return "resultStatus={" + resultStatus + "};memo={" + memo+ "};result={" + result + "}";}/*** @return the resultStatus*/public String getResultStatus() {return resultStatus;}/*** @return the memo*/public String getMemo() {return memo;}/*** @return the result*/public String getResult() {return result;}
}

 

 

 

 

 

package com.zjyouths.alipaycopy;/*** 作者:created by Administrator on 2018/8/10 19:24* 作用:*/
public class OrderInfo {/*** orderString : charset=utf-8&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%22%E9%9D%92%E5%B0%91%E5%B9%B4%E5%81%A5%E5%BA%B7%E5%B7%A5%E7%A8%8B%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22081018412319937%22%7D&method=alipay.trade.app.pay&app_id=2016091300504612&sign_type=RSA2&version=1.0&timestamp=2016-07-29+16%3A55%3A53&sign=AD9o%2FoEYaymBnMA%2BTHM%2BAP2m2R1kASKbFZvFRx7MkvsV0mdUU8raZKpLGixZyq7kYQ3bT9wUU3BSosPLKGmgdYUy8ewVM8MXZ%2B%2BMugQ0EbduRYiAKmM3e1orx%2BGDZOfUFWjKvffzaB2FhUOHWahyFYeRRMlQDGuW%2FDw171bi%2BmqGTr%2FVKu7vkUvV%2FX%2FSgfODr9TzuvB2NGtm3OYrc%2BeVZEkbAVqPsPUB2%2FMSuFll2qcIee%2BfZs5tYDi4nYZ2Z5f2Tu9ANnR%2Bi7mfQWC%2Ba2kzM3OMHshUTS3mI%2BaJ6pcogGjHKVBbxkEZi32lfeDh6O5kKT412h9OxDlgfId1k3JYsg%3D%3D*/private String orderString;public String getOrderString() {return orderString;}public void setOrderString(String orderString) {this.orderString = orderString;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shiro-身份授权流程、案例

一、身份授权流程 首先调用Subject.isPermitted/hasRole接口&#xff0c;委托给SecurityManager.SecurityManager接着会委托给内部组件Authorizer.Authorizer再将其请求委托给我们的Realm去做&#xff0c;Realm才是真正干活的.realm将用户请求的参数封装成权限对象&#xff0c…

对Java的URL类支持的协议进行扩展的方法

转载自 对Java的URL类支持的协议进行扩展的方法JAVA默认提供了对file,ftp,gopher,http,https,jar,mailto,netdoc协议的支持。当我们要利用这些协议来创建应用时&#xff0c;主要会涉及到如下几个类&#xff1a;java.net.URL、java.net.URLConnection、InputStream。URL类默认…

在.Net项目中使用Redis作为缓存服务

最近由于项目需要&#xff0c;在系统缓存服务部分上了redis&#xff0c;终于有机会在实际开发中玩一下&#xff0c;之前都是自己随便看看写写&#xff0c;很零碎也没沉淀下来什么&#xff0c;这次算是一个系统学习和实践过程的总结。 和Redis有关的基础知识 Redis是一个开源的分…

中国的程序员培训是不是有问题?

内容来源于&#xff0c;看最下面的出处&#xff0c;侵删 中国技术开放日的出海团对日本进行了为期一周的访问。笔者随行了头两天&#xff0c;参加Slush Asia大会&#xff0c;并访问了Gungho和Deloitte两家企业。虽然已经在日本生活了四年&#xff0c;但这样的体验却甚少&#x…

后台回调支付宝

https://blog.csdn.net/u012552275/article/details/78320051 网上找了一个可以起吊支付宝的appdemo &#xff0c;它集成了服务器端&#xff0c;我先将其分离为app和服务器端&#xff0c;保证app在接收参数后可以启调支付宝 &#xff08;保证app这边是正确的 不然出错都不知道…

解决高版本SpringBoot整合swagger时启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘ 问题

一、控制台的报错信息 2021-12-29 15:15:04 [main] ERROR org.springframework.boot.SpringApplication - Application run failed org.springframework.context.ApplicationContextException: Failed to start bean documentationPluginsBootstrapper; nested exception is j…

java图片格式转化(例如jpg格式转化png)

转载自 java图片格式转化&#xff08;例如jpg格式转化png&#xff09; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Scanner;import javax.imageio.*; public class FormatConversion {public static final Str…

微软开源PowerShell并支持Linux

建议在Wifi 环境下观看视频 class"video_iframe" data-vidtype"1" style" z-index:1; " height"375" width"500" frameborder"0" data-src"https://v.qq.com/iframe/preview.html?vidv0322g7kd3f&width…

招银网络科技笔试

记录一下 招银网络笔试 2017年09月11日 14:32:53 阅读数&#xff1a;2450 Part1. 30道单选 涉及Java&#xff0c;C&#xff0c;多线程&#xff0c;算法&#xff0c;数据结构&#xff0c;CPU&#xff0c;NP问题&#xff0c;SQL语句&#xff0c;IP地址转换&#xff0c;行测。…

mybatisGenerator逆向工程

一、在pom文件中导入依赖和generator插件 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency&…

2016最佳温情小说:雨还在下....

作者 | 李德霞 来源 | 小小说选刊 哗&#xff0c;一道闪电&#xff1b;轰&#xff0c;一个响雷。 暴雨倾盆&#xff0c;天地间浑沌一片…… 老大扑腾腾坐起来&#xff0c;心也跟着扑腾腾地跳。老大拉亮灯&#xff0c;推推身边的媳妇。媳妇一骨碌爬起来&#xff0c;咋&#xf…

java 中 image 和 byte[] 相互转换

转载自 java 中 image 和 byte[] 相互转换只需要一个存储了图片信息的二进制串&#xff08;byte[]&#xff09; 然后&#xff0c;这样&#xff1a; InputStream buffin new ByteArrayInputStream(/*二进制串*/, /*起始位置*/,/*二进制串长度*/)); BufferedImage img ImageIO…

招银网络

记录一下 招银网络笔试 2017年09月11日 14:32:53 阅读数&#xff1a;2451 Part1. 30道单选 涉及Java&#xff0c;C&#xff0c;多线程&#xff0c;算法&#xff0c;数据结构&#xff0c;CPU&#xff0c;NP问题&#xff0c;SQL语句&#xff0c;IP地址转换&#xff0c;行测。…

Java 文件和byte数组转换

转载自 Java 文件和byte数组转换 /** * 获得指定文件的byte数组 */ private byte[] getBytes(String filePath){ byte[] buffer null; try { File file new File(filePath); FileInputStream fis new FileInputStream(file); ByteArrayOutputStream bos new ByteAr…

json大文件导入数据库

json文件导入数据库 使用Navicat的客户端工具也可以实现json文件导入数据库&#xff0c;但是数据量大了之后&#xff0c;字段的值过于冗长可能会导致数据的截取&#xff0c;是的数据导入不是完整的。 所以另辟蹊径使用其他方法 创建一个新的工程用原始的jdbc实现数据的导入 一…

Docker for Windows使用简介

在上一篇文章中&#xff0c;通过演练指导的方式&#xff0c;介绍了在Docker中运行ASP.NET Core Web API应用程序的过程。本文将介绍Docker for Windows的使用。 先决条件 前两周时间&#xff0c;Docker发布了Docker for Windows的正式版&#xff0c;于是就可以在Windows下运行D…

pagehelper 不分页的解决方法

pagehelper 不分页的解 pagehelper PageHelper.startPage(1, 10);只对该语句以后的第一个查询语句得到的数据进行分页, 就算你在PageInfo pa new PageInfo("",对象);语句里面的对象是写的最终得到的数据,该插件还是只会对第一个查询所查询出来的数据进行分页 第一…

最近流行的12个笑话,好笑又有道理

来源 | 悦读文摘&#xff08;ID&#xff1a;yueduwz&#xff09; 01 一个盲人到亲戚家做客&#xff0c;天黑后&#xff0c;他的亲戚好心为他点了个灯笼&#xff0c;说&#xff1a;“天晚了&#xff0c;路黑&#xff0c;你打个灯笼回家吧&#xff01;” 盲人火冒三丈地说&#x…

java 从jar包中读取资源文件

转载自 java 从jar包中读取资源文件 在代码中读取一些资源文件(比如图片&#xff0c;音乐&#xff0c;文本等等)&#xff0c;在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包&#xff08;将资源文件一并打包&#xff09;以后&#xff0c;这些资源文件找…

json常用的转换

一、json字符串与map的相互转换 首先要导入依赖&#xff0c;用的是fastjson依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.45</version> </dependency>json转map //第一…