Android 3分钟集成微信支付

微信支付和支付宝支付一样,分为三部曲:

  • 向服务器发送请求,服务器返回订单信息
  • 调用微信请求发起支付
  • 处理回调结果(在WXPayEntryActivityonResp方法中)

依赖

//微信支付
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

权限

普通权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

高危权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

包名目录下创建wxapi文件夹,新建WXPayEntryActivity(WXEntryActivity可不创建)

WXPayEntryActivity代码如下(此Activity一定要实现IWXAPIEventHandler接口):

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private static final String TAG = "WXPayEntryActivity";

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, MyApplication.WXAPPID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
        LogUtils.d(TAG, "WXPayEntryActivity = " + req.openId);
    }

    @Override
    public void onResp(BaseResp resp) {
        LogUtils.d(TAG, "WXPayEntryActivity = " + resp.errCode);

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX){
            if (resp.errCode == 0){ //支付成功

            } else {
                Toast.makeText(this,"支付失败,请重试",Toast.LENGTH_SHORT).show();
            }
            finish();
        }
    }
}

### 清单文件

即`AndroidManifest.xml`文件中声明支付所需的Activity

```xml

向服务器发送请求,服务器返回订单信息,发起支付

发起支付代码如下,以下字段除应用ID外都为服务器返回:

IWXAPI wxapi = WXAPIFactory.createWXAPI(this, MyApplication.WXAPPID);  //应用ID 即微信开放平台审核通过的应用APPID
wxapi.registerApp(MyApplication.WXAPPID);    //应用ID
PayReq payReq = new PayReq();
payReq.appId = MyApplication.WXAPPID;        //应用ID
payReq.partnerId = bean.getPartnerId();      //商户号 即微信支付分配的商户号
payReq.prepayId = bean.getPrepayId();        //预支付交易会话ID
payReq.packageValue = bean.getPackageX();    //扩展字段
payReq.nonceStr = bean.getNonceStr();        //随机字符串不长于32位。
payReq.timeStamp = "" + bean.getTimeStamp(); //时间戳
payReq.sign = bean.getPaySign();             //签名
wxapi.sendReq(payReq);

处理回调

回调结果在WXPayEntryActivityonResp方法中

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/30/android-3-minute-integrated-wechat-payment/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Android 3分钟集成微信支付
微信支付和支付宝支付一样,分为三部曲: 向服务器发送请求,服务器返回订单信息 调用微信请求发起支付 处理回调结果(在WXPayEntryActivity的onResp方法中)……
<<上一篇
下一篇>>
文章目录
关闭
目 录