銀聯支付集成之 ---- 安卓


轉載至:http://blog.csdn.net/wcsandlili/article/details/53467855

 

本人也是新手,寫這篇博客只是希望以后的哥們少走點彎路,網上的教程很多,但是我認為還是不夠明確,可能沒做過的要看半天才能看懂,廢話不多說,直接講講我集成的過程吧!

首先,進入銀聯開放平台,說實話,這個鏈接找的有點坑爹,不太好搜索,直接貼上https://open.unionpay.com/ajweb/help/file/techFile?productId=3

 

進入網站,將官方的demo下載下來,說實話,我感覺看官方的demo有點冗余,直接照着我的步驟來吧:

創建自己的工程,在project目錄下操作,在main文件夾里面創建assert資產文件,將data.bin文件放進去,在創建jniLibs文件夾,將C語言的so庫拷貝進去,這些文件在官方的壓縮包里面都能找到,耐心找一找,實際效果如下圖

別忘了將UPPayAssistEx.jar拷貝到lib庫里面去

權限別忘了添加

 

<!--銀聯權限-->  
   <uses-permission  
       android:name="android.permission.INTERNET" />  
   <uses-permission  
       android:name="android.permission.ACCESS_NETWORK_STATE" />  
   <uses-permission  
       android:name="android.permission.CHANGE_NETWORK_STATE" />  
   <uses-permission  
       android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
   <uses-permission android:name="android.permission.READ_PHONE_STATE"  
       /> <uses-permission  
   android:name="android.permission.ACCESS_WIFI_STATE" />  
  
   <!--<!— 如果選擇智能卡方式(即sdkPro)集成,需要額外定義以下權限 –>-->  
   <uses-permission  
       android:name="android.permission.RECORD_AUDIO" />  
   <uses-permission  
       android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>  
   <uses-permission  
       android:name="org.simalliance.openmobileapi.SMARTCARD" />  

 

 

 

銀聯activity也別忘了注冊

 

<!--銀聯支付app-->  
      <activity android:name="com.unionpay.uppay.PayActivity"  
  
      android:label="@string/app_name"  
  
      android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"  
  
      android:excludeFromRecents="true"  
  
      android:windowSoftInputMode="adjustResize"/>  

 



 

照着上面的寫就行,官方的demo里面也有,可以直接copy就行了

 

"http://101.231.204.84:8091/sim/getacptn"

 

利用上面的網址生成一個tn流水號,我們app'端支付主要就靠這個流水號(注意,在實際的項目中,這個tn流水賬號是后台返給我們的)

 

下面是支付的主要代碼,調用支付的主要代碼就是點擊事件里面的startPayByJar
/*****************************************************************  
     * mMode參數解釋: "00" - 啟動銀聯正式環境 "01" - 連接銀聯測試環境  
     *****************************************************************/  
    private final String mMode = "01";  
    private Button bt;  
    private static final String TN_URL_01 = "http://101.231.204.84:8091/sim/getacptn";  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        initView();  
    }  
  
    private void initView() {  
        bt = (Button) findViewById(R.id.bt);  
        bt.setOnClickListener(this);  
    }  
  
  
    //    回調  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        /*************************************************  
         * 步驟3:處理銀聯手機支付控件返回的支付結果  
         ************************************************/  
        if (data == null) {  
            return;  
        }  
        String msg = "";  
        /*  
         * 支付控件返回字符串:success、fail、cancel 分別代表支付成功,支付失敗,支付取消  
         */  
        String str = data.getExtras().getString("pay_result");  
        if (str.equalsIgnoreCase("success")) {  
            // 支付成功后,extra中如果存在result_data,取出校驗  
            // result_data結構見c)result_data參數說明  
            if (data.hasExtra("result_data")) {  
                String result = data.getExtras().getString("result_data");  
                //                try {  
                //                    JSONObject resultJson = new JSONObject(result);  
                //                    String sign = resultJson.getString("sign");  
                //                    String dataOrg = resultJson.getString("data");  
                //                    // 驗簽證書同后台驗簽證書  
                //                    // 此處的verify,商戶需送去商戶后台做驗簽  
                //                    boolean ret = verify(dataOrg, sign, mMode);  
                //                    if (ret) {  
                //                        // 驗證通過后,顯示支付結果  
                //                        msg = "支付成功!";  
                //                    } else {  
                //                        // 驗證不通過后的處理  
                //                        // 建議通過商戶后台查詢支付結果  
                //               msg = "支付失敗!";  
                //                    }  
                //                } catch (JSONException e) {  
                //                }  
                //            } else {  
                // 未收到簽名信息  
                // 建議通過商戶后台查詢支付結果  
                //               msg = "支付成功!";  
                //            }  
                msg = "支付成功!";  
            } else if (str.equalsIgnoreCase("fail")) {  
                msg = "支付失敗!";  
            } else if (str.equalsIgnoreCase("cancel")) {  
                msg = "用戶取消了支付";  
            }  
  
            Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();  
            System.out.println("支付結果通知"+msg);  
  
            AlertDialog.Builder builder = new AlertDialog.Builder(this);  
            builder.setTitle("支付結果通知");  
            builder.setMessage(msg);  
            builder.setInverseBackgroundForced(true);  
            // builder.setCustomTitle();  
            builder.setNegativeButton("確定", new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    dialog.dismiss();  
                }  
            });  
            builder.create().show();  
        }  
    }  
  
    @Override  
    public void onClick(View v) {  
        /*************************************************  
         * 步驟2:通過銀聯工具類啟動支付插件  
         ************************************************/  
        UPPayAssistEx.startPayByJAR(this, PayActivity.class, null, null,  
                "201612051739317670088", mMode);  
    } 

 

 

 

上面的方法是支付的回調方法,你可以在回調里面編寫自己的邏輯

這只是一個測試的demo,如果在自己的實際項目中,要將上面的mode的01改成00;tn賬號請求后台接口返回給我們,利用tn賬號去實現支付的功能

 

小弟菜鳥一枚,大神看了可能感覺太冗余,寫這篇博客一是為了給自己做個筆記的作用,二是為了幫助和我一樣在開發這條道路上奮力拼搏的兄弟們!如果中間有什么寫的不對的地方歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM