編輯:關於android開發
首先做為支付寶SDK它提供了多種平台,網頁版,wap版,IOS版,android版等等,今天主要說一下在xamarin裡使用android平台的sdk的方法,在網上介紹這塊的文章不多,大叔本著貢獻的精神繼續撰寫程序人生!希望各位繼續支持大叔!
一 首先下面支付寶android的sdk,也就是手機端的sdk,一般也叫快捷支付
https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
裡面有各種平台的SDK和Demo
二 當用戶手機或者設置上沒有安裝支付寶時,我們應該讓它跳到支付寶的H5頁面進行支付,這個配置我們可以在AndroidManifest.xml裡進行設置,將下面代碼添加到application節點下
<application android:label="Tsingda.DataCenter.AndroidNative" android:icon="@drawable/Icon">
<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>
</application>
注意,在vs裡,這個文件在“項目”的“Properties"目錄下,看一下截圖
三 下面的android Sdk事實上我們需要的是jar文件,我們新建一個“android綁定庫項目“,然後把jar文件放到jars文件夾裡,把它的生成方式改成“EmbeddedJar”,然後在目標的android應用程序裡引用它即可
四 在我們在主程序裡,添加android alipay sdk的demo代碼,當然我們也可以把它封裝成類庫,以後重用更方便
public class RechargeActivity : Activity
{
public static string PARTNER = "合作商戶ID";
public static string SELLER = "商戶收款的支付寶賬號";
string RSA_PRIVATE = "商戶私密";
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Recharge);
Toast.MakeText(this, Intent.GetStringExtra("TaskID"), ToastLength.Short).Show();
var btn = FindViewById<Button>(Resource.Id.payBtn);
btn.Click += btn_Click;
}
void Logger_Info(string msg)
{
using (System.IO.StreamWriter srFile = new System.IO.StreamWriter("/sdcard/zzl.txt", true))
{
srFile.WriteLine(string.Format("{0}{1}{2}"
, DateTime.Now.ToString().PadRight(20)
, ("[ThreadID:" + Thread.CurrentThread.ManagedThreadId.ToString() + "]").PadRight(14)
, msg));
srFile.Close();
srFile.Dispose();
}
}
void btn_Click(object sender, EventArgs e)
{
try
{
System.Threading.Thread the = new System.Threading.Thread(Pay);
the.Start();
}
catch (Exception ex)
{
Logger_Info("1" + ex.Message);
}
}
private void Pay()
{
try
{
var con = getOrderInfo("test", "testbody");
var sign = SignatureUtils.Sign(con, RSA_PRIVATE);
sign = URLEncoder.Encode(sign, "utf-8");
con += "&sign=\"" + sign + "\"&" + MySignType;
Com.Alipay.Sdk.App.PayTask pa = new Com.Alipay.Sdk.App.PayTask(this);
var result = pa.Pay(con, false);
Logger_Info("支付寶result:" + result);
}
catch (Exception ex)
{
Logger_Info("2" + ex.Message + ex.StackTrace);
}
}
#region 組合
public String getOrderInfo(String subject, String body)
{
// 簽約合作者身份ID
String orderInfo = "partner=" + "\"" + PARTNER + "\"";
// 簽約賣家支付寶賬號
orderInfo += "&seller_id=" + "\"" + SELLER + "\"";
// 商戶網站唯一訂單號
orderInfo += "&out_trade_no=" + "\"DJ" + DateTime.Now.ToString("yyyyMMddhhmmss") + "\"";
// 商品名稱
orderInfo += "&subject=" + "\"" + subject + "\"";
// 商品詳情
orderInfo += "&body=" + "\"" + body + "\"";
// 商品金額
orderInfo += "&total_fee=" + "\"" + 1 + "\"";
// 服務器異步通知頁面路徑
orderInfo += "¬ify_url=" + "\"" + "http://111.203.248.34:89/Order/AlipayNotify"
+ "\"";
// 服務接口名稱, 固定值
orderInfo += "&payment_type=\"1\"";
// 參數編碼, 固定值
orderInfo += "&_input_charset=\"utf-8\"";
// 設置未付款交易的超時時間
// 默認30分鐘,一旦超時,該筆交易就會自動被關閉。
// 取值范圍:1m~15d。
// m-分鐘,h-小時,d-天,1c-當天(無論交易何時創建,都在0點關閉)。
// 該參數數值不接受小數點,如1.5h,可轉換為90m。
orderInfo += "&it_b_pay=\"30m\"";
// extern_token為經過快登授權獲取到的alipay_open_id,帶上此參數用戶將使用授權的賬戶進行支付
// orderInfo += "&extern_token=" + "\"" + extern_token + "\"";
// 支付寶處理完請求後,當前頁面跳轉到商戶指定頁面的路徑,可空
orderInfo += "&return_url=\"http://111.203.248.34:89/Order/AlipayNotify\"";
// 調用銀行卡支付,需配置此參數,參與簽名, 固定值 (需要簽約《無線銀行卡快捷支付》才能使用)
// orderInfo += "&paymethod=\"expressGateway\"";
return orderInfo;
}
public String MySignType
{
get
{
return "sign_type=\"RSA\"";
}
}
#endregion
}
最後運行程序,在支付時,你的支付寶APP就被調用出來了,如圖
當你的設置上沒有支付寶時,會自動跳到支付寶的H5頁面,讓你進行wap版的支付。
android——從零開始,android從零開始
android——從零開始,android從零開始 一、JDK(不用安裝)1.下載適合的jdk2.配置環境變量 添加一系統邊=變量 &
我的Android進階之旅------)android中一些特殊字符(如:←↑→↓等箭頭符號)的Unicode碼值
我的Android進階之旅------)android中一些特殊字符(如:←↑→↓等箭頭符號)的Unicode碼值 在項目中,有時候在一些控件(如Button、Text
Redhat下puppet集中配置管理
Redhat下puppet集中配置管理一 puppet簡介puppet 是一個配置管理工具, 典型的, puppet 是一個 C/S 結構, 當然,這裡的 C 可以有很多
Android應用開發編譯框架流程與IDE及Gradle概要
Android應用開發編譯框架流程與IDE及Gradle概要 1 背景 建議閱讀本文之前先閱讀《Android Studio入門到精通》和《Groovy腳本基礎全攻略》及