wordpress+留言本什么程序做网站容易优化
wordpress+留言本,什么程序做网站容易优化,网站建设 盈利,樱桃电视剧西瓜视频在线观看最近有时间#xff0c;特意整理了一下之前使用过的Flutter平台的海外支付#xff0c;附源码及demo可供参考 这篇文章只记录Google支付的详细流程#xff0c;相关Flutter文章链接如下#xff1a;
【原创 附源码】Flutter集成Apple支付详细流程(附源码)
【原创 附源码】Flu…最近有时间特意整理了一下之前使用过的Flutter平台的海外支付附源码及demo可供参考 这篇文章只记录Google支付的详细流程相关Flutter文章链接如下
【原创 附源码】Flutter集成Apple支付详细流程(附源码)
【原创 附源码】Flutter安卓及iOS海外登录--Google登录最详细流程
【原创 附源码】Flutter安卓及iOS海外登录--Tiktok登录最详细流程
【原创 附源码】Flutter安卓及iOS海外登录--Facebook登录最详细流程
【原创 附源码】Flutter安卓及iOS海外登录--Apple登录最详细流程
让我们开始吧
一 google平台配置
首先进入谷歌开发者平台记得科学上网
https://developers.google.com/?hlzh-cn
进入开发者平台之后点击google play创建我们的APP 点击登录管理中心 创建完我们的APP之后就可以开始配置支付的功能。需要注意的是在进行谷歌支付测试的时候需要先提交一个封闭测试版本及以上等级例如公开版本的包然后才可以去创建应用内支付的商品等这个包提交审核通过之后才可以开始进行谷歌支付的测试。
点击创建轨道 点击创建新的发布版本 签名选择Google管理签名然后上传aab格式的release版本的包aab版本的包在这里生成 点开Build选择Generate Signed Bundle/APK 然后选择app bundle 然后一路next最后选择release版本然后finish 然后在输出控制台的build选项卡即可找到刚刚打出来的aab包 然后上传就可以了。
上传完成之后此时就可以配置应用内商品了点击这里进行添加配置 添加完成后记得激活不然即使审核通过之后测试的时候也获取不到该商品
点击这里激活商品 这个时候商品的配置就完成了。
接下来添加测试账户进入封闭测试页面切换到【测试用户选项卡】然后创建测试群组在群组里添加测试人员账户即可 当你的APP审核通过之后这个页面下方的测试人员参与方式便会生效如下所示 就可以将这些链接发给测试人员让他们去安装进行测试购买。
最后修改一下测试政策状态 选中测试群组然后将政策状态改为LICENSED OK配置完成
二 flutter 代码集成
使用到的第三方插件
in_app_purchase: ^3.1.5
插件官网地址https://pub.dev/packages/in_app_purchase
将插件添加至yaml文件然后执行flutter pub get 执行完了记得去IOS和安卓端分别执行pod install 和 gradle sync同步一下第三方插件
然后在项目中新建dart文件命名为BuyEngine.dart
然后将以下代码放入
import dart:async;
import dart:io;import package:in_app_purchase/in_app_purchase.dart;
import package:in_app_purchase_storekit/in_app_purchase_storekit.dart;
import package:in_app_purchase_android/in_app_purchase_android.dart;class BuyEngin{StreamSubscriptionListPurchaseDetails _subscription;InAppPurchase _inAppPurchase;ListProductDetails _products; //内购的商品对象集合//初始化购买组件void initializeInAppPurchase() {// 初始化in_app_purchase插件_inAppPurchase InAppPurchase.instance;//监听购买的事件final StreamListPurchaseDetails purchaseUpdated _inAppPurchase.purchaseStream;_subscription purchaseUpdated.listen((purchaseDetailsList) {_listenToPurchaseUpdated(purchaseDetailsList);}, onDone: () {_subscription.cancel();}, onError: (error) {error.printError();print(购买失败了);});}void resumePurchase(){_inAppPurchase.restorePurchases();}/// 加载全部的商品void buyProduct(String productId) async {print(请求商品id productId);ListString _outProducts [productId];final bool available await _inAppPurchase.isAvailable();if (!available) {// ToastUtil.showToast(无法连接到商店);print(无法连接到商店);return;}//开始购买// ToastUtil.showToast(连接成功-开始查询全部商品);print(连接成功-开始查询全部商品);ListString _kIds _outProducts;final ProductDetailsResponse response await _inAppPurchase.queryProductDetails(_kIds.toSet());print(商品获取结果 response.productDetails.toString());if (response.notFoundIDs.isNotEmpty) {// ToastUtil.showToast(无法找到指定的商品);print(无法找到指定的商品);// ToastUtil.showToast(无法找到指定的商品 数量 response.productDetails.length.toString());return;}// 处理查询到的商品列表ListProductDetails products response.productDetails;print(products products.length.toString());if (products.isNotEmpty) {//赋值内购商品集合_products products;}print(全部商品加载完成了可以启动购买了,总共商品数量为${products.length});//先恢复可重复购买// await _inAppPurchase. ();startPurchase(productId);}// 调用此函数以启动购买过程void startPurchase(String productId) async {print(购买的商品id为 productId);if (_products ! null _products.isNotEmpty) {// ToastUtil.showToast(准备开始启动购买流程);try {ProductDetails productDetails _getProduct(productId);print(一切正常开始购买,信息如下title: ${productDetails.title} desc:${productDetails.description} price:${productDetails.price} currencyCode:${productDetails.currencyCode} currencySymbol:${productDetails.currencySymbol});_inAppPurchase.buyConsumable(purchaseParam: PurchaseParam(productDetails: productDetails));} catch (e) {e.printError();print(购买失败了);}} else {print(当前没有商品无法调用购买逻辑);}}// 根据产品ID获取产品信息ProductDetails _getProduct(String productId) {return _products.firstWhere((product) product.id productId);}/// 内购的购买更新监听void _listenToPurchaseUpdated(ListPurchaseDetails purchaseDetailsList) async {for (PurchaseDetails purchase in purchaseDetailsList) {if (purchase.status PurchaseStatus.pending) {// 等待支付完成_handlePending();} else if (purchase.status PurchaseStatus.canceled) {// 取消支付_handleCancel(purchase);} else if (purchase.status PurchaseStatus.error) {// 购买失败_handleError(purchase.error);} else if (purchase.status PurchaseStatus.purchased || purchase.status PurchaseStatus.restored) {// ToastUtil.showToast(DataConfig.getShowName(Pay_Success_Tip));//完成购买, 到服务器验证if (Platform.isAndroid) {var googleDetail purchase as GooglePlayPurchaseDetails;checkAndroidPayInfo(googleDetail);} else if (Platform.isIOS) {var appstoreDetail purchase as AppStorePurchaseDetails;checkApplePayInfo(appstoreDetail);}}}}/// 购买失败void _handleError(IAPError iapError) {// ToastUtil.showToast(${DataConfig.getShowName(Purchase_Failed)}${iapError?.code} message${iapError?.message});}/// 等待支付void _handlePending() {print(等待支付);}/// 取消支付void _handleCancel(PurchaseDetails purchase) {_inAppPurchase.completePurchase(purchase);}/// Android支付成功的校验void checkAndroidPayInfo(GooglePlayPurchaseDetails googleDetail) async {_inAppPurchase.completePurchase(googleDetail);print(安卓支付交易ID为 googleDetail.purchaseID);print(安卓支付验证收据为 googleDetail.verificationData.serverVerificationData);}/// Apple支付成功的校验void checkApplePayInfo(AppStorePurchaseDetails appstoreDetail) async {_inAppPurchase.completePurchase(appstoreDetail);print(Apple支付交易ID为 appstoreDetail.purchaseID);print(Apple支付验证收据为 appstoreDetail.verificationData.serverVerificationData);}overridevoid onClose() {if (Platform.isIOS) {final InAppPurchaseStoreKitPlatformAddition iosPlatformAddition _inAppPurchase.getPlatformAdditionInAppPurchaseStoreKitPlatformAddition();iosPlatformAddition.setDelegate(null);}_subscription.cancel();}}
至此集成完毕开始测试谷歌支付
三 支付测试
在调用谷歌支付的地方提前初始化购买插件
BuyEngin _buyEngin BuyEngin();
_buyEngin.initializeInAppPurchase();
然后调用即可
_buyEngin.buyProduct(应用内商品ID);应用内商品ID就是你在google开发者中心配置的应用内购买商品的product ID
如果一切正常则会正常唤醒谷歌支付记得是在科学上网的环境下测试 支付完成后可以看到可以正常获取到交易的ID和交易的验证收据为了避免被第三方恶意刷购买接口来进行非法购买建议将该收据上传后端服务器进行验证验证通过之后再去更新用户的购买信息。 Ok ,集成完毕功德1 源码地址 GitHub - TheRuningAnt/FGTALogin: 使用Flutter 去集成海外平台第三方登录包含Google、Tiktok、Facebook、Apple登录 注直接调用该demo的谷歌支付无法支付成功因为该demo使用的安卓包名是测试包名并未正式上线但是功能是经过使用真实上线的包名支付验证过的如上截图所示。如需使用该demo进行谷歌支付测试可将安卓包名替换为你自己的审核通过的包名然后进行测试
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87723.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!