編輯:關於Android編程
支付寶的快捷支付Android版業務流程比較麻煩,出現的意外情況比較多.在此,簡單說下開發流程以及出現錯誤的解決方案;
1.注冊支付業務.這裡不在贅述.建立數據安全傳輸所需要的私鑰公鑰,這裡采用的是RSA算法:
打開開發包找到如下路徑,點擊openssl.exe打開dos操作界面:
輸入:
genrsa -out rsa_private_key.pem 1024
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+vavJ+rPJ1Nq4w8S/wrzPwsn6s8k8c3Ryb25nPnJzYV9wcml2YXRlX2tleS5wZW08L3N0cm9uZz4gus08c3Ryb25nPnJzYV9wdWJsaWNfa2V5LnBlbTwvc3Ryb25nPsG9uPbOxLz+LjwvcD4KPHA+tPK/qtanuLaxprXEvefD5rXHwr0gyLu689Ta06bTw8Sjv+nA78PmsNFyc2FfcHVibGljX2tleS5wZW3W0LXEyv2+3crkyOu1vbmr1L/Eo7/pwO8sPC9wPgo8cD4oudjT2rmr1L/D3NS/tcTWqsq2ss6/vMeww+a3orHttcS147v3tPK/qsG0vdMpOzwvcD4KPHA+yOe4w87EvP7Tw87Esb7OxLW1tPK/qs6qPC9wPgo8cD4tLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLTxicj4KeHh4eHh4eHh4eHh4eHh4eHh4PC9wPgo8cD54eHh4eHh4eHh4eHh4eHh4eHg8YnI+Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLTxicj4KPC9wPgo8cD7U8s7Sw8fSqrvxyKG1xNa7ysctLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLdPrLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0t1tC85LXExNrI3SyyorDRy/vDx9f3zqrSu7j219a3+7SuzOG9u7W9zfjVvsjnz8LOu9bDtcS12Le9yc/IpTo8L3A+CjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140718/20140718094558112.jpg" width="400" height="350" alt="\">
2.新建一個項目,設置android環境:
1)AndroidManifest.xml配置如下:
2)配置lib包:
>將alipay.jar放到lib目錄下(照道理他會自動生成lib文件,為了保險,選擇右鍵BuildPath>..導入);
>將alipay_msp.apk放到asseets目錄下,該包的作用是在沒移動支付應用的情況下自動提供安裝應用,如果不包含本包 將自動打開對應的版支付界面
>導入alipay_lib工程作為我們工程的資源工程,該工程必須跟我們的工程在同一層級目錄下,並作為android項目導入
點擊我們的應用,右鍵properties屬性,選擇如下圖:點擊add將lib項目導進去;
此時還有問題,因為android項目的原因,所以我們要把導入的資源全部頂置,不然系統有可能報資源找不到的原因;
3)代碼配置;創建key配置
public final class Keys { //合作身份者id,以2088開頭的16位純數字 public static final String DEFAULT_PARTNER = "APPID"; //收款支付寶賬號 public static final String DEFAULT_SELLER = "[email protected]"; //商戶私鑰,自助生成 public static final String PRIVATE = ""; public static final String PUBLIC = ""; }從Demo中提取Base64.java Result.java Rsa.java到你的項目中
查找所有KeyFactory keyf = KeyFactory.getInstance("RSA");代碼修改為
KeyFactory keyf = KeyFactory.getInstance("RSA","BC");
調用代碼如參考如下:
public class MainActivity extends Activity { Handler mHandler=new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0x123: System.out.println(msg.obj); Toast.makeText(MainActivity.this,msg.obj+"", Toast.LENGTH_SHORT).show(); break; default: break; } }; }; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String info = getNewOrderInfo(); String sign = Rsa.sign(info, Keys.PRIVATE); sign = URLEncoder.encode(sign); info += "&sign=\"" + sign + "\"&" + getSignType(); final String orderInfo = info; new Thread() { public void run() { AliPay alipay = new AliPay(MainActivity.this, mHandler); String result = alipay.pay(orderInfo); Message msg = new Message(); msg.what = 0x123; msg.obj = result; mHandler.sendMessage(msg); } }.start(); } private String getNewOrderInfo() { StringBuilder sb = new StringBuilder(); sb.append("partner=\""); sb.append(Keys.DEFAULT_PARTNER); sb.append("\"&out_trade_no=\""); sb.append("12312313124451"); sb.append("\"&subject=\""); sb.append("商品名.."); sb.append("\"&body=\""); sb.append("商品描述.."); sb.append("\"&total_fee=\""); sb.append("0.01"); sb.append("\"¬ify_url=\""); // 網址需要做URL編碼 sb.append(URLEncoder.encode("http://notify.java.jpxx.org/index.jsp")); sb.append("\"&service=\"mobile.securitypay.pay"); sb.append("\"&_input_charset=\"UTF-8"); sb.append("\"&return_url=\""); sb.append(URLEncoder.encode("http://m.alipay.com")); sb.append("\"&payment_type=\"1"); sb.append("\"&seller_id=\""); sb.append(Keys.DEFAULT_SELLER); // 如果show_url值為空,可不傳 // sb.append("\"&show_url=\""); sb.append("\"&it_b_pay=\"1m"); sb.append("\""); return new String(sb); } private String getSignType() { return "sign_type=\"RSA\""; } }發送的商品參數與返回的商品參數根據自己的業務修改;
Tip:9000錯誤--報系統錯誤的 自己檢查你的公鑰 密鑰在網站項目配置對不,大小寫要注意;以下有出現過的錯誤及解決方案請補充.
此開源框架官網地址:https://github.com/astuetz/PagerSlidingTabStrip可以理解為配合ViewPager使用的交互式頁面指示器控
AndroidStudio獲取MD5,SHA1的方法:第一步、打開Android Studio的Tools->Open Terminal...(新版本已經調整了位置
<?xml version=. encoding=UTF-?><RelativeLayout xmlns:android=http://
在Android的應用開發中,我們會用到各種代碼調試;其實在Android的開發之後,我們可能會碰到一些隨機的問題,如cpu過高,內存洩露等,我們無法簡單的進行代碼調試,