0
点赞
收藏
分享

微信扫一扫

大叔也说Xamarin~Android篇~支付宝SDK的集成

Mezereon 2022-08-26 阅读 76

首先做为支付宝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

大叔也说Xamarin~Android篇~支付宝SDK的集成_bundle

二 当用户手机或者设置上没有安装支付宝时,我们应该让它跳到支付宝的H5页面进行支付,这个配置我们可以在AndroidManifest.xml里进行设置,将下面代码添加到application节点下

"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"目录下,看一下截图

大叔也说Xamarin~Android篇~支付宝SDK的集成_支付宝_02

三 下面的android Sdk事实上我们需要的是jar文件,我们新建一个“android绑定库项目“,然后把jar文件放到jars文件夹里,把它的生成方式改成“EmbeddedJar”,然后在目标的android应用程序里引用它即可

大叔也说Xamarin~Android篇~支付宝SDK的集成_支付宝_03

四 在我们在主程序里,添加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就被调用出来了,如图

大叔也说Xamarin~Android篇~支付宝SDK的集成_android_04

当你的设置上没有支付宝时,会自动跳到支付宝的H5页面,让你进行wap版的支付。

作者:仓储大叔,张占岭,
荣誉:微软MVP


举报

相关推荐

Android 支付宝支付SDK接入

0 条评论