def purchase(self, amount, options=None):
        if not options:
            options = {}
        tmp_options = options.copy()
        permissible_options = ["SenderTokenId", "CallerReference",
            "SenderDescription", "CallerDescription", "TransactionTimeoutInMins"
            "TransactionAmount", "OverrideIPNURL", "DescriptorPolicy"]
        tmp_options['TransactionAmount'] = amount
        if 'tokenID' in options:
            tmp_options["SenderTokenId"] = options["tokenID"]
        if 'callerReference' in options:
            tmp_options['CallerReference'] = options["callerReference"]
        for key in options:
            if key not in permissible_options:
                tmp_options.pop(key)
        resp = self.fps_connection.pay(**tmp_options)
        return {"status": resp.PayResult.TransactionStatus, "response": resp.PayResult}
dataset/ETHPy150Open agiliq/merchant/billing/integrations/amazon_fps_integration.py/AmazonFpsIntegration.purchase/original