关闭

Windows AdEasyGo支付SDK接入

438人阅读 评论(1) 收藏 举报
分类:

AdEasyGo支付SDK是集成了多种支付SDK,最开始是没有C++/CX版的,那边的哥子再3个项目中抽时间移植过来的,虽然官网给了文档,但是有些是有问题的。

1、下载地址

http://www.adeasygo.com/download?sdk_type=2&id=10

下载好后解压放到自己工程需要的地方。

2、加入到工程

在VS2013中并没有引用这个项,只有原生的C#和VS2015才有。

选中自己的工程,右键->添加->引用,选择xxxxPaySDK.winmd(这个是Windows元数据,类似DLL)。

3、初始化SDK

设置Appkey和AppId

在使用所有的功能之前,你需要设置应用程序的Appkey和AppId。首先你需要在Adeasygo的管理后台添加应用来获取Appkey和AppId。

using namespace Adeasygo::PaySDKWP81;

在应用程序初始化模块中调用

SDKManager::SetKey("xxxx","yyyy");设置唯一标示符(xxxx为你的应用appkey,yyyy是AppId)

SDKManager::Init();

4、注册事件

HardwareButtons::BackPressed += ref new EventHandler<BackPressedEventArgs ^>(this, &MainPage::HardwareButtons_BackPressed);
SDKManager::PayDone += ref new EventHandler<PayDoneEventArgs ^>(this, &MainPage::PayDone);
SDKManager::ToMarketPurchase += ref new EventHandler <Adeasygo::PaySDKWP81::Model::MsPayEventArgs ^>(this, &MainPage::MsPurchas);
这里用到了BackPressed是手机的返回键,是因为在选择支付方式之前SDK是没有注册PayDone事件的,需要我们自己处理来关闭支付页面。在显示支付界面的时候需要标记,以免在没有支付界面的时候处理事件这里的事件,

5、获取产品列表和支付

SDKManager中有个GetGoods方法,返回值是一个IAsyncOperation的异步操作,应该用C++/CX的异步操作,而不是官网上的直接获取,正确的方法是

auto goodsOp = SDKManager::GetGoods();
	auto goodsTask = create_task(goodsOp);
	goodsTask.then([this](GoodsList^ goodslist)
	{
		for each(auto goods in goodslist->goods_list)
		{			
			if (goods->id::get() == product_id)//此处的product_id是需要支付的产品id
			{
				SDKManager::Pay(goods->id, "1", goods->price, "$");	
			}
		}
	});

6、支付后处理

在支付成功和按返回键都会出发PayDone事件,需要在PayDone事件中关闭窗口,并进行订单验证。

7、订单验证

<span style="font-size:18px;">auto PayResultOp = SDKManager::GetUnSyncTrade();
auto PayResultTask = create_task(PayResultOp);
PayResultTask.then([=](TradeResultList^ resultList)
{
	auto storeObj = StoreObject::getInstance();
	int PAYED_SUCCESS = 1;
	int PAYED_FAILED = 2;
	int PAYED_PARAM_ERROR = 3;
	int msg_code = resultList->code::get();
	if (msg_code == PAYED_SUCCESS){
	<span style="white-space: pre;">	</span>for each(auto result in resultList->traderesult)
		{
			String^ goods_id_rt = result->out_goods_id;
			String^ uid_rt = SDKManager::DeviceUniqueId;
			String^ trade_no_rt = result->trade_no;
		}
	}
	else if (msg_code == PAYED_FAILED) {			
	}
	else if (msg_code == PAYED_PARAM_ERROR){
	}
});</span>
这里需要把这三个数据发到服务,服务器进行订单验证,详细看官网

http://www.adeasygo.com/document/index?id=78&c=27

7、微软支付需要单独接入


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:87818次
    • 积分:1164
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:56篇
    • 译文:0篇
    • 评论:6条
    最新评论