Android ping++接入

         目前呢,像市场上算是比较的流行的和使用,其实也就无外乎那几种!  支付宝和微信两大主流,银联,百度,qq钱包,等!其实个人来看觉的项目的使用一般基本上是前三种,相信大家在做App的时候多多少的都接触过,基本上也都集成过!之前自己使用的是单个的去集成,像支付宝以及微信都是去下载相应的sdk去集成,确实只有自己集成才知道!坑是必须的安静!     最近的一个项目也运用到了支付,本次的使用是用ping++来完成的!

UI展示:

整个布局算是基本,一个listview搞定!大体的功能就是选着你想要的支付类型,下面还有一个确定选着的按钮,用于确定选择调用相对应的支付界面!

ping++使用:

首先来看一下官网的基本步骤(详情自己去官网了解就好!):


这是官网提供的步骤:绿色为可点击见详情,

第一步:我们可以看到服务端和客户端可以直接进入去下载相应的sdk文件等;直接展示客户端的吧奋斗


客户端点击进入之后:如上,你要知道的是

clint sdk 和壹收款sdk 的区别:

Client SDK 不提供任何页面,可完全自定义页面!壹收款提供选择支付渠道和支付成功的页面,页面不可自定义!

理解之后,你就可以选择自己的需要了!奋斗

本人的选择是clint 的接入:确定选着之后当然是下载他的sdk了!在主页直接有clint端的接入,点击进来之后,左边一列有客户端接入简介:有两端的指南,想要快速体验的可以直接点击!

主页的上面直接sdk下载点击进入,如上图片,点击android即可!就可以看到PingPiusPlus直接Clone or download!

pingpp-android-master就是了!

直接上资源:

下面的就是导入项目的问题:有几种方式

Android Studio:

1. 在你的项目里选择 `Import Module...`,Source directory 定位到 `pingpp-android` 目录,也就是 SDK 的根目录。
2. 取消勾选 `:example`,将 `:lib:pingpp` 和 `:lib:bdwallet_pay_sdk` 导入。
3. 将 `:lib:pingpp` 添加到你的项目的 Dependencies。或者直接在 build.gradle 的 dependencies 区块添加如下代码。

我是直接将添加到gradle,你也可以去引用!

compile 'com.pingxx:pingpp-core:2.1.+'//必须添加
compile 'com.pingxx:pingpp-alipay:2.1.+'//使用支付宝时添加
compile 'com.pingxx:pingpp-upacp:2.1.+'//使用银联支付时添加
compile 'com.pingxx:pingpp-wxpay:2.1.+'//使用微信支付时添加

Eclipse:

1. 将 `lib` 目录作为 Library Porject 导入。
2. 导入后,把 pingpp 项目作为你的项目的依赖库。

权限声明:(可根据你支付的类型进行选择!)

<!-- 通用权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 银联需要的权限 -->
<uses-permission android:name="android.permission.NFC" />
<!-- 百度支付需要的权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_SMS" />

activity 的清单文件(这是也是可以根据的需要导入相应的activity,我的项目是如下:)

<!-- 微信支付 -->
<activity-alias
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:targetActivity="com.pingplusplus.android.PaymentActivity" />

<!-- 支付宝 -->
<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>

<!-- 银联支付 -->
<activity android:name="com.unionpay.uppay.PayActivity" />
三:准备完成之后就的获取charge对象!

这个是什么:简单的说就是后端提供给你的接口,比如传入订单和金额,所给的返回,其实就是charge对象!它的作用就是在发起支付的时候,必须要的!

Charge 对象是一个包含支付信息的 JSON 对象,是 Ping++ SDK 发起支付的必要参数。该参数需要请求用户服务器获得,服务端生成 charge 的方式参考 [Ping++ 开发指南](https://www.pingxx.com/docs/overview)。SDK 中的 demo 里面提供了如何获取 charge 的实例方法,供用户参考。
四:就要开启支付了

其实没你想的那么难,一句话搞定!(金大哥还是挺牛的、赞一个!)

Pingpp.createPayment(上下文, data);后面的参数就是后端返回的charge对象!

这里要注意的是qq钱包(它需要与清单文件data值一致!)

五、就是回调了!

从 Activity 的 onActivityResult 方法中获得支付结果。支付成功后,用户服务器也会收到ping++ 服务器发送的异步通知。 最终支付成功请根据服务端异步通知为准。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //支付页面返回处理
    if (requestCode == Pingpp.REQUEST_CODE_PAYMENT) {
        if (resultCode == Activity.RESULT_OK) {
            String result = data.getExtras().getString("pay_result");
        /* 处理返回值
         * "success" - 支付成功
         * "fail"    - 支付失败
         * "cancel"  - 取消支付
         * "invalid" - 支付插件未安装(一般是微信客户端未安装的情况)
         */
            String errorMsg = data.getExtras().getString("error_msg"); // 错误信息
            String extraMsg = data.getExtras().getString("extra_msg"); // 错误信息
            showMsg(result, errorMsg, extraMsg);
        }
    }
}
public void showMsg(String title, String msg1, String msg2) {
    String str = title;
    if (null !=msg1 && msg1.length() != 0) {
        str += "\n" + msg1;
    }
    if (null !=msg2 && msg2.length() != 0) {
        str += "\n" + msg2;
    }
    AlertDialog.Builder builder = new AlertDialog.Builder(BossPayOrderActivity.this);
    builder.setMessage(str);
    builder.setTitle("提示");
    builder.setPositiveButton("OK", null);
    builder.create().show();
}

如上的:可根据需要是否选着!

先展示一下成功的调用结果(支付宝):



挺方便的嘛!哈哈奋斗

下面就介绍一下注意的事项吧!

1:Android 不允许再 UI 线程中进行网络请求,所以请求 charge 对象的时候请使用 thread+handler 或者使用 AsyncTask 。example 里面的示例程序使用的就是 AsyncTask 方式请求 charge 对象。写demo的时候要注意!

2:在刚开始写的时候,获取的json解析后charge对象是类似乱码,或者出现获取不到的问题,这时候我们这边也要尽量检查一下,之后在联系后端一下!(因为多半是后端的问题!尴尬

3:我在微信集成的时候出现了一个问题,前提是charge都获取到了,但是始终启动不了微信的支付界面,但是手机会有反应,界面会颤动一下!

后来通过回调打印出信息

showMsg(result, errorMsg, extraMsg);
分别是 :fail        channel_return_fail              wx_err_code:-1

坑了很久!

原因:微信验证apk的签名包失败!(是谁申请的,我保证不打死他!抓狂

解决方案:

1、项目的 package 名字、AndroidManifest.xml 里面的包名,必须和微信开放平台注册的一致;

2、必须打包成为发布版本的 apk,apk 签名必须和在微信开放平台注册的一致,微信开放平台签名要求: MD5,无冒号;

3、清理微信缓存;

4、如果签名包名均正确,仍旧返回 -1 报错,请检查时间戳格式是否有问题或重置微信开放平台的安卓版本的签名包名。




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值