App内实现微信H5付款
先来看下演示效果
想利用yungouos平台的sdk做微信H5支付,但是没有查到在AS开发的Demo,只好自己琢磨了。由于本人也是第一次做微信支付,期间遇到非常多的问题,也查阅了很多的资料,总算将步骤理清楚了!!!写下这篇文章为了记录一下,也为后来人有个参考。
最主要的思路还是yungouos官方的一个Demo:
uniapp开发APP接入个人微信支付、支付宝接口实战演练(附源码)
教程开始
在build.gradle导入两种类型的jar包
dependencies模块
- yungouos SDK
//yungouos支付接口
implementation ('com.yungouos.pay:yungouos-pay-sdk:2.0.9')
- 异步请求
//异步
implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
然后在android模块还需注明引用 java 1.8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
activity_main.xml部分代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="500px"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="payTest"
android:text="立即支付"
android:textSize="36sp" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</LinearLayout>
然后在做微信支付之前,还需请求网络权限
AndroidManifest.xml 添加
<uses-permission android:name="android.permission.INTERNET" />
然后就是两个Java类了
MainActivity 类
import android.Manifest;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.view.View;
import android.webkit.SslErrorHandler;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.yungouos.pay.entity.PayOrder;
import com.yungouos.pay.order.SystemOrder;
import com.yungouos.pay.wxpay.WxPay;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import io.reactivex