Android遊戲集成豌豆莢支付

 在使用豌豆莢支付以前,先要下載豌豆莢SDK並閱讀一下豌豆莢文檔 SDK和文檔
java

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

具體的實現:
服務器

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

    PayConfig.init(context, appkey_id, secretkey);// appkey_id,secret是在豌豆莢平臺由開發者申請的
  2. 讓用戶登陸豌豆莢平臺app

      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. 支付:ide

    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

在豌豆莢開發者後臺上傳應用時,須要配置一個回調地址,這個回調地址就是豌豆莢用來通知遊戲服務器支付成功的,在支付成功以後豌豆莢服務器會以post方式去請求這個url測試

post中所帶參數有如下三種類型:ui

具體服務器端實現(java,服務器參考代碼也在sdk文檔中):url

  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元的銀行卡或信用卡支付,這兩種支付都成功以後,應該就差很少了。

相關文章
相關標籤/搜索