- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Android 应用程序中使用 Google 应用内计费版本 3,我正在基于以下代码测试应用程序的订单模块。
在这种情况下,用户的订单已被 Google Play 退款,但是当我运行 mBilling.initBillingClient()
时, 我发现 purchase.purchaseState == Purchase.PurchaseState.PURCHASED
在 private fun processPurchases
启动。
退款状态为 PURCHASED 的订单似乎已成功,我该如何解决?
FragmentBuy.kt
class FragmentBuy : Fragment() {
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = DataBindingUtil.inflate(
inflater, R.layout.layout_buy, container, false
)
val mBilling=Billing.getInstance(requireActivity(), getString(R.string.skuRegisterApp))
mBilling.initBillingClient()
...
}
}
计费.kt
class Billing private constructor (private val mContext: Context, private val purchaseItem :String)
:PurchasesUpdatedListener, BillingClientStateListener {
private lateinit var playStoreBillingClient: BillingClient
private val mapSkuDetails = mutableMapOf<String,SkuDetails>()
fun initBillingClient() {
playStoreBillingClient = BillingClient
.newBuilder(mContext)
.enablePendingPurchases()
.setListener(this)
.build()
if (!playStoreBillingClient.isReady) {
playStoreBillingClient.startConnection(this) //It will launach override fun onBillingSetupFinished()
}
}
override fun onBillingSetupFinished(billingResult: BillingResult) {
when (billingResult.responseCode) {
BillingClient.BillingResponseCode.OK -> {
queryAndProcessPurchasesAsync()
}
...
}
}
private fun queryAndProcessPurchasesAsync() {
val purchasesResult = HashSet<Purchase>()
var result = playStoreBillingClient.queryPurchases(BillingClient.SkuType.INAPP)
result?.purchasesList?.apply { purchasesResult.addAll(this) }
processPurchases(purchasesResult)
}
private fun processPurchases(purchasesResult: Set<Purchase>): Job {
val validPurchases = HashSet<Purchase>(purchasesResult.size)
purchasesResult.forEach { purchase ->
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
if (purchase.sku.equals(purchaseItem)) {
if (isSignatureValid(purchase)) {
validPurchases.add(purchase)
setIsRegisteredAppAsTrue(mContext) //It will be launched even if the status of the order is refunded.
}
}
}
...
}
acknowledgeNonConsumablePurchasesAsync(validPurchases.toList())
}
private fun acknowledgeNonConsumablePurchasesAsync(nonConsumables: List<Purchase>) {
...
}
override fun onPurchasesUpdated(billingResult: BillingResult, purchases: MutableList<Purchase>?) {
when (billingResult.responseCode) {
BillingClient.BillingResponseCode.OK -> {
purchases?.apply { processPurchases(this.toSet()) }
}
...
}
}
fun purchaseProduct(activity: Activity) {
val skuDetails = mapSkuDetails[purchaseItem]
skuDetails?.let{
val purchaseParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build()
playStoreBillingClient.launchBillingFlow(activity, purchaseParams)
}
}
companion object {
private const val LOG_TAG = "BillingRepository"
private var INSTANCE: Billing? = null
fun getInstance(mContext: Context, purchaseItem: String): Billing =
INSTANCE ?: synchronized(this) {
INSTANCE ?: Billing(mContext, purchaseItem).also { INSTANCE = it }
}
}
}
最佳答案
您还可以在购买时检查 purchase.isAcknowledged() ,这样您就不会将其添加到 validPurchases 中,如果它是缓存问题的话。
关于android - 为什么状态为已退款的订单在 Google 应用内支付系统中显示为已购买?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257164/
我被这个 Java 家庭作业问题困扰: Write a new method, Refund, that simulates the refunding of any remaining credit
我用paypal express完成支付后,我的数据库更新失败了,我该怎么办? 代码如下: $transaction = $this->initPayPalExpress()->complet
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve th
微信小程序或微信支付相关操作支付退款订单查询退款查询支付成功,进行回调退款成功 进行回调用到的方法 支付 ?
我快速浏览了与 Bluesnap webhooks 相关的 IPN 类型和参数 - https://support.bluesnap.com/v2.2.7/docs/ipn-parameter-ref
我正在尝试在测试模式下进行退款 (pilot-payflowpro.paypal.com)(我的货币是英镑,仅供引用) 据我从文档中看到的,我正在正确使用所有内容:https://www.x.com/
我正在尝试用 bash 编写部分退款 Paypal 交易的代码。这是我正在关注的指南 https://developer.paypal.com/docs/classic/api/adaptive-pa
我雇了一个人给我编写了一些代码来取消 Paypal 的 API 中的定期付款,如下所示: function change_subscription_status( $profile_id, $acti
) 我正在尝试在我的应用中实现应用内结算。在 Google Play 开发者控制台中,我声明了一个托管项目。购买此商品效果非常好。但是现在,当我在谷歌钱包商家中心退款或取消购买时,我的应用程序需要很长
我们希望在将 google play 购买退还给用户时进行存储以进行数据分析。 根据文档,用户可以通过 3 种方式申请 Google Play 订阅退款: https://support.google
我用的是paypal native sdk,这里没有退款支付的概念。为此,我们需要 REST API 吗?如果我们使用 REST API,那么我们需要获取事务 ID。我们怎样才能做到这一点? 谢谢,非
我可以使用 RoR 中的 ActiveMerchant 成功地直接向 PaPpal 付款。 如何退款到交易? 最佳答案 汇款将涉及额外的 PayPal 费用。我建议使用 ActiveMerchant
我正在使用 Paypal 的 android sdk V2 开发一个与 Paypal 集成的 android 应用程序。我已成功完成付款交易。但我不知道如何取消交易并使用 Paypal sdk V2
在 Paypal 文档迷宫中,我一直很紧张。我的问题很简单。 是否可以通过具有网络支付标准的 API 调用发起退款? 我知道您可以使用专业版,因为我发现这里散布着各种文档。我还找到了This bit
我正在开发一个集成到 PayPal 的 REST API 中的 PHP 应用程序。我已正确处理事务并将事务 ID 保存到 MySQL 数据库中。我现在正尝试退款,但无法让它停止给出“传入的 JSON
我正在使用 Paypal NVP Refund Api 进行退款 Paypal 交易。一切正常,但当我尝试调用 api 时,它给出了以下响应。 Array ( [TIMESTAMP] => 2
情况: - 用户进行 IAP 并获得一些内容,我们存储用户的设备 ID 以确保他们可以随时访问此内容。 - 用户认为他们不喜欢这些内容,因此他们调用 Apple 并获得退款。 - 用户仍然可以访问
我目前正在研究为 PayPal 退还 web_accept 类型付款的可能性。 我们在我们的网站上接受付款,我想自动退款交易。例如: 我有一个 web_accept 付款:Web Accept Pay
我正在尝试使用 ActiveMerchant gem 进行退款。看完API ,我使用这样的退款方法: response = PaymentGateway.refund(nil,transaction_
我在我的网站上启用了 paypal 自适应支付。当客户从第三方卖家购买任何产品时,卖家会得到大约 90% 的金额,大约 10% 的金额会转移给我。但如果客户想要对该产品进行退款,那么它应该从主要接收方
我是一名优秀的程序员,十分优秀!