文档章节

Android游戏集成豌豆荚支付

zxc1991
 zxc1991
发布于 2014/04/26 10:34
字数 773
阅读 610
收藏 5
点赞 0
评论 0

 在使用豌豆荚支付之前,先要下载豌豆荚SDK并阅读一下豌豆荚文档 SDK和文档

首先添加wdjpayplugin.jar到Android工程libs目录下,再添加assets_wdj420.apk到assets下

具体的实现:

  1. 首先要初始化SDK,在onCreate方法中初始化

    PayConfig.init(context, appkey_id, secretkey);// appkey_id,secret是在豌豆荚平台由开发者申请的
  2. 让用户登录豌豆荚平台

      private WandouAccount account = new WandouAccountImpl();
    
      account.doLogin(context, new LoginCallBack() {
            @Override
            public void onSuccess(User user, int type) {
              // 豌豆荚账户UID
              Long uid = user.getUid();
              // 豌豆荚账户昵称
              String nick = user.getNick();
              // 豌豆荚账户登录验证 Token ,15分钟内有效
              String token = user.getToken();
              // 1.请把uid,token 提交游戏服务器
              // 2.游戏服务器收到uid,token后提交给豌豆荚服务器验证
              // 3.验证通过后,游戏服务器生成一个 cookie 给游戏客户端使用
              // 4.游戏客户端得到游戏的cookie 与游戏服务器进行交互通信,保证身份验证安全
  3. 支付:

    public void pay(float money){
     WandouPay wandouPay = new WandouPayImpl();
          WandouOrder order = new WandouOrder(""// 游戏名称
              , ""),// 商品名称
              (long) (money * 100));//钱数
          // 设置游戏订单号,最长50个字符
          order.setOut_trade_no("订单号");
          // 触发支付
          wandouPay.pay(context, order, new PayCallBack() {
            @Override
            public void onSuccess(User user, WandouOrder order) {
              Log.i("ccc", "onSuccess:" + order);
            }
    
            @Override
            public void onError(User user, WandouOrder order) {
              Log.i("ccc", "onError:" + order);
            }
          });
    }

支付中的onSuccess回调只是代表客户端支付完成,具体付款成功是以豌豆荚服务器通知回调为准。

在豌豆荚开发者后台上传应用时,需要配置一个回调地址,这个回调地址就是豌豆荚用来通知游戏服务器支付成功的,在支付成功之后豌豆荚服务器会以post方式去请求这个url

post中所带参数有以下三种类型:

具体服务器端实现(java,服务器参考代码也在sdk文档中):

  1. RSA验证:

    boolean check = WandouRsa.doCheck(content, sign);//content sign分别是上面post中的内容
    //RSA校验
    public static boolean doCheck(String content, String sign) {
            try {
                KeyFactory keyFactory = KeyFactory.getInstance("RSA");
                byte[] encodedKey = Base64.decode(WandouPublicKey);
                PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
    
                java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
    
                signature.initVerify(pubKey);
                signature.update(content.getBytes("utf-8"));
    
                boolean bverify = signature.verify(Base64.decode(sign));
                return bverify;
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return false;
        }
  2. 在校验成功之后,服务器端进行购买成功之后操作,如增加金币,解锁装备等。注意豌豆荚为防止漏单,会在游戏服务器没有返回success之后多次请求回调url,应当注意success并增加防止重复订单机制,防止多次加钱

支付测试:

豌豆荚不像谷歌,91有支付测试环境,具体的支付测试需要支付真实money(囧)。不过办法总是有的:我们可以将支付金额设置为0.01元,之后用支付宝进行测试,因为银行卡最低支付金额是1元。

待支付宝支付成功之后,再测试1元的银行卡或信用卡支付,这两种支付都成功之后,应该就差不多了。

© 著作权归作者所有

共有 人打赏支持
zxc1991
粉丝 0
博文 5
码字总数 2232
作品 0
海淀
程序员
tcgames无需安卓模拟器电脑玩手游连接黑屏、闪退、连接不上问题汇总

tcgames连接不上手机怎么办?tcgames连接电脑黑屏闪退如何解决?tcgames为什么一直显示正在连接中?tcgames是一款无需安卓模拟器也可以在电脑上玩手机游戏匹配手游服玩家的工具,部分玩家在使...

cdjiehua
03/27
0
0
eclipse Adb启动不了的问题总结

最近在使用Eclipse调试程序时发现在项目上run Android Aplication,总是提示 Please ensure that adb is correctly located 解决办法如下: 1. 由于我安装了 豌豆荚2, 上网查了下说是 豌豆荚...

姜仁友
2012/09/01
0
1
Android组件及UI框架大全

Android 是目前最流行的移动操作系统(还需要加之一吗?)。 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件。 本文试图将目前流行...

千山万水
2015/07/13
0
0
Android组件及UI框架大全

Android 是目前最流行的移动操作系统(还需要加之一吗?)。 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件。 本文试图将目前流行...

千山万水
2015/07/13
0
4
Android Studio 入门 Hello World

引言 前两天开始学习android开发,本来想用eclipse进行开发,但是到https://developer.android.com 上一看,发现android studio被大力推广,说明google已经把ide重心投入到了android sdudio上...

jiangmitiao
2015/06/18
0
0
eclipse android环境配置问题以及解决途径汇总

第一次自己搭建android环境,运行eclipse的时候,就是不能运行出android avd(虚拟机),老是出现"emulator-arm.exe已停止工作" 的提示框,这个问题解决后又出现了adb.exe不能启动问题,新建...

fanfangogo
2012/08/31
0
1
Android版OpenGL游戏引擎的集成KeyMob管理库教程

一:前提条件 1:下载适用于 Android的Google移动广告SDK 二:OpenGL游戏---横幅广告 如果您使用基于OpenGL的游戏引擎,但使用原生的 Android集成广告,我们建议您仅在游戏暂停或结束时,或者在...

大街小巷
2015/11/20
0
0
android开发中eclipse容易出现的问题

搞过android开发的人应该都有遇到eclipse装怪的时候吧,反正我有几次就想扔砖头砸电脑。下面是我遇到的几个常见的问题: 1:ADB server didn't ACK failed to start daemon ,这个是我遇到过...

我不是咸蛋
2012/08/30
0
1
'ADB server didn't ACK'的解决办法

我自己的做法,就是--进程里关掉“wandoujiaXXXX”---启动命令cmd+(adb kill-server)----重启eclipse。 搞定. (下面的都是看的别人的解决办法。可以不看。) 网上搜了很多种,但是对我来说都不...

张新武
2014/02/10
0
0
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

pbgo: 基于Protobuf的迷你RPC/REST框架

https://www.oschina.net/p/pbgo

chai2010
34分钟前
0
0
rsync工具介绍、常用选项以及通过ssh同步

linux下的文件同步工具 rsync rsync是非常实用的一个同步工具,可以从a机器到b机器传输一个文件,也可以备份数据,系统默认没有这个工具,要使用命令 yum install -y rsync 安装。 rsync的命...

黄昏残影
49分钟前
0
0
OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @哈哈哈哈哈嗝:一定要听——The Pancakes的单曲《咁咁咁》 《咁咁咁》- The Pancakes 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :...

小小编辑
今天
245
4
流利阅读笔记30-20180719待学习

重磅:让人类得老年痴呆的竟是它? Lala 2018-07-19 1.今日导读 去年奥斯卡最佳动画长片《寻梦环游记》里有一句经典台词:“比死亡更可怕的,是遗忘”。在电影中,年迈的曾祖母会重复说一样的...

aibinxiao
今天
3
0
1.16 Linux机器相互登录

Linux机器之间以密码方式互相登录 运行命令#ssh [ip address],标准命令:#ssh [username]@ip, 如果没有写用户名,则默认为系统当前登录的用户 命令#w查看系统负载,可查看到连接到该主机的...

小丑鱼00
今天
0
0
about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部