Skip to content

Commit d27cf9e

Browse files
committed
Wake up WeChat payment successfully
1 parent 1928061 commit d27cf9e

File tree

4 files changed

+49
-22
lines changed

4 files changed

+49
-22
lines changed

android/app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ flutter {
5757
dependencies {
5858
implementation (name: 'alipaySdk-15.6.4-20190611174341', ext: 'aar')
5959
implementation "com.android.support:appcompat-v7:28.0.0"
60+
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
6061
testImplementation 'junit:junit:4.12'
6162
androidTestImplementation 'com.android.support.test:runner:1.0.2'
6263
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

android/app/src/main/AndroidManifest.xml

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<uses-permission android:name="android.permission.INTERNET" />
55
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
66
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
7+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
8+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
79

810
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
911
calls FlutterMain.startInitialization(this); in its onCreate method.

android/app/src/main/java/com/example/example/MainActivity.java

+32-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import java.util.Map;
44

5+
import org.json.JSONObject;
6+
import com.tencent.mm.opensdk.constants.Build;
7+
import com.tencent.mm.opensdk.modelpay.PayReq;
8+
import com.tencent.mm.opensdk.openapi.IWXAPI;
9+
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
510
import com.alipay.sdk.app.EnvUtils;
611
import com.alipay.sdk.app.PayTask;
712
import android.annotation.SuppressLint;
@@ -34,6 +39,8 @@
3439
import io.flutter.plugins.GeneratedPluginRegistrant;
3540

3641
public class MainActivity extends FlutterActivity {
42+
private IWXAPI api;
43+
3744
private static final String CHANNEL = "examples.flutter.dev/battery";
3845
private static final String CHARGING_CHANNEL = "samples.flutter.io/charging";
3946
private static final String PAY_BROADCAST = "examples.pay.android.broadcast";
@@ -57,6 +64,7 @@ public void handleMessage(Message msg) {
5764
protected void onCreate(Bundle savedInstanceState) {
5865
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
5966
super.onCreate(savedInstanceState);
67+
api = WXAPIFactory.createWXAPI(this, "wxb4ba3c02aa476ea1");
6068
requestPermission();
6169
GeneratedPluginRegistrant.registerWith(this);
6270

@@ -92,7 +100,9 @@ public void onMethodCall(MethodCall call, Result result) {
92100
payV2(payInfo);
93101
break;
94102
case "wxpay":
95-
result.success("微信支付暂不支持");
103+
//result.success("微信支付暂不支持");
104+
final Map<String, String> content = call.argument("payInfo");
105+
weChatPay(content);
96106
break;
97107
case "test":
98108
multiThreadedTest();
@@ -104,6 +114,27 @@ public void onMethodCall(MethodCall call, Result result) {
104114
});
105115
}
106116

117+
private void weChatPay(Map<String, String> content){
118+
System.out.println(content.toString());
119+
try {
120+
PayReq request = new PayReq();
121+
122+
request.appId = content.get("appid");
123+
request.partnerId = content.get("partnerid");
124+
request.prepayId = content.get("prepay_id");
125+
request.packageValue = content.get("package");
126+
request.nonceStr = content.get("nonce_str");
127+
request.timeStamp = content.get("timestamp");
128+
request.sign = content.get("sign");
129+
130+
showToast(this, "正常调起支付");
131+
api.sendReq(request);
132+
} catch (Exception e){
133+
System.out.println("调起微信支付异常");
134+
}
135+
136+
}
137+
107138
private BroadcastReceiver createChargingStateChangeReceiver(final EventSink events) {
108139
return new BroadcastReceiver() {
109140
@Override

lib/base/Alipay.dart

+14-21
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import 'package:flutter/services.dart';
1313
class Post {
1414
final int code;
1515
final String message;
16-
final String content;
16+
final dynamic content;
1717

1818
Post({this.code, this.message, this.content});
1919

@@ -33,6 +33,7 @@ class AlipayDemo extends StatefulWidget {
3333
}
3434

3535
class _AlipayDemoState extends State<AlipayDemo> {
36+
final String base = "http://192.168.98.20:8080/";
3637
static const MethodChannel platform =
3738
const MethodChannel('examples.flutter.dev/battery');
3839
static const EventChannel eventChannel =
@@ -48,28 +49,21 @@ class _AlipayDemoState extends State<AlipayDemo> {
4849

4950
Future<void> _wxPay() async {
5051
// final String message = await platform.invokeMethod("wxpay");
51-
// _neverSatisfied(message);
52-
final client = new http.Client();
53-
Post result;
52+
final Post result = await _payment("wxpay");
5453
try {
55-
final response = await client
56-
.get("https://wxpay.wxutil.com/pub_v2/app/app_pay.php")
57-
.timeout(const Duration(seconds: 5));
58-
result = Post.fromJson(json.decode(response.body));
54+
if (result.code == 200) {
55+
await platform.invokeMethod(
56+
"wxpay", <String, dynamic>{"payInfo": result.content});
57+
} else {
58+
_neverSatisfied("错误编码: ${result.code}, 错误信息: ${result.message}");
59+
}
5960
} on PlatformException catch (e) {
60-
result = Post(code: int.parse(e.code), message: e.message, content: e.toString());
61-
} on TimeoutException catch (e) {
62-
result = Post(code: 408, message: e.message, content: e.toString());
63-
} on FormatException catch (e) {
64-
result = Post(code: 405, message: e.message, content: e.toString());
65-
} on SocketException catch (e) {
66-
result = Post(code: 407, message: e.message, content: e.toString());
61+
_neverSatisfied(e.message);
6762
}
68-
print("打印结果: $result.toString()");
6963
}
7064

7165
Future<void> _initiatedPayment() async {
72-
final Post result = await _payment();
66+
final Post result = await _payment("alipay");
7367
try {
7468
if (result.code == 200) {
7569
_sendPaymentParameters(result.content);
@@ -109,13 +103,12 @@ class _AlipayDemoState extends State<AlipayDemo> {
109103
);
110104
}
111105

112-
Future<Post> _payment() async {
106+
Future<Post> _payment(String type) async {
113107
final client = new http.Client();
114108
Post result;
115109
try {
116-
final response = await client
117-
.get("http://192.168.98.20:8080/alipay")
118-
.timeout(const Duration(seconds: 5));
110+
final response =
111+
await client.get(base + type).timeout(const Duration(seconds: 5));
119112
result = Post.fromJson(json.decode(response.body));
120113
} on PlatformException catch (e) {
121114
result = Post(

0 commit comments

Comments
 (0)