接受的类PayResult
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);
}
}
}
@Override
public 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;
}
}
注册
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<activity
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
</activity>
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
混淆
-libraryjars libs/alipaySDK-20150602.jar
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
//支付宝支付
private void zfbPay(String orderId) {
SharedPreferences sharedPreferences = getSharedPreferences("Movie",MODE_PRIVATE);
userId = sharedPreferences.getInt("userId", 0);
sessionId = sharedPreferences.getString("sessionId", "");
String path = "http://172.17.8.100/movieApi/movie/v1/verify/pay";
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.SECONDS)
.writeTimeout(5000, TimeUnit.SECONDS)
.readTimeout(5000, TimeUnit.SECONDS)
.build();
//3.x版本post请求换成FormBody 封装键值对参数
FormBody.Builder builder = new FormBody.Builder();
builder.add("payType", "2");
builder.add("orderId", orderId);
Log.d("TAG","sessionId"+sessionId);
Request request = new Request.Builder()
.url(path)
.addHeader("userId", userId + "")
.addHeader("sessionId", sessionId)
.addHeader("ak", "0110010010001")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.post(builder.build())
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("aaa", "PayActivity onFailure:" + e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 获取必须来自服务端 预支付结果订单信息
String signResult = response.body().string();
Log.i("aaa", "PayActivity onResponse:" + signResult.toString());
// 构造PayTask 支付宝对象
PayTask alipay = new PayTask(PayActivity.this);
// 调用支付接口,获取支付结果
String result = alipay.pay(signResult, true);
Message msg = new Message();
msg.what = PAY_OK;
msg.obj = result;
mHandler.sendMessage(msg);
}
});
}
//支付宝返回数据handler
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case PAY_OK:
PayResult payResult = new PayResult((Map<String, String>) msg.obj);
//同步获取结果
String resultInfo = payResult.getResult();
Log.i("Pay", "Pay:" + resultInfo);
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
Toast.makeText(PayActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
}
break;
}
}
};
记得还有 jar包