title: in-app-purchase BILLING_RESPONSE_RESULT_DEVELOPER_ERROR, Flutter
body: <p>Purchase action for in-app payment flow returns the error:</p>
  <blockquote>
  <p>BILLING_RESPONSE_RESULT_DEVELOPER_ERROR</p>
  </blockquote>
  <p>with in_app_purchase package in Flutter.</p>
  <p>I can list products and subscriptions in debug mode.<br />
  I created test user.<br />
  I upload the apk to closed testing channel with release build.<br />
  Test user can normally starts purchase flow.<br />
  In test purchase flow test credit card is selectable as always-accept option.</p>
  <p>When I made a purchase (start a subscription), Android dialog closes &quot;successfully&quot; and purchase has count on the test user's subscription.</p>
  <p>However when app turns back to Flutter; get the error code from purchaseUpdatedStream inside a PurchaseDetails object. So I can not start the &quot;consume&quot; process. By the way I can not purchase the item again, so It acting like consumed without any consume operation processed.</p>
  <p>The error: BILLING_RESPONSE_RESULT_DEVELOPER_ERROR 5.</p>
  <p>What could be cause this?</p>
  <p><strong>Again</strong>: User successfully starts the subscription. It can be seen in Play Store page for the Application.</p>
  <p><strong>CODE UPDATE</strong></p>
  <p>I tried with one time item not a subscription. The result remains same I think.</p>
  <p>Test Environment:<br />
  Package: in_app_purchase: 0.3.0+3,<br />
  Debug build - Release build,<br />
  Real product which is created from Play Console,<br />
  Test user.</p>
  <p>Purchase update listener:</p>
  <pre class="lang-dart prettyprint-override"><code>InAppPurchaseConnection.instance.purchaseUpdatedStream;
      _subscription = purchaseUpdates.listen((purchases) {
        _handlePurchaseUpdates(purchases);
      });
  </code></pre>
  <p>Purchase handler:</p>
  <pre><code>Future&lt;void&gt; _handlePurchaseUpdates(
      List&lt;PurchaseDetails&gt; purchaseDetailsList) async {
    purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async {
      switch (purchaseDetails.status) {
        case PurchaseStatus.purchased:
          bool valid = await _verifyPurchase(purchaseDetails);
          if (valid) {
            InAppPurchaseConnection.instance
                .consumePurchase(purchaseDetails)
                .then((BillingResultWrapper resultWrapper) async {
              /*
  
                I get the error here.
                purchaseDetails.status equals &quot;PurchaseStatus.purchased&quot; but
                After consumePurchase method &quot;Item is not owned by user&quot; 
                comes with resultWrapper object.
                
              */
              await deliverProduct(purchaseDetails);
            }).catchError((e) {});
          } else {}
          break;
        case PurchaseStatus.pending:
          print(&quot;Purchase pending...&quot;);
          break;
        case PurchaseStatus.error:
          break;
        default:
      }
    });
  }
  </code></pre>