Android 支付包 和 微信 支付 - Go语言中文社区

Android 支付包 和 微信 支付


你的打赏,是对我最大的支持:

 

支付宝:百度支付宝开发者平台 

地址:https://open.alipay.com/platform/home.htm

进入 我的开放平台:

 

自行创建:

快速接入支付能力

 

 

生成RSA秘钥

我们按照文档上来,首先是下载工具了,这里有win和mac两个地址,我是win,下载下来是这个样子的

这里写图片描述

我们按照图中的配置拿到了公钥和私钥

这里写图片描述

那我们可以配置了,我们找到项目详情

这里写图片描述

然后这里是两种方式,我们选择的是RSA方式么其实哪种方式都是可以的

这里写图片描述

 

可以看一下: 支付宝开放平台文档https://docs.open.alipay.com/200/105310

 

如何从RSA1升级到RSA2?https://opensupport.alipay.com/support/knowledge/20069/201602242782#/?_k=xj2m2v

最后提交,不知道等多久 ,再等待中。。。。

 

 

1.将支付宝SDK拷贝到项目libs文件夹下,如果没有libs文件夹,就新建一个。

201.png

2.如果sdk使用过程中,提示找不到文件。
进行如下操作,选中sdk文件,右击选择Reveal in Finder

202.png

五:修改AndroidManifest.xml配置

1.在商户应用工程的AndroidManifest.xml文件里面添加声明:

<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 android:name="android.permission.INTERNET">
<uses android:name="android.permission.ACCESS_NETWORK_STATE">
<uses android:name="android.permission.ACCESS_WIFI_STATE">
<uses android:name="android.permission.READ_PHONE_STATE">
<uses android:name="android.permission.WRITE_EXTERNAL_STORAGE">

六:添加混淆规则

在商户应用工程的proguard-project.txt里添加以下相关规则:

-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 *;}

第一行中的alipaySDK-20150602.jar,其中20150602是此版本发布的日期,注意将其修改为你导入的Jar的相应的文件名。

到这里,支付宝支付的前期配置已经完成,下面需要完成支付代码编写。

支付接口调用

  1. 在点击支付按钮的点击事件中,我提供的是从后端获取订单字符串,然后调用支付宝接口,调起支付。
  2. 需要在新线程中调用支付接口。代码如下:
//    支付按钮
    public void onClick(View view) {
        //起一个线程
        Runnable payRunnable = new Runnable() {
            @Override
            public void run() {
                String data = null;
                PayBean payBean = new PayBean();
                payBean.setOrderTime("");
                String json = new Gson().toJson(payBean);
                //json为获取后端结果时需要提供给后端订单信息,例如:时间、金额、订单属性等
                Log.i("charge request", json);
                try {
                    //data为后端返回数据,其中包括订单字符串
                    data = postJson(CHARGE_URL, json);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                // Json解析data
                ChargeBean charge = new Gson().fromJson(data, ChargeBean.class);
                //获取调起支付所需要的字符串credential
                String credential = (String) charge.getResult().getCredential();
                // 调起支付界面
                PayTask alipay = new PayTask(ThirdActivity.this);
                Map<String> result = alipay.payV2(credential, true);
                //在mHandler中处理支付宝返回结果
                Message msg = new Message();
                msg.what = SDK_PAY_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };
        // 必须异步调用
        Thread payThread = new Thread(payRunnable);
        payThread.start();
    }
  1. 在mHandler中处理支付结果
private Handler mHandler = new Handler() {

        public void handleMessage(Message msg) {
            if (msg.what == SDK_PAY_FLAG) {

                Toast.makeText(ThirdActivity.this, (String) msg.obj,
                        Toast.LENGTH_LONG).show();

                PayResult payResult = new PayResult((Map<String>) msg.obj);
                /**
                 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
                if (resultStatus.equals("9000")) {
                    Toast.makeText(ThirdActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
                }else if (resultStatus.equals("4000")){

                    // 4000为支付失败,包括用户主动取消支付,或者系统返回的错误
                    Toast.makeText(ThirdActivity.this, "支付失败", Toast.LENGTH_SHORT).show();

                }else if (resultStatus.equals("6001")){

                    // 6001为取消支付,或者系统返回的错误
                    Toast.makeText(ThirdActivity.this, "取消支付", Toast.LENGTH_SHORT).show();

                }else if (resultStatus.equals("8000")) {
                    // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
                    Toast.makeText(ThirdActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();
                }else {
                    // 其他为系统返回的错误
                    Toast.makeText(ThirdActivity.this, "支付错误", Toast.LENGTH_SHORT).show();

                }
            }
        }
    };

 

 

 

 

 

微信支付:

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_32034593/article/details/82977696
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢