我需要一种方法来分享我的应用程序,以便人们可以使用优惠券代码或促销代码或结帐代码免费下载.我想将代码发布到电路板上,并在一段时间后使其无效.我的应用使用许可和应用内结算,因此发送APK可能不合适.我看到的最后一个问题是6个月大,所以我不知道是否有更新的解决方案.
我有一个应用程序发布到alpha通道,有一个应用程序内(非)托管项目,成本为1美元.
当我正常购买时,即使用信用卡/借记卡Google返回正确的开发者有效负载字符串,但如果我选择"兑换"促销代码并输入所述代码,Google会返回一个空的开发人员有效负载字符串,因此身份验证失败'onIabPurchaseFinished()'.
我应该提一下,只有当我选择从应用程序的购买流程中兑换代码时才会出现这种情况,如果我先打开Play商店,兑换代码,然后返回并打开应用程序,一切都会完美无缺.
这是谷歌的一个错误吗?
编辑:Play商店的东西是预期的,因为它无法知道您的有效负载,购买完成后无需检查.
发布应用内购买的促销代码似乎会阻止应用(再次)执行远程服务器购买验证!
当促销代码用于应用内购买(PURCHASES_UPDATED广播)时,它将完全绕过购买流程,因此应用程序无法提供用于远程验证的"developerPayload".
稍后,当应用程序调用getPurchases()来获取/验证所有者产品时,促销购买的购买数据"developerPayload"当然不会包含,但"orderId"对于使用Google Play Developer API进行远程验证也不会有用.
应用程序如何验证使用促销代码进行的应用内购买?
允许用户通过Google Play商店应用/网站兑换促销代码,从而绕过购买流程,这似乎是一项无法实现的重大疏忽.
问题报告:
类似帖子:
我的应用内置了应用内购买(我按照本教程),购买功能有效.但是,当我在App Store中为其中一个应用内购买产品兑换促销代码时,我的应用不响应它.即使App Store说该产品已成功兑换,我的应用程序也没有回复.
如果您的应用可以处理促销代码,是否有任何人在应用内购买测试?你介意分享解决方案吗?
我从这开始:
override func viewDidLoad() {
NotificationCenter.default.addObserver(self,
selector: #selector(applicationDidBecomeActive(notification:)),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil
)
}
func applicationDidBecomeActive(notification: NSNotification){
let store = IAPHealper()
//what needs to be put here?
}
extension IAPHelper: SKPaymentTransactionObserver {
public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch (transaction.transactionState) {
case .purchased:
completeTransaction(transaction)
break
case .failed:
failedTransaction(transaction)
break
case .restored:
restoreTransaction(transaction)
break
case .deferred:
break
case .purchasing:
break
}
}
}
fileprivate func completeTransaction(_ transaction: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个免费的 Flutter 应用程序(Android 和 iOS),它使用官方 Flutter 应用内购买插件(最新版本 2.0.1)提供优质内容(应用内订阅)。
我们希望使用Google Play 促销代码向某些用户免费(不收取额外费用)提供优质内容。
A) Google play:当我们从 Google Play 兑换代码时,代码将被接受并显示消息,说明产品已应用。然而:
B) 从应用程序:我认为官方 Flutter 应用内购买插件不支持此功能。插件文档仅提及 Apple 商店促销代码。此外,当我们按下按钮购买产品时,Google 应用内购买对话框不包含任何使用促销代码的选项。不,我没有使用许可证测试(测试卡),而是我真正的私人信用卡。
我感觉自己好卡!!!任何帮助深表感谢!我需要在下周开始一场促销活动,以获取尽可能多的用户反馈(以申请资金)。
- - - -更新 - - - - - - - …
据我了解,促销代码在生成后4周到期.每个上传的版本也会获得50个代码.
但是,如果您生成促销代码,例如应用版本1.0,然后将新的二进制/版本(例如应用版本1.1)上传到iTunesConnect并提供更多促销代码,会发生什么?
当新版本准备就绪时,其他促销代码是否会立即过期,或者在4周过去之前它们是否仍然有效?此外,他们是否能够下载1.1版而不是1.0版(生成它们)?
截至今年5月左右,搜索谷歌搜索"应用程序购买促销代码中的ios",产生了大量报道相同内容的新闻网站 - 苹果公司似乎正在努力允许使用促销代码来测试应用内购买,如屏幕截图所示来自EA游戏.
我的问题是; 有人知道怎么做吗?我登录到新的iTunesConnect界面但找不到任何链接,Apple文档中没有任何内容出现在我能找到的内容中.
理想情况下,我希望为每月订阅创建一个代码,但它们可能只允许用于消耗品.由于缺乏有关IAP促销代码的实际信息,我的猜测是该功能尚未正式提供,并且Apple邀请EA游戏进行测试.
所以这是场景:
为了尝试这个,我使用促销代码从App Store下载了一个"预发布"版本,但是当我尝试购买解锁版本时,它不再像在沙盒环境中那样找到产品并且我的"交易错误" "会出现警报视图,说明应用内购买失败.
我的问题是:在应用程序在App Store上线之前,应用内购买是否不可用(在我通过促销代码提前下载的情况下)?例如,当我设置星期五的可用日期并且应用程序最终处于狂野状态时,应用内购买是否会显示并允许用户购买它,假设它在沙箱中工作?
感谢您的任何见解!非常感激.
我想检查产品是否有促销活动,然后将促销标签贴在类别列表页面上的该产品上。但我不知道如何循环遍历所有购物车规则并检索与每个规则关联的产品/类别。
编辑
谢谢 Seanbreeden,但我无法从 中提取 sku $conditions。var_dump($conditions);显示这个:
{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}a:7:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:7:{s:4:"type";s:42:"salesrule/rule_condition_product_subselect";s:9:"attribute";s:3:"qty";s:8:"operator";s:2:">=";s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_product";s:9:"attribute";s:12:"category_ids";s:8:"operator";s:2:"==";s:5:"value";s:2:"23";s:18:"is_value_processed";b:0;}}}}}a:7:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:2:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_address";s:9:"attribute";s:13:"base_subtotal";s:8:"operator";s:2:">=";s:5:"value";s:2:"45";s:18:"is_value_processed";b:0;}i:1;a:7:{s:4:"type";s:42:"salesrule/rule_condition_product_subselect";s:9:"attribute";s:3:"qty";s:8:"operator";s:2:">=";s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_product";s:9:"attribute";s:3:"sku";s:8:"operator";s:2:"==";s:5:"value";s:46:"test-config, BLFA0968C-BK001, BLFA0968C-CR033X";s:18:"is_value_processed";b:0;}}}}}a:6:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}a:6:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}a:7:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:7:{s:4:"type";s:42:"salesrule/rule_condition_product_subselect";s:9:"attribute";s:3:"qty";s:8:"operator";s:2:">=";s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_product";s:9:"attribute";s:3:"sku";s:8:"operator";s:2:"==";s:5:"value";s:16:"BLFA0968C-CR033X";s:18:"is_value_processed";b:0;}}}}}
Run Code Online (Sandbox Code Playgroud)
但是当我循环 $conditions 时
$rules = Mage::getResourceModel('salesrule/rule_collection')->load();
foreach ($rules as $rule) {
$conditions = $rule->getConditionsSerialized();
foreach ($conditions as $condition) {
var_dump($condition);
}
}
Run Code Online (Sandbox Code Playgroud)
它没有显示任何内容,所以不知道如何在这里提取 sku。
EDIT2 正如 Alaxandre 所建议的,我没有使用非序列化方法。我现在这样做:
$rules = Mage::getResourceModel('salesrule/rule_collection')->load();
foreach ($rules as $rule) {
if ($rule->getIsActive()) {
//print_r($rule->getData());
$rule = Mage::getModel('salesrule/rule')->load($rule->getId());
$conditions = $rule->getConditions();
$conditions = $rule->getConditions()->asArray();
foreach( $conditions['conditions'] as $_conditions ):
foreach( $_conditions['conditions'] as $_condition ):
$string = explode(',', $_condition['value']);
for ($i=0; $i<count($string); $i++) …Run Code Online (Sandbox Code Playgroud) 我最近在我的应用中实现了应用内订阅。现在我正在为订阅添加促销代码。拥有促销代码的人可以试用 15 天,之后将被收取费用。
https://developer.android.com/google/play/billing/billing_promo
此处描述的我们可以通过为用户提供免费试用期来促销订阅。我在游戏控制台中创建了促销活动。但是当我购买订阅时,我无法添加兑换代码或促销代码(我的应用是否需要投入生产,或者我也可以在 alpha 轨道中进行测试)。
请指导我。
promotion-code in-app-subscription flutter flutter-plugin flutter-in-app-purchase
promotion-code ×10
android ×3
google-play ×3
flutter ×2
ios ×2
iphone ×2
app-store ×1
magento ×1
sandbox ×1
swift3 ×1