Android 微信支付 支付宝支付简单使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Mr___Xu/article/details/86079919

微信支付:

1.添加依赖:

implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

2. 报名下建文件夹wxapi 

.

3.

我这里是有一个分享的回调 不用管那个   支付需要的是WXPayEntryActivity这个 

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private Context context = this;
    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        api = WXAPIFactory.createWXAPI(this, ConstUtils.WXID);
        api.handleIntent(getIntent(), this);
    }

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

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp resp) {
        Log.e("=====", resp.errCode + "");
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            if (resp.errCode == 0) {
                Toast.makeText(this, "支付成功", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(this, "支付失败", Toast.LENGTH_LONG).show();
            }
            finish();
        }
    }
}

4.在Androidmanifest中:

<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop">

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="你的APPID" />
    </intent-filter>

</activity>

5.调用

IWXAPI api = WXAPIFactory.createWXAPI(TestActivity.this, ConstUtils.WXID);//AppId
PayReq req = new PayReq();
req.appId = response.body().getAppid();
req.partnerId = response.body().getPartnerid();
req.prepayId = response.body().getPrepayid();
req.nonceStr = response.body().getNoncestr();
req.timeStamp = response.body().getTimestamp();
req.packageValue = "Sign=WXPay";
req.sign = response.body().getSign();//签名后天返回的
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
api.registerApp(ConstUtils.WXID);
api.sendReq(req);

微信支付结束     其实都集成过好几次了   还是遇到了坑  后台那边选择了沙箱环境  转成为正式就没有问题了 

扫描二维码关注公众号,回复: 7191017 查看本文章

支付宝支付:

导入支付宝 SDK

下载地址:https://download.csdn.net/download/mr___xu/10906070  (或者到官网下载)

一、将 alipaySdk-15.5.7-20181023110917.aar 包放在您的应用工程的 libs 目录下(图片中文件名仅做示例,请以实际 SDK 文件名为准):

二、在您主项目的 build.gradle 中,添加下面的内容,将 libs 目录作为依赖仓库:

image

allprojects {
    repositories {

        // 添加下面的内容
        flatDir {
            dirs 'libs'
        }

        // ... jcenter() 等其他仓库
    }
}

三、在您 App Module 的 build.gradle 中,添加下面的内容,将支付宝 SDK 作为项目依赖:

image

dependencies {

    // 添加下面的内容
    compile (name: 'alipaySdk-15.5.7-20181023110917', ext: 'aar')

}


至此,支付宝 SDK 开发资源导入完成。

申请运行时权限

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.READ_PHONE_STATE
android.permission.WRITE_EXTERNAL_STORAGE

支付接口调用

PayTask对象主要为商户提供订单支付、查询功能,及获取当前开发包版本号。
获取PayTask支付对象调用支付(支付行为需要在独立的非ui线程中执行),代码示例:

final String orderInfo = info;   // 订单信息

		Runnable payRunnable = new Runnable() {

			@Override
			public void run() {
				PayTask alipay = new PayTask(DemoActivity.this);
				String result = alipay.payV2(orderInfo,true);

				Message msg = new Message();
				msg.what = SDK_PAY_FLAG;
				msg.obj = result;
				mHandler.sendMessage(msg);
			}
		};
	     // 必须异步调用
		Thread payThread = new Thread(payRunnable);
		payThread.start();

支付结果获取和处理

调用pay方法支付后,将通过2种途径获得支付结果:

同步返回
商户应用客户端通过当前调用支付的Activity的Handler对象,通过它的回调函数获取支付结果。(可参考alipay_demo实现)
代码示例:

private Handler mHandler = new Handler() {
		public void handleMessage(Message msg) {
			Result result = new Result((String) msg.obj);
			Toast.makeText(DemoActivity.this, result.getResult(),
						Toast.LENGTH_LONG).show();
		};
	};

异步通知
商户需要提供一个http协议的接口,包含在请求支付的入参中,其key对应notify_url。支付宝服务器在支付完成后,会以POST方式调用notify_url传输数据。

获取当前开发包版本号

调用PayTask对象的getVersion()方法查询。

代码示例:

PayTask payTask = new PayTask(activity);
String version = payTask.getVersion();

猜你喜欢

转载自blog.csdn.net/Mr___Xu/article/details/86079919