卡姿兰网站建设策划书,电子商务网站建设与设计论文,兰州新区农投建设网站,线上网站开发系统流程网上找了一个可以起吊支付宝的appdemo #xff0c;它集成了服务器端#xff0c;我先将其分离为app和服务器端#xff0c;保证app在接收参数后可以启调支付宝
#xff08;保证app这边是正确的 不然出错都不知道是服务器出错还是app出错#xff09;#xff0c;在
找网上资…网上找了一个可以起吊支付宝的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 urcvnx2393sandbox.com;
//
// /** 商户私钥pkcs8格式 */
// /** 如下私钥RSA2_PRIVATE 或者 RSA_PRIVATE 只需要填入一个 */
// /** 如果商户两个都设置了优先使用 RSA2_PRIVATE */
// /** RSA2_PRIVATE 可以保证商户交易在更加安全的环境下进行建议使用 RSA2_PRIVATE */
// /** 获取 RSA2_PRIVATE建议使用支付宝提供的公私钥生成工具生成 */
// /** 工具地址https://doc.open.alipay.com/docs/doc.htm?treeId291articleId106097docType1 */
// /
// public static final String RSA2_PRIVATE MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCFimJbsiCByNybhEdIqpen/kQTw/q4DVeC9xxOwW07RQ0gGNe/Dc85/cm7DnntnuixjAsVyWX2tqHz5tAkmqpCe6ukZvodSg4PkIk2wzRi/0zXdP4ZszQ8ei5ZeK8E7ju7K62HkD1M6TUXTuBrfMWypyy0VOhjGeQsH8mOIm2CBZt0nY5RxHTmePWRw4x6SXYA0jL3n5JF8KQfGE/nXsZj4uIMHN94ERQySYec/A8FVSWYvzcbIWkQ3s2hVHFPUAj1littZG83qDLnCMtWKT5XYz7gRsXDk49AsOYw7vKlkAYcBdijDAH7nm6WMrI61vmSQ5XVXy0RGNJoiVvZAgMBAAECggEBAILjNzKe7aOnpyq6xUg/RJIcptY8TfkE9EmuVUr2w9Lxic0OHO/Dzf1hkEwFc5O/7uv3K0Or9NFIHFyl8GRTjylDKISD/q9MsmpIbLX45kowFPBztTXTClpMZHNmxDwMHctrH3m03GCiZ1Rhu0aOWJW5TI4Bk6KF1jLpkeM/bvnSXooccByBNyg3Dt6sjDj0iNei4JSC0xHmQkCnwLwLsR0EwlwV92KPA90Fnzi1F1ek83J2fB/nZOQr6K9Dezkaylnu3CtlfK63103qMq11FySTxh9ND10hqYptrCSdhBlwHpAGw9SYlQZ/bEIEoYmJesh4Oefnf0gJb7ECgYEA5MqCcAi3WRkQIjqfxE9J/MhFoI0lSiodZpdCJ/JNWW/OSEbyEgkUxDAW6w9COW0YFgev5FjgV3Vps9SWnwUqujKoCJmKDSVKwT7/VcqCdWXy3ZtrCS0tyWbYbvbXp/0WkH9nGvbnTA5Lm5SIivtL1ay7z9WNG9Y7vU76AuekUCgYEAlWv4zBhv3Z1gLbdY6M3ruGKA7FdY7mD86/Oo5yaiFI9njyDsKe2nb8h8ea79zDoFYYZLreAE6TE0fklXEwTwO9DOW0HumbRUIj9mV36yGslJwICFuCMeBml7DYlPtsT54sDPOwEnF4OS9QTjM4VWW3s0DDYm8e2RRIys3oUCgYAi6s0xcAMbc/nEX5IWkctG6wHFWQVB5lKUrdkBVTMu4WN/lXfbsdekcBNq4x92yp74jxz6ySB9IdnTKCYMFu/yAqgCj7JdtGL4KNzYm66oA6Kx7d0NRLx0JgPQf4uWWCNA92TAxMzTm4ythz7ZpLSAt50quwfeesIskYxv0yQKBgHm5kdpolqjQCudBkVdTJtCbwcBCZE8SWVFSvmcA887sGHBo4esupdyixBSk4i5XTTK4EP531sVbUq/IAFlI79FvaMs9n7XVlX21rdTqL7MYrF5m1BsIwMf8JzOn0UmwD6ndt5nripmRP9d24EyIESLuk6xQ0NTF5LIfk8EhTM61AoGAVAtkqBA7JEiV9gioLxXafzp4jtuFZPljqwEMtTLm0kcS914mcwm60VfMomM0l2G84UWf74seGhY8dubndJuEa9bKr9pjy1aqvo9T2oDm9ln7q1VUgwwnot23cgW6su0pHDYRi6/wPNu0zwocmTzMUu3AlHGFEY6zIF6RjoCXM;
// 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((MapString, 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);
// MapString, 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);MapString, 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(MapString, 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 : charsetutf-8biz_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%7Dmethodalipay.trade.app.payapp_id2016091300504612sign_typeRSA2version1.0timestamp2016-07-2916%3A55%3A53signAD9o%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;}
}